티스토리 뷰

Pwnable/Lob

Lob golem(12)

xxvd 2018. 1. 22. 19:59


 이번 문제는 FPO 문제입니다.



자 그럼 FPO(Frame Pointer Overflow)란 무엇이냐 하면 이전 함수의 ebp가 저장되어있는 sfp를 변조하여 프로그램을 원하는 흐름으로 돌리는 기법입니다.



  




함수 에필로그인 leave,ret 명령을 실행하면 이렇게 실행이 됩니다.


그런데 여기서 이전함수의 ebp를 담고있는 sfp를 변조한다면 pop ebp 부분에서 이전함수로 되돌아 가지 않고 변조된 주소로 


ebp가 이동하겠죠. 그런데 만약 변조된 주소가 shellcode가 있는 영역이라면 익스플로잇을 할 수 있을 것 입니다.




저는 sfp를 &(buffer -4)로 변조하여 익스플로잇 하겠습니다.



 




이런식으로 구성하면 될 것 같습니다.






gdb로 darkknight를 디버깅 한 후 bp를 problem_child 함수의 leave에 걸고 프로그램을 실행했습니다.






buffer -4의 주소는 0xbfffffa9c이겠네요.


그러면 이제 sfp의 마지막 주소를 9c로 변조해 주면 될 것 같습니다.




익스플로잇에 성공했습니다.

'Pwnable > Lob' 카테고리의 다른 글

Lob bugbear(14)  (0) 2018.01.23
Lob darkknight(13)  (0) 2018.01.22
Lob skeleton(11)  (0) 2018.01.22
Lob vampire(10)  (0) 2017.12.22
Lob troll(9)  (0) 2017.12.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함