오늘은 troll로 가는 패스워드를 알아보자.
orge에 로그인 후 현재 위치의 파일 목록을 출력했다. 이번엔 troll.c 파일이 있다. troll.c 파일을 출력시켜보자.
here is changed 주석을 보면 이번엔 인자의 개수를 2개로 제한하는 것을 알 수 있다. 즉 argv[2]를 이용할 수 없다는 뜻이다. 맨 마지막에 one more! 주석에는 argv[1]의 값을 0으로 초기화 해주는 것을 볼 수 있다. 이렇게 되면 쉘코드를 argv[1], arg[2]에 넣을 수 없다. 하지만 아직 초기화 되지 않은 공간이 존재한다. argv[0]에 쉘코드를 넣어서 공격해보자.
argv[0]은 파일명이다. 그렇기 때문에 파일명을 쉘코드로 바꾼다면 ret를 argv[0]의 주소로 덮어서 쉘을 실행시킬 수 있다. 그런데 기존에 사용했던 쉘코드에는 \x2f가 포함되어 있다. \x2f는 파일의 경로를 구분지을 때 사용하는 "/"문자를 나타내므로 그대로 사용하면 오류가 발생할 것이다. 이러한 문제를 해결할 새로운 쉘코드를 가져왔다.
\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81
이 쉘코드로 심볼릭 링크를 만들어보자.
troll 복사파일인 troll1을 심볼링 링크로 새롭게 만들고 실행시켰다. core 파일이 생성됐다. core 파일을 확인해보자.
0xbffffa87에서 심볼릭 링크의 파일명을 찾았다. 이보다 조금 더 뒤의 주소를 골라 ret 영역에 덮어씌어 보자. 나는 0xbffffa97을 선택했다.
troll파일로 심볼릭 링크를 새로 만들고 0xbffffa97를 ret영역에 덮었다.
그 결과 쉘 실행에 성공했다.
troll로 가는 패스워드는 aspirin이다.
'Study > System Hacking' 카테고리의 다른 글
[lazenca] Protection Tech / ASLR & Canaries (0) | 2021.02.12 |
---|---|
[dreamhack] Linux Exploitation & Mitigation Part 2 / ASLR & PLT, GOT Section (0) | 2021.02.12 |
[LOB] darkelf -> orge (0) | 2021.02.09 |
[LOB] wolfman -> darkelf (0) | 2021.02.09 |
[LOB] orc -> wolfman (0) | 2021.02.03 |