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 사용법도 은근 어렵네
솔직히 이 문제는 다른 분 블로그 많이 참고했다
공부할게 산더미네
ㅋㅋ
'System Hacking' 카테고리의 다른 글
[드림핵] ssp_001 풀이 - 티스토리 (0) | 2023.07.16 |
---|---|
[드림핵] Return to Shellcode 풀이 - 티스토리 (0) | 2023.07.12 |
[드림핵] basic_exploitation_001 풀이 - 티스토리 (0) | 2023.07.09 |
[드림핵] Return Address Overwrite 풀이 - 티스토리 (0) | 2023.07.09 |
[드림핵] shell_basic 풀이 - 티스토리 (0) | 2023.07.07 |