
제목부터 버퍼오버플로우문제라고 광고 중이다.
실행해보면

웬 고양이가 뮤뮤거리며 나를 반겨준다. (귀엽다)
파일에 따로 C파일이 없어서 마찬가지로 IDA로 디컴파일해서 보자.

보면 scanf에서 최대로 144바이트까지의 값을 받고 있는 것을 확인할 수 있다.
근데 v4 배열은 128바이트 크기를 가지고 있다! 거기에 v4를 입력받은 다음 바로 v5 변수가 사용되므로, v4 값을 버퍼오버플로우로 넘치게 만들면 v5 변수의 내용을 내가 원하는 대로 덮어쓸 수 있겠다.
또한 flag는 /home/bof/flag 에 있다고 했으므로 v5 영역에 들어갈 값이 바로 저 위치 문자열이 될 것이다.
이를 바탕으로 익스플로잇 코드를 작성해보자.

아까 전에 쓴 코드보다 더 쉽다. 살짝만 수정해서 오버플로될 곳에 주소가 들어가도록 만들었다.

플래그가 출력되었다! :D

여담이지만, 시스템해킹 기초 워게임들은 공식이 있는 것 같다.. 버퍼오버플로우문제일 경우만!
파일을 본다 > IDA를 돌려서 디컴파일시킨다 > 바이트 크기를 계산한다 > 얼마나 오버플로시킬지 본다 > 함수의 주소를 찾는다 > 익스플로잇 코드를 쓴다 > 돌린다
이러면 풀리는 것 같다.ㅎㅎ
'Security > Pwnable' 카테고리의 다른 글
| [Dreamhack] Return Address Overwrite (0) | 2026.03.30 |
|---|---|
| [Dreamhack] Basic_exploitation_001 (0) | 2026.03.30 |
| [Dreamhack] baby-bof (0) | 2026.03.16 |
| [Dreamhack] shell_basic (0) | 2026.03.16 |
| [Dreamhack] welcome (0) | 2026.03.16 |