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를 작성해 주었다.
'보안 > 포너블' 카테고리의 다른 글
포너블 Day7 dreamhack basic_rop_x86 문제 풀기 (0) | 2021.05.26 |
---|---|
포너블 Day7 ropasaurusrex 문제 풀기 (0) | 2021.05.26 |
포너블 Day6 pwnable.kr bof (0) | 2021.05.19 |
포너블 Day5 GDB 실행 과정 (0) | 2021.05.12 |
포너블 Day5 GDB설치, 명령어 (0) | 2021.05.12 |