https:// dreamhack.io /wargame/challenges/ 

basic_exploitation_001 문제 풀기

문제를 다운받고 우분투 파일에 넣어주었다.

 

▶ 소스코드 보기

gedit basic_exploitation_001

main함수를 보면

buf에 0x80 사이즈가 할당되는 것을 볼 수 있다. 16바이트 0x80은 10바이트로 128바이트이다.

initialize함수가 실행이 되고 buf의 주소를 출력하고 scanf로 입력을 받는다.

 

initialize함수는 실행 이후 정해진 시간이 지나면 "TIME OUT"을 출력하고 종료한다.

 

read_flag 함수는 system 명령어로 falg 값을 보여주는 함수다.

 

buf의 크기는 128바이트인데 scanf로 입력을 받아 버퍼 오버플로우(bof)가 발생할 수 있다.

 

gdb basic_exploitation_oo1

gdb로 들어오고

info function

read_flag함수의 주소는 0x080485b9이다.

메모리 구조는 buf | sfp | ret이므로 flag를 얻기 위해서는 buf , sfp는 아무 문자로 채우고 ret은 read_flag 함수의 주소로 채우면 해결이 된다.

바로 전에 했던 과제를 참고하여 payload를 작성해 주었다.

해결!
dreamhack에 가서 flag를 제출하고 포인트를 얻을 수 있었다..!

 

+ Recent posts