web:[SUCTF 2019]EasySQL

题目

点进页面,页面显示为

没有其他的提示信息,查看源代码看看是否有提示

什么都没有,由题目名为easysql,能想到这道题与sql注入有关

先输入1查看回显

再输入其他数字或字母看看回显

都是无显示

先验证是否存在sql注入

构造payload

复制代码
1' or 1=1 #

显示为nonono,可能是对部分关键字设置了过滤

使用堆叠注入查看信息

先查看数据库

构造payload

复制代码
1;show databases;

再查看一下表

构造payload

复制代码
1;show tables;

查到了flag

查看flag文件

构造payload

复制代码
1;show columns from Flag;

被过滤掉了

这里参考了别的大佬wp,发现是这里后端语句,因为只有当我们输入非零数字时才会会显出1,而0和其他全都无回显

即输入数字有回显而字符没有回显,说明了语句中存在||结构

在mssql中,||表示连接操作符,不表示或的逻辑

方法一:

需要把payload中的||或逻辑改成连接符的作用

这里需要用到

设置sql_mode=PIPES_AS_CONCAT来转换操作符的作用。(sql_mode设置)

利用PIPES_AS_CONCAT令||起到连接符的作用。

构造payload

复制代码
1;set sql_mode=PIPES_AS_CONCAT;select 1

注:这里的逻辑是先把||转换为连接操作符,注意分号隔断了前面的命令,所以要再次添加select来进行查询,这里把1换成其他非零数字也一样会回显flag

得到flag

方法二:

构造payload

复制代码
*,1

直接得到flag

已知后端语句是select 输入内容 || flag from Flag ,输入***,1就相当于构造了select *,1 || flag from Flag** ,这条语句执行起来相当于select *, 1 from Flag

1||flag是个短路算法,直接输出1了

**select *和select 所有列的意义相同,**那么我们构造的select *,1 || flag from Flag ==select *,1 from Flag

总结

PIPES_AS_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似.

SELECT * 和 SELECT 所有列,两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,可以用select *来操作。

短路算法:

|| 逻辑或的短路:a||b

计算机发现a是真,那么输出a;如果a是假,那么输出b

select 1 from :建立一个临时列,这个列的所有初始值都被设为1。

Mysql中的||

||运算符相当于or,即 :

  • 0 || 1 = 1
  • 3 || 4 = 1
  • 0 || 0 = 0

我们可以修改sql_mode的值,将||视为字符串的连接操作符而非或运算符,即set sql_mode=PIPES_AS_CONCAT;

参考学习文章链接:

BUUCTF SUCTF 2019EasySQL1 writeup(详细版)_buuctf easysql_今天不用学物理吧的博客-CSDN博客

SUCTF 2019EasySQL 1-【SQL注入】 - 知乎

相关推荐
qq_485015213 分钟前
MyBatis-Plus 3.x FieldStrategy 作用
java·数据库·mybatis
lhldsg6 分钟前
课程排课系统实战指南:从数据库设计到算法调优全流程解析
java·数据库·算法·小程序
丰锋ff22 分钟前
数据库操作的一些相关命令
数据库
往事只能回味味道28 分钟前
MySQL创建数据库并授权指导用户与IP
数据库·tcp/ip·mysql
BUG研究员_1 小时前
LangChain 向量数据库实战:Redis 与 Pinecone 的知识点总结
数据库·redis·langchain
API快乐传递者1 小时前
1688 跨境电商 API 接口实战指南:从寻源到代采的全链路技术方案
java·前端·数据库
LabVIEW开发1 小时前
LabVIEW按段拆分TDMS文件的格式边界与重构
开发语言·数据库·重构·labview·labview知识·labview功能·labview程序
程序员-Benothing1 小时前
什么是数据全量同步和增量同步?它们各有什么优缺点?
数据库
数据知道2 小时前
白盒审计入门:Source Code Review 检查清单
网络·安全·网络安全·代码复审
秋名山码民2 小时前
拙见AI——AI操作系统
数据库·人工智能