buu web:EasySQL(MySQL堆叠注入)

打开靶机,发现是一个查询框

输入1,提交,有回显

输入1',提交,没有回显,应该是没有显示报错信息,那么报错注入就行不通了

然后就是联合查询,时间盲注,布尔盲注,堆叠注入等一顿输出,发现除了堆叠之外,其他基本上都是有过滤的,如下

那我们就用堆叠呗,输入1';show databases;,发现没回显,难道是数字型注入?输入1;show databases;,果然成功爆出数据库

 接下来看看当前数据库下有哪些表,1;show tables;

flag应该就在这里了,但是过滤了from等一堆关键字,测试了一下,连handler语句都过滤了,怎么才能拿到里面的内容呢? 到这里又不会了,小伙子,还得练啊。看了一下别人的wp,才知道知道题的关键是猜测后端的sql语句,如下

1.非零数字有回显,0没有回显,说明里面应该有'||'这样的字符

2.题目一定有方法让我们查到flag,所以内置语句应该是这样:select (输入的数据)||flag from Flag;

(其实笔者很疑惑为什么这都能猜出来,应该不是我菜吧(滑稽))

当我们输入*,1时,查询语句应该是select *,1||flag from Flag,也就是select *,1 from Flag,成功爆出表里的内容

 猜出了语句后,大佬们还有另一个骚操作,利用sql_mode(它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的 PIPES_AS_CONCAT 将 || 视为字符串的连接操作符而非 "或" 运算符)来改变'||'的作用,从运算符变成连接符,之后输入1就查询语句就是这样的:select 1,flag from Flag,就能够同时查出1和flag的数据

payload:1;set sql_mode=PIPES_AS_CONCAT;select 1

查询语句就变成select 1;set sql_mode=PIPES_AS_CONCAT;select 1,flag from Flag

 牛!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值