튜기's blogggg

dctf_r100 writeup

by St1tch

우선 바이너리가 어떤건지 확인을 하고, 메모리 보호기법도 확인을 먼저 했다.




32bit ELF파일이고, canary와 nx가 켜져있는것을 확인했다.



IDA를 이용해서 cat flag가 있는 곳을 중심으로 분석했다.


0x08048526을 보면 [ebp+arg_0]와 0xBADB0169를 비교해서 맞으면 system함수가 실행되어 flag를 볼 수 있다.

gdb를 이용해서 저 부분에 break를 걸고 스택주소를 확인했다.



적당히 a를 몇개 넣고 실행을 시켰다.



gets함수를 보면 ebp-0x2c가 입력buf의 주소임을 알 수 있고, eip에서 ebp+0x8부분과 특정 수를 비교한다.

ebp+0x8부분을 덮을수 있으면 보호기법이 켜져있든 말든 바로 flag를 볼 수 있다.


주소차이가 52만큼 난다.

따라서 52개의 쓰레기값 + 비교값을 넣으면 바로 flag를 볼 수 있다.




대회가 끝난 후라 local exploit을 하기 위해 임의로 flag를 대충 만들었고, 

쉘코드나 우회기법 없이 간단하게 flag를 볼 수 있다.


블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기