본문 바로가기
wargame/시스템해킹

[beginner] bof

by 이보름 받침대 2025. 9. 4.

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