음..문제를 보니 buffer을 지우고, 스택부분도 사용할 수 없게했다. 거기에 ret에 바로 system주소를 걸 수 없어서 코드부분을 이용해야겠다.

일단 코드를 disas 하면

\x80으로 시작하는 것을 알 수 있다. ret를 이용해 ret위치에서 한번더 ret를 하고 그 뒤에 system함수를 놓아 쉘을 따면 될 것 같다.

성공...ㅎ

'war game > LOB' 카테고리의 다른 글

LOB-level17(function calls)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03
LOB-level14(RTL2, only execve)  (0) 2019.07.02
LOB-level13(RTL1)  (0) 2019.07.02
LOB-level12(sfp)  (0) 2019.07.02

우선 argv[1]의 44번째 부터의 주소를 execve_addr과 같도록 맞춰주고, execv함수의 인자에 /bin/sh를 넣어주거나, system을 다시 호출해서 해결하는 두가지 방법이 있을 것 같다.

 

execve 주소를 찾아주고

system 주고소 찾아준 뒤

/bin/sh주소 찾은 뒤

실패... 찾아보니 \0a가 \x00으로 들어간다더라. 따라서 밖을 "로 감싸줘야한다.

해결~

'war game > LOB' 카테고리의 다른 글

LOB-level16(fake ebp)  (0) 2019.07.03
LOB-level15(no stack, no RTL)  (0) 2019.07.02
LOB-level13(RTL1)  (0) 2019.07.02
LOB-level12(sfp)  (0) 2019.07.02
LOB-level11(stack destroyer)  (0) 2019.06.30

이번에도 strcpy에서 인자 검사를 해주지 않는데, rtl을 이용해 문제를 풀라 제시했기에 rtl을 이용해보려한다.

system 주소를 구하고, 

/bin/sh가 들어있는 주소를 구하고

주소를 뽑아준 뒤

성공ㅎ

참고로 쉘코드는 [버퍼]+[system주소]+[system ret]+[system 인자]순으로 넣었다,

'war game > LOB' 카테고리의 다른 글

LOB-level15(no stack, no RTL)  (0) 2019.07.02
LOB-level14(RTL2, only execve)  (0) 2019.07.02
LOB-level12(sfp)  (0) 2019.07.02
LOB-level11(stack destroyer)  (0) 2019.06.30
LOB-level10(argv hunter)  (0) 2019.06.30

+ Recent posts