N00bCTF - What is bof? Write up

CTF 중점 스터디

2019. 10. 27. 19:49

먼저 What is bof? 바이너리 파일을 다운로드 받는다.

다운로드 받은 바이너리 파일을 살펴보면 32bit 바이너리 파일이고, 메모리 보호기법으로 NX bit가 걸려있는 것을 확인할 수 있다.

gdb를 사용하여 main함수를 디스어셈해보면, gets함수를 사용하여 입력받으므로 Buffer Overflow가 일어나는 것을 볼 수 있다.
그러나, NX bit가 걸려있기 때문에 RTL을 사용해야 할 것 같은데 라이브러리 파일을 같이 주지 않는다. 그래서 RTL말고 다른 방법을 찾던 중 flag라는 함수가 존재하는 것을 찾았다.

이 flag함수를 디스어셈해보면, system 함수를 실행하는 것을 볼 수 있다. 그리고 이 system 함수의 인자로 /bin/sh를 주는 것을 알 수 있다. 따라서, Buffer Overflow를 통해 RET을 flag함수의 주소로 덮어씌우면 쉘을 획득할 수 있다.


더미값으로 24byte( buffer + SFP )를 전송하고 flag함수의 주소를 전송하면 쉘이 실행된다.

 

Written by choi_jiung

'CTF 중점 스터디' 카테고리의 다른 글

ShadowCTF Magic Password 풀이  (0) 2019.11.01
Pwnable.kr lotto 문제 풀이_ 정세인  (0) 2019.10.27
N00bCTF Where_is_flag 풀이  (0) 2019.10.27
pwnable.kr(Toddler's Bottle_blukat)_정세인  (2) 2019.10.20
Suninatas 16 Write-up  (0) 2019.10.20