Security/Pwnable

[Dreamhack] baby-bof

SpruceMoon 2026. 3. 16. 21:50

문제는 다음과 같은데, 제목에서처럼 알 수 있듯이 버퍼오버플로우를 일으켜 코드를 실행시키는 문제일 것임을 예상할 수 있다.

아니나다를까, C코드를 보면,

친절하게도  38줄에 win() 함수는 main 함수가 실행시키고 있지 않다고 말까지 해준다.

win() 함수를 살펴보면, 이놈이 바로 flag를 출력시켜주는 함수다! 그러니까 얘를 어떻게든 실행시켜야 한다.

즉, 버퍼오버플로우를 이용해보자!

 

win 함수 이름을 써보면 이상한 숫자와 영어들이 막 나온다. 

버퍼오버플로를 일으키려면 주소를 찾아야 되겠다.

 

ida freeware로 실행파일을 넣어서 텍스트 보기를 해보면.. win 함수의 주소를 알 수 있다. 저기 보면 40125b라고 나와 있다.

그럼 이 주소를 hex value로 넣으면 되겠다.

name을 입력하면 출력되는 주소가 총 16개이므로, 이걸 넘어 다른 주소로 가기 위해 일부러 integer count 부분에 16을 넣었다.

결과적으로 버퍼오버플로가 일어나 win() 함수가 호출되어 flag가 나와주었다!

솔직히 이게 푼 사람 수는 더 적지만 (아마 23년도에 나와서 그런 거겠지..) 나는 shell_basic 이 더 어려웠다ㅠ

쉘코드 쓰는 법에 익숙해져야겠다..

'Security > Pwnable' 카테고리의 다른 글

[Dreamhack] Return Address Overwrite  (0) 2026.03.30
[Dreamhack] bof  (0) 2026.03.30
[Dreamhack] Basic_exploitation_001  (0) 2026.03.30
[Dreamhack] shell_basic  (0) 2026.03.16
[Dreamhack] welcome  (0) 2026.03.16