y0u_bat

[Plaid CTF 2014] pork 풀이! 본문

CTF

[Plaid CTF 2014] pork 풀이!

유뱃 2015. 10. 30. 13:52



[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