티스토리 뷰

Pwnable/Lob

Lob gate(1)

xxvd 2017. 12. 14. 08:51



Lob 1번문제 gate입니다.




gremlin.c 파일을 열어보았습니다.


char 형 배열 buffer의 크기는 256byte 이고, argc 의 갯수. 즉, 명령어 인자의 갯수가 

2개이상이 되면 argv error를 띄우고 프로그램을 종료시킵니다.


strcpy로 argv[1]의 값을 buffer로 복사합니다.





                     임시 파일인 tmp로 이동하여 gdb로 gremlin을 디버깅 해보겠습니다.                                             




      main 함수를 disassemble 해보니 16진수로 0x100 만큼 esp를 이동시켰습니다.               

     즉, 0x100만큼 char형 변수 buffer에 크기를 할당해 주었다는 것 입니다.                       


    16진수로 100은 10진수로 256이므로 buffer의 크기는 쓰레기 값 없이 256byte입니다.      


메모리 구조를 한번 그려보면 대략 이런 식으로 그려집니다.                                   


      

buffer 256byte, sfp 4byte, ret 4byte 입니다.(buffer를 buf라고 잘못 적었습니다. ㅠ)



buffer와 sfp를 nop(\x90)으로 덮고 ret에 shell코드가 들어있는 주소를 넣어주면 

                                             될 것같습니다.                                                                                       



쉘코드를 등록 합니다.





환경변수의 주소값을 알아내기 위해 getit.c라는 c코드를 작성합니다.


     





                                               그리고 getit.c를 gcc로 컴파일 하고 getit을 실행하여 환경변수의 주소값을 알아냅니다.




이제 환경변수의 주소까지 알아냈으니 그림에 그려진대로 페이로드를 작성하면

 될 것 같습니다.




익스플로잇 하였습니다.



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

Lob wolfman(6)  (0) 2017.12.20
Lob orc(5)  (0) 2017.12.20
Lob goblin(4)  (0) 2017.12.20
Lob cobolt(3)  (0) 2017.12.20
Lob gremlin(2)  (0) 2017.12.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함