hacking

[LOB] gate

hy3on9 2021. 8. 18. 23:03

gremlin.c

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의 주소가 필요하다

 

한 가지 설명하자면

func(int arg)

다음과 같이 인자가 있는 함수에서는 스택이

a[4] + ebp + ret + arg 로 쌓인다

 

이를 system 함수에 적용시키면

ret + 'system 함수의 인자값' 으로 된다

/bin/sh 앞에 넣을 4byte는 system 함수의 ret를 덮기 위함이다

 

고로 공격 계획을 다시 생각해보면

ret를 system함수로 돌리고 system 함수의 인자값을 /bin/sh로 해주면 쉘 획득이 가능한 것이다

 

gdb를 사용하여 system 함수의 주소를 알아낸 뒤

 

binsh.c

다음과 같이 /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함수의 인자값으로 주면.. 안되나..?

해보긴 했는데 잘 안되는걸 보니 안되는거 같기도 하고 궁금하다..

원래는 이렇게 하려 했으나 잘 안 돼서 위와 같이 했다