y0u_bat
[Plaid CTF 2014] pork 풀이! 본문
[Plaid CTF 2014] pork 풀이!
저 함수를 보면 pork라는 계정이 있는지 확인한다.
그러므로 pork라는 계정을 추가 시켜줘야 된다.
그리고 sscanf로 입력한다.
clienterror부분을 보면 저기 sprintf에서 buffer overflow가 일어난다.
s 는 ebp-458이므로 sfp전까지가 0x458 = 1112바이트이다.
그런데 여기서 우리가 s에 입력하기전에 위 sprintf로 먼저 s에 내용을 채워주고 있다.
그러므로 우리가 입력하기전에 입력된것을 빼기위해 len해서 보면 92가 나오는걸 볼수있다.
전에 입력한걸 빼보면 1112 - 92 = 1020
즉 버퍼는 1020다.
buffer 1020 | sfp 4 | ret 4
처음에는 그냥 nx가 안걸려있길래 read로 쉘코드입력받고 바로 리턴할려고 했다.
그런데 4를 리틀엔디언으로 바꾸니 0x00000004, 널바이트가 들어가서 sprintf에서 복사가 끊겨버린다.
그래서 bss영역에 하나하나 가젯을 구해서 거기 다 넣어놓고 bss로 점프하였다.
사소한걸로 삽질을 너무 많이한거 같다..
bss영역 주소를 고르는데 4~6번 이상 잘못 골라서 많이 삽질했다 ㅠㅠ;;;
ㅠㅠ
'CTF' 카테고리의 다른 글
[2016] HDCON System Q3-1 (0) | 2016.10.28 |
---|---|
[CodeGate2015] BookStore 풀이 (0) | 2015.11.09 |
[CodeGate 2013] vuln200 풀이 (0) | 2015.10.20 |
Piaid CTF 2013 Ropasaurusrex 풀이 (0) | 2015.09.27 |
[CodeGate2014] nuclear 뉴클리어 풀이 (0) | 2015.09.17 |
Comments