systemhacking/practice

lob darkknight->bugbear

qkqhxla1 2015. 1. 22. 19:30

http://turtle1000.tistory.com/49 참조


RTL공격을 해야한다고 한다. 모든 프로그램 내부에는 system함수가 있고, 이 system함수를 찾으려면


gdb로 해당 파일을 열어서 p system이나, disas system으로 시작주소를 찾으면 그게 시스템함수 주소이다.




처럼 찾았다. bugbea1.c는 bugbear.c를 cp로 복사한거고 bugbea1은 그걸 컴파일한거다.


시스템함수의 주소는 0x40058ae0이다. 이제 시스템함수에 /bin/sh라는 문자열을 넣으면 된다.



위에 링크를 걸어놓은 곳의 페이지 주인과 동일하게 소스를 짰다. system함수는


내부적으로 execve를 실행시키고, 이건 내부의 /bin/sh를 통해서 하는거므로 /bin/sh가 내부에 반드시 있다고 한다.


방금 찾은 좋은 블로그. ( http://s2kiess.blog.me/220024491744 )


하여튼 저렇게 저 문자열의 주소 0x400fbff9를 구했으면


system함수에 순서대로 넣으면 python -c 'print "A"*44 + "시스템함수" + "AAAA" + "&/bin/sh"'


가 된다. 44개 뒤에 ret 대신 시스템함수의 주소값을 넣어주고, 뒤의 AAAA는 시스템함수의


RET값, 즉 시스템함수 실행 후 어디로 갈지 정하는 부분인데 쉘이 실행되면 상관없으므로 채워준다고 한다.

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

lob giant->assassin  (0) 2015.01.27
lob bugbear->giant (rtl2)  (0) 2015.01.26
lob golem->darkknight (1바이트변조)  (0) 2015.01.21
lob skeleton->goelm (LD_PRELOAD)  (0) 2015.01.18
lob vampire->skeleton  (0) 2015.01.17