https://dreamhack.io/wargame/challenges/1111
bof
DescriptionBuffer overflow is one of the basics of pwnable 🐱The path of the flag file is /home/bof/flag.
dreamhack.io
docker build -t myimage . #현재 폴더에 있는 dockerfile 이용하여 myimage 라는 이미지 생성
docker run --name mycontainer myimage # myimage 사용하여 mycontainer 라는 컨테이너 생성
docker exec -it mycontainer /bin/bash # mycontainer 실행 후 터미널로 진입
sudo docker run -it --name mycontainer myimage /bin/bash # 컨테이너 실행 및 bash 진입
문제를 실행해보면 이런게 나온다.


입력한 것을 그대로 출력하는 것 같다.
버퍼 오버플로우 사용하여 flag 값에 도달하게 만들어야하는 것 같다.
딱히 소스코드 파일이 없어서 기드라나 IDA 툴 등으로 분석해보기로 했다.

local_98 이라는 배열에 입력을 받아서 저장한 뒤 read_cat 함수를 이용해 local_18 이라는 변수의 값을 출력하는 듯 하다.
local_18 은 ./ca 이고 local_14는 t 이다.
얘네 둘을 합치는 코드가 어디에도 없는데 ./cat이 열리도록 했다니 말이 안돼서 찾아보니까 아마도 path[] = "./cat" 였던 것을 디컴파일러가 쪼갰다고 한다.
그러면 시작 주소부터 널문자까지만 읽어오므로 자연스럽게 실행이 된다고도 한다.

문자 입력 시 어떻게 더 자세히 되는지 보고 싶어서 gdb를 봤다.

cat 입력하면 이렇게 나온다.
128바이트를 읽어오니까 일단 대충 아무거나 128바이트를 채워준다.
128바이트 넘기고서 flag있는 경로를 넣어주면 거기로 덮어씌워지면서 값을 읽어올 수 있다.

'wargame > 시스템해킹' 카테고리의 다른 글
| [level 2]basic_exploitation_000 (0) | 2025.10.29 |
|---|---|
| [level 1]basic_exploitation_001 (0) | 2025.10.28 |
| [level 1]Return Address Overwrite (0) | 2025.10.28 |
| [level 1] Exercise: GDB (0) | 2025.10.28 |
| [beginner] baby-bof (0) | 2025.09.05 |