CafeM0ca

[LOB]level12 darkknight 본문

Hacking/LOB(Red Hat)

[LOB]level12 darkknight

M0ca 2018. 1. 4. 01:03
반응형

RTL을 사용해야하는 듯 하다.

RTL은 라이브러리로 리턴한다는 의미로 eip를 라이브러리 함수주소로 돌리면 된다. 쉘을 얻기 위해 system함수를 사용하여 인자로 /bin/sh를 실행하면 쉘이 실행될 것이다.

우선 시스템 주소부터 찾아보자.

gdb로 카피 파일을 열어서 적절한 곳에 bp를 걸어주고 print system하면 libc system주소가 나온다.->system함수 시작점: 0x40058ae0

인자로 쓸 /bin/sh를 찾아야하는데 곰곰히 생각해보니 system함수도 /bin/sh를 실행하고 다른 명령을 받으므로 system함수 어딘가에 /bin/sh가 있을 것이다. 그 주소를 찾아서 인자로 넣어주면 된다.


일일이 찾을 순 없으니 /bin/sh를 찾는 소스코드를 작성하자.

0x400fbff9가 /bin/sh의 주소다.

이제 버퍼를 덮어주고 ret에 system함수 주소를 올려주면 system함수가 실행될 것이다.


main+93을 보면 strcpy를 호출하고 있으므로 main+89는 strcpy의 인자이므로 buffer의 시작점임을 알 수 있다.

buffer(40byte) | sfp(4byte) | ret 으로 구성되어있다.

payload

./bugbear `python -c 'print "A"*44+"systemaddr"+"system ret"+"/bin/sh addr"'`


system함수+4byte는 system함수의 ret이므로 아무거나 덮어씌우거나 exit으로 정상종료해줘야한다.

반응형

'Hacking > LOB(Red Hat)' 카테고리의 다른 글

[LOB]level14 giant  (0) 2018.01.18
[LOB]level13 bugbear  (0) 2018.01.17
[LOB]level11 golem  (0) 2018.01.04
[LOB]level10 skeleton  (0) 2018.01.03
level9 vampire  (0) 2017.09.14
Comments