2주차 포너블 스터디는 구글 미팅으로 진행되었다.
C언어의 기본적인 문법을 설명해주시고 어셈블리어라는 언어를 소개해주셨다.
어셈블리어는 기계어와 1대1로 대응되는 프로그래밍 언어이며 intel 형식의 문법을 기준으로 배울 예정이다!
어셈블리어는 [명령어][인자1][인자2] 의 형식이다.
어셈블리어는 레지스터를 사용하는데, 레지스터는 cpu 내에 있는 저장공간이고 접근 속도가 메모리보다 훨씬 빠르다.
mov : 데이터를 복사하는 명령어 ( 레지스터를 통해서 복사한다. )
ex) mov[인자1][인자2] --> 인자2를 인자1에 복사한다.
call : 함수를 호출하는 명령어
ex) call[함수]
jmp : 특정 주소로 이동하는 명령어. je, jne, jle 등의 종류가 있다.
ex) jmp[주소]
BOF(버퍼 오버플로우)
버퍼 오버플로우의 취약점은 메모리공간의 제약이다.
발생하는 위치에 따라 스택 버퍼 오버플로우와 힙 오버플로우로 나눌 수 있다.
https://dreamhack.io/learn/14#1
로그인 | Dreamhack
로그인 자동 로그인 비밀번호 찾기 로그인 드림핵이 처음이신가요? 회원가입
dreamhack.io
다음 링크에서 버퍼 오버플로우에 대한 자세한 설명과 실습 예제들을 볼 수 있다.
<과제>
다음 코드에서 Theori를 출력시키는 것이 목표이다. 이를 위해 win 변수== "ABCD"가 참이 되어야 하는데, win 변수에 접근하기 위해서는 일단 읽을 buf값의 크기가 buf와 size, win에 값을 넣을 만큼이 되어야 하므로 size값에는 최소 24+4+4 = 32 이상을 입력해준다.
그리고
이런 식으로 win값에 ABCD를 넣어주면 Theori가 출력된다.
'Other > System Hacking' 카테고리의 다른 글
포너블 스터디 3주차 과제 #TheLordOfBOF #gateㅡ>gremlin (0) | 2021.01.28 |
---|---|
포너블 스터디 1주차 자료 요약 및 과제 (0) | 2021.01.27 |