博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BUUCTF-Web]学习笔记-题目1【SUCTF2019】Easy SQL
阅读量:2082 次
发布时间:2019-04-29

本文共 857 字,大约阅读时间需要 2 分钟。

1,题目来源:CTF平台:BUUCTF Web部分

题目:[SUCTF 2019]EasySQL
2,Flag以及解答后题目截图:

flag{4c1665f4-353b-4077-8ef7-c864bdba482b}

在这里插入图片描述

3,解题思考过程及分析:

1,经过一系列的输入测试发现,输入数字时会显示 Array ( [0] => 1 )
在这里插入图片描述

而输入0则不显示

在这里插入图片描述

但输入flag会提示 Nonono. 那么它内部到底是一个怎么样的sql语句呢?

在这里插入图片描述

我们猜测它有一个 ||符号,因为当我们输入数字时被当成常量一直输出1,当我们输入带有字母时会被当做一个变量(列)而又无法找到,所以报错(没有回显),而输入带有”flag“的字符串都会弹出 Nonono. 说明过滤了“flag”这几个字符(后面发现,不区分大小写都过滤了)

2,我们尝试使用,堆叠注入,可以显示出有flag字段,但是因为过滤了“flag”几个字符所以行不通。
在这里插入图片描述

3,最后查看网上wp发现后台的语法可能是

select.POST['参数'] || flag from flag

因此可以输入*,1 来显示全部内容:

在这里插入图片描述

由此得出flag{4c1665f4-353b-4077-8ef7-c864bdba482b}

4,考核的知识点描述:
1,此题我们需要运用堆叠注入,和mysql中的 || 符号的意思及如何改变,还有mysql中的sql_mode模式的概念了解。
2,mysql服务器可以在不同的sql_mode模式下运行,并且可以根据sql_mode系统变量的值,为不同的客户机应用不同的模式。sql_mode会影响mysql支持的sql语法,并且会执行数据验证检查;
3,在Oracle,用 || 连接字符串的,而在mysql,是用CONCAT来实现的。mysql为了兼容这一个特性,设置了PIPES_AS_CONCAT模式,mysql会将 || 视为字符串的连接操作符而非 或 运算符。具体命令为:set sql_mode=PIPES_AS_CONCAT;

参考链接:

转载地址:http://kpjqf.baihongyu.com/

你可能感兴趣的文章
使用HttpClient请求另一个项目接口获取内容
查看>>
HttpClient get和HttpClient Post请求的方式获取服务器的返回数据
查看>>
net.sf.json Maven依赖配置
查看>>
Could not initialize class net.sf.json.JsonConfig错误解决
查看>>
Java编程思想重点笔记(Java开发必看)
查看>>
eclipse 创建maven 项目 动态web工程完整示例
查看>>
前端JSP与Spring MVC交互实用例子
查看>>
使用maven一步一步构建spring mvc项目
查看>>
hadoop map reduce 阶段笔记
查看>>
java jackcess 操作 access
查看>>
Git问题Everything up-to-date解决
查看>>
Hadoop HDFS文件操作的Java代码
查看>>
Hadoop学习笔记—3.Hadoop RPC机制的使用
查看>>
Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
查看>>
JTS Geometry关系判断和分析
查看>>
GIS基本概念
查看>>
Java文件操作①——XML文件的读取
查看>>
java学习总结之文件操作--ByteArrayOutputStream的用法
查看>>
Java生成和操作Excel文件
查看>>
Java的三种代理模式
查看>>