본문 바로가기
시스템 해킹/LOB

darkknight

by sonysame 2016. 10. 30.


argv[1][47]은 \xbf이면 안된다!!!!


libc함수 system을 이용하자!

system 함수의 주소는 0x80482e8


ret에 0x80482e8을 넣는다. 


오잉?? system함수의 주소는

0x40058ae0이었다!!

main()함수를 disassemble 했을 때 system호출 지점은 0x80482e8이지만

실행 시점에 공유 라이브러리를 로딩한 후의 system()함수의 시작점을 찾아햐 한다.

따라서 실행 후 system()함수의 address를 찾아야 한다.


system 함수에서도


이전함수의 EBP RET system함수인자


esp가 바뀌고, ebp는 안 바뀌는데??

라는 의문을 가질 수 있지만,

새로운 함수에서 처음에 mov esp ebp덕분에

esp값을 ebp에 넣는다.



이제 system함수의 인자 /bin/sh을 구해야 한다.

이때 이러한 코드를 사용하면 /bin/sh을 구할 수 있다.


system함수의 인자는 system함수 ebp+8지점이다.



이것이 기본적인 RTL이다.


RET부분을 바꿔주었다. system 함수 주소로

eip가 변하는데,,

이제 system 함수로 와서,

push ebp를 해준다.

mov로 ebp가 다시 esp 위치로 온다.

esp+8지점의 인자가 system 함수 인자이다


'시스템 해킹 > LOB' 카테고리의 다른 글

assassin  (0) 2016.10.30
bugbear  (0) 2016.10.30
golem  (0) 2016.10.30
skeleton  (0) 2016.10.30
vampire  (0) 2016.10.30