记一次院赛CTF的Pwn和Misc题(入门)
目錄
- Pwn
- easy pwn
- 莽撞人
- 反向讀取
- Misc
- drop the beats
- 拼東東
- 消失的50px
Pwn
見到別的比賽的pwn題才幡然醒悟,已經沒有比這些更簡單的pwn題了。
easy pwn
首先,拿到Pwn題的第一步,看是64位還是32位
第二步 gdb看開了哪些保護
第三步,拖入ida反匯編
可以看到本題只需要讓v5等于2019便可以執行sh了。
然后看一下他的棧結構,這邊var_4便是v5(雙擊v5就可以跳到var_4)
因為read(0,&buf,0xC)可以知道,我們可以輸入11位字符,所以我們只需要讓最后四位是2019,就可以覆蓋到var_4,也就是可以令v5等于2019.
于是寫出exp
這邊payload的\n加不加其實是一樣的,加了\n表示就是結束輸入。
exp里面主要是
導入pwn
連接到服務器
構建payload
發送payload
最后這個這題是一樣的,因為不需要獲取的shell,就是不需要獲取控制權,他的意思就是把控制權交給用戶。本題是當你執行到就直接給你flag的,不會給你控制權
莽撞人
首先一波常規操作,找到漏洞點,發現buf是0x10位的空間,但是可以輸入0x50的內容
可以發現,這邊有一個函數是getShell,只要執行到這個函數,就執行systm(“/bin/sh”)
棧結構為junk+ebp+ret_address+參數1+參數2+……+參數n
于是我們只需要將read到buf中的數據,覆蓋到ret_address為getShell()地址。
反向讀取
這邊比較關鍵的是要發現漏洞點,因為要讓if(*((_BYTE )&v2+i)==((_BYTE *)&v8+s[i]))一直都是成立的。
可以發現,當char類型的大于127會變成負數,所以我們可以利用這一點讓他們相等。
通過分析,可以發現v2和v8相差0x40也就是64,所以*(&v2)=*(&v8-64)
構建exp如下,這邊192就是-64
然后,就得到了flag
Misc
drop the beats
這是一道音頻的雜項題,因為比較簡單,所以這種簡單的音頻題我知道的一般就是一個mp3隱寫,要么就是拖入Audacity頻譜分析了
拼東東
一個損壞的zip,第一步就是想到拖到winhex里面看下文件頭,發現沒有zip的文件頭50 4B 03 04,加上后就可以正常打開了。
消失的50px
這題很明顯就是一個改圖片高度的題了,拖入winhex找需要修改的高度。
可以看到圖片高度是350像素,轉換成16進制就是015E
然后找到015E,把他改大一些就好了。
總結
以上是生活随笔為你收集整理的记一次院赛CTF的Pwn和Misc题(入门)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记一次院赛CTF的Crypto和Re题(
- 下一篇: 攻防世界dice_game(pwn)