欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用Google进行批量SQL注入扫描

来源:本站整理 作者:佚名 时间:2019-08-30 TAG: 我要投稿


0×01:简介
在使用GoogleHack进行SQL注入点查询时,手工的方法一般为通过谷歌语法的inurl判断是否存在动态查询参数,然后对查询的网站url进行手工判断是否存在SQL注入漏洞,如or 1=1 , or 1=2, 加单引号等方式。
在实际执行过程中,可以通过爬虫技术,定位谷歌搜索特定语句查询出的可能存在漏洞的URLS。并将这些URL通过IO写入文件中,方便执行后续的扫描工作。
这时候可能有观众要问,这个功能已经集成到了SQLMAP的谷歌模块中了,通过使用sqlmap -g 搜索语句就可以直接进行批量化扫描了。但是在笔者实际测试中发现,对英文字母的搜索语句如:https://www.google.com.hk/search?q=inurl:php?id= ,SQLMAP可以正确的进行查询,通过测试发现其测试的语句符合我们真实在谷歌环境中搜索到的网址。但是一旦我们有特殊的需求,如搜索特定地区的url,搜索存在中文字符的网站内容的url如:
https://www.google.com.hk/search?q=inurl:php?id= -site:stackoverflow.com -site:php.net intext:王小强
则SQLMAP会自动过滤intext语句中的中文,返回不加过滤后的结果。
在实际测试中,英文字母的intext不受影响。
基于此,我们可以使用Python爬虫获取到谷歌搜索的URL生成TXT文件,在使用SQLMAP(或其他SQL扫描工具),进行二次扫描。
0×02:Python爬虫爬取链接
由于谷歌对敏感语句的安全措施,首先要设置代理池和定制头
代码如下:
import requests
from lxml import etree
import io
import sys
proxies = { "http": "http://142.93.130.xxx:8118", "https": "http://31.220.51.xxx:80" }
headers={
'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'accept-encoding':'gzip, deflate, sdch, br',
'cache-control':'max-age=0',
'upgrade-insecure-requests':'1',
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0',
'Referer': 'https://www.google.com.hk/',
//cookie可加可不加
r=requests.get('https://www.google.com.hk/search?q=inurl:php?id= -site:stackoverflow.com -site:php.net intext:王小强&lr=lang_zh-CN&num=5000',headers=headers,)
然后使用requests库请求谷歌的搜索语句
r=requests.get('https://www.google.com.hk/search?q=inurl:php?id= -site:stackoverflow.com -site:php.net intext:王小强&lr=lang_zh-CN&num=5000',headers=headers,)
其中对lr标签设置可以只返回中文结果。
然后使用xpath定位我们需要的结果的DOM地址
e=etree.HTML(r.text)
# print(e.xpath('//div/node()'))
name=e.xpath('//h3[@class="LC20lb"]/node()')
url=e.xpath('//cite[@class="iUh30"]/node()')
# print(name)
# print(url)
filename='ip.txt'
with open(filename,'w',encoding='utf-8') as f:
    for i in url:
        f.write(i+'\n')
# print(name)
# print(url)
class的名字可以根据实际情况中的结果进行更改。
最后将结果写入txt文件中即可。
0×03:Url存活性检验
在实际中我们发现,这样得到的IP地址有很多是没有响应的,如果对所有的地址进行扫描,会非常费时费力,我们要进行二次过滤,使用Python批量对地址进行请求, 过滤掉不响应或响应过慢的网页。
具体代码实现如下
import socket
import asyncio
import sys
import queue
import threading
import requests
iplist=[]
class socket1():
    def __init__(self,i):
        self.i=i
        # print(target)
    def scan(self,ip,i):
        # print("start scan")
        # print(s.connect_ex((self.target,80)))
        # for i in range(1,100):
            # print(i)
        s=requests.get(ip,timeout=6)
        if s.status_code==200:
            # print(ip,'open')
            iplist.append(ip)
    def worker(self,q):
        while not q.empty():
            ip=str(q.get())
            if ('http' or 'https') in ip:
                ip=ip
            else:
                ip='http://'+ip
            print(ip)

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载