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 |