https://dreamhack.io/wargame/challenges/2
basic_exploitation_000
Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_000)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "f
dreamhack.io


c파일을 열어 살펴보면 버퍼는 0x80 = 128byte인데 scanf로 141바이트를 입력받는다 => stack buffer overflow발생

우선 001과 다르게 버퍼의 메모리주소가 계속 바뀐다

그러므로 pr가 출력하는 데이터 중 (을 만날 때까지 돌린 후 그 뒤 10개 string을 buf_addr에 저장한다
=> string이므로 이후 byte로 전환하기 위해 packing해줌

코드가 실행은 되는데 에러가 난다.. 생각해보니 쉘코드를 입력을 안햇다.. ㅎㅎ
\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80
쉘코드를 payload앞부분에 입력
찾아보니 scanf가 입력받을 때는 공백(' ', 0x20), 개행('\n', 0x0a), 탭(\t, 0x09) 등의 구분 문자가 있으면 거기까지만 받아들이고 그 이후로는 입력 버퍼에 남겨놓기 때문에 payload에 이런문자가 없도록 구성해야한다고 한다.
나머지는 'A'로 채워넣으면 됨

파일 실행시키면 flag가 나온다

'CTF > Pwnable' 카테고리의 다른 글
| [DreamHack] rop Write-up (0) | 2024.03.16 |
|---|---|
| [DreamHack] ssp_001 Write-up (0) | 2024.03.10 |
| [DreamHack] memory_leakage Write-up (0) | 2024.03.10 |
| [DreamHack] basic_exploitation_001 Write-up (0) | 2024.03.10 |
| [DreamHack] Exploit Tech: Return Address Overwrite Write-up (0) | 2024.03.10 |