티스토리 뷰

포너블/FTZ

FTZ level19 풀이

삼전동해커 2020. 8. 19. 14:22

level19를 풀어보장.



힌트가 굉장히 짧다. 왜냐하면 권한을 상승시켜줄 system과 setreuid함수가 없기때문이지.

그래서 내가 직접 system과 setreuid를 실행시켜서 풀어보려한다.


여기서 사용할 방법이 RTL이다.

라이브러리에 위치해있는 setreuid와 system함수의 위치를 구하고, 각 함수들의 인자까지 구해서 익스플로잇에 적어주면 된다.


먼저 buf의 크기를 구해 스택을 얼마나 채울지 알아보고,

setreuid 함수의 위치,

setreuid 함수의 인자,

system 함수의 위치,

system 함수의 인자를 구해보자.


gdb를 보자.


main+3에서 40만큼 스택확장했다.

그럼 buf의 크기 20만큼에 dummy20만큼이 되겠다.


다음으로 setreuid함수의 위치를 구해보자.


b main으로 main함수에 break문을 걸어준 후,

r 로 실행 시킨 뒤,

p setreuid로 함수의 위치를 알아보자.



0x420d7920이라는 위치가 나왔다.


다음으로는 setreuid 함수에 인자가 어떻게 들어가는지 찾아보자.


많이 봤다시피 실제 사용자 id인 ruid와 유효 사용자 id인 euid 2개가 인자로 들어간다.


그럼 인자로 뭘 넣을지 알아보자.




당연히 level20에 대한 ruid 3100과 euid 3100 두개이다.

3100을 16진수로 바꾸면 0xc1c이다.


다음으로는 system함수의 위치이다.



p system으로 구할수 있다.

0x4203f2c0으로 나온다.


system의 인자로 쉘을 실행하는 /bin/sh를 넣어야 한다.


다음과 같이 shell의 위치를 구할수 있다.


/bin/sh가 system함수 내부에 있기 때문에 memcmp함수를 이용해 /bin/sh와 비교해 찾을 수 있다.



컴파일 후 실행해 위치를 구할수 있다.


0x42127ea4에 /bin/sh가 위치해 있다.


1.스택 채우기:40(스택)+4(sfp)=44

2.setreuid함수 위치 : 0x420d7920

3.PPR

4.setreuid인자 : 0xc1c 2개

5.system함수의 위치 : 0x4203f2c0

6.4바이트 push

7.system 함수의 인자(/bin/sh) : 0x42127ea4


여기서 처음보는 3번과 6번이 있다.


3번 PPR은 POP POP RET의 줄임말이다.

PPR은 chaing을 위해 필요하다. setreuid함수와 system함수를 연결하기 위한 chain이라 생각하면 된다.

PPR을 구해보자.

 


objdump명령어는 프로그램의 모든 함수의 gdb를 보여준다.

그중에서 pop과 ret만 가져온 것이다.


이 중 pop,pop,ret이 붙어 있는걸 찾아보면, 


이 위치라 할 수 있겠다.

0x804849d


6번 4byte는 system함수에 인자를 push하기 위해 필요한 공간이다.


1.스택 채우기:40(스택)+4(sfp)=44

2.setreuid함수 위치 : 0x420d7920

3.PPR : 0x804849d

4.setreuid인자 : 0xc1c 2개

5.system함수의 위치 : 0x4203f2c0

6.4바이트 push 

7.system 함수의 인자(/bin/sh) : 0x42127ea4


이제 진짜 익스플로잇을 짜보면


(python -c 'print"\x90"*44+"\x20\x79\x0d\x42"+"\x9d\x84\x04\x08"+"\x1c\x0c\x00\x00"+"\x1c\x0c\x00\x00"+"\xc0\xf2\x03\x42"+"\x90"*4+"\xa4\x7e\x12\x42"';cat) | ./attackme    


이렇게 쓸 수 있겠다.



 풀린다.

'포너블 > FTZ' 카테고리의 다른 글

FTZ level18풀이  (0) 2020.08.18
FTZ level17 풀이  (0) 2020.08.17
FTZ level16풀이  (0) 2020.08.17
FTZ level15풀이  (0) 2020.08.17
FTZ level14 풀이  (0) 2020.08.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함