ciscn_2019_c_1 1


步驟:

先checksec,看一下開啟了什么保護

可以看到開啟了nx保護,然后把程序放入ida里面,觀察程序代碼

先shift+f12觀察是否有system和binsh函數

 

 

 發現沒有system和binsh函數,所以我們考慮可以用libc泄露來做這道題

進入程序得主界面

 

 在進入encrypt程序中按f5查看偽c代碼

 

 

 

 

 

 

我們可以看到程序對輸入得大小寫和字符等進行了一個簡單的加密,

注意if(v0>=strlen(s))可以跳出這個if循環

而strlen()函數的特性時讀取到\0時會結束所以我們可以payload前以\0開頭,從而繞過if加密

接下來我們判斷需要溢出的字符數量

 

 

 

 

 

 

 可以看到需要88個字符可以造成溢出,而\0站一個字符所以我們在加上87個a就可以造成溢出

由此構建我們的exp

完整exp如下

 

 

 

注意:在第一個payload中我們需要讓程序獲得libc后能繼續返回到程序初,所以我們將返回地址設為了mian的地址

           在第二個payload中,該程序在unbantu中的64位程序,所以我們還需要一個ret_addr來讓payload保持棧對齊

            本地和遠程所獲得的libc版本是不一樣的,當本地失敗后,遠程試一下

 

 

 

 

 

 成功獲得 flag

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM