본문 바로가기

System Hacking

[드림핵] baic_exploitation_000 풀이 - 티스토리

 

basic_exploitation_001과 main코드는 거의 비슷하다

 

 

여기선 read_flag와 같은 함수가 없으므로  다른 방법을 이용해 ret를 override시키면 될거 같다

 

 

사실 이 문제는 고민하다가 혼자 못 풀어서 다른 블로그 참고해서 풀었다

 

 

지금 보니까 buf의 주소를 출력하고 있는 코드가 힌트인거 같네

 

 

분석

 

 

 

 

페이로드

: buf에 쉘코드 포함 아무값이나 0x84 만큼 채운 후 ret를 buf 주소로 덮어 씌워서 쉘코드를 실행시킨다

 

(여기서 입력을 scanf로 받고 있으므로 scanf의 특성을 고려해야함)

 

솔직히 보안 입문자가 이걸 어떻게 생각해내....................................................

 

 

\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80

 

scanf 우회 쉘코드 26바이트짜리로 인터넷에서 가져왔다

 

 

* scanf는 탭, 개행, 공백 등이 있는 곳 까지 문자를 읽어들이기 때문에 해당 아스키 코드가 쉘코드에 포함 되어 있으면 안된다

 

그래서 0x08에서 inc을 세번 시켜서 0x0b를 만드는 우회 쉘코드가 필요

 

 

pwntools로 짠 페이로드

recvuntil로 buf주소 전까지 날리고 recvn로 10바이트 만큼 16진수로 받아서 정수형으로 변환 시킨다

 

 

 


pwntools 사용법도 은근 어렵네

 

솔직히 이 문제는 다른 분 블로그 많이 참고했다

 

공부할게 산더미네

ㅋㅋ