티스토리 뷰

Pwnable/Lob

Lob darkknight(13)

xxvd 2018. 1. 22. 20:30



                             지금까지 argv[1][47]이 '\xbf'이 아니면 프로그램을 종료했는데, 이번엔 '\xbf'이면 종료합니다. 


코드를 우회하기 위해서 RTL이라는 기법을 사용하겠습니다.



RTL이란 Retrun To Library의 약자로 libc(공유 라이브러리)로 리턴하라. 이런 뜻 인데요.


ret 명령을 만나 libc로 리턴을 하게 프로그램 흐름을 조작해 준다. 이렇게 이해하면 될 것 같습니다.



system()함수의 주소를 찾고, system()함수의 인자로 /bin/sh를 넘겨주면 될 것 같습니다.





gdb로 bugbear를 디버깅 해보겠습니다.




main함수에 bp를 걸고 실행을 시킨 후 system 함수를 print하였습니다.



system함수의 주소는 0x40058ae0입니다.


 


위와같은 코드를 작성하였습니다. 이것은 system()함수에서 /bin/sh 문자열을 찾기 위한 코드입니다.





위의 코드를 컴파일 하였더니 /bin/sh 문자열의 주소가 나왔습니다. 0x400fbff9네요.


그럼 이제 익스플로잇 코드를 작성할 수 있을것 같습니다.


인자는 함수의 주소 8byte 뒤의 주소에 써줘야 하므로 함수의 주소 4byte뒤에는 AAAA로 채워주겠습니다.



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

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

Lob giant(15)  (0) 2018.01.23
Lob bugbear(14)  (0) 2018.01.23
Lob golem(12)  (0) 2018.01.22
Lob skeleton(11)  (0) 2018.01.22
Lob vampire(10)  (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
글 보관함