testing

import requests

def GetHtml(url):
    try:
        r = requests.get(url,timeout=10)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "error!"

from bs4 import BeautifulSoup

def GetUrl():
    return input("input url:")
def TransHtml(txt):
    return BeautifulSoup(txt,"html.parser")

from urllib.parse import urljoin
from urllib.parse import urlparse
from urllib.parse import urlunparse
from posixpath import normpath

def LinkUrl(base,url):
    a_url = urljoin(base,url)
    arr = urlparse(a_url)
    path = normpath(arr[2])
    return urlunparse((arr.scheme,arr.netloc,path,arr.params,arr.query,arr.fragment))

import re
import subprocess

def cmdLine():
    level = input("execute level:")
    level = " --level=" + level
    risk = input("execute risk:")
    risk = " --risk=" + risk
    thread = input("run threads:")
    thread = " --threads=" + thread

    cmd = level + risk + thread + " -o"
    return cmd

def GetLink(obj,url):
    cmd1 = cmdLine()
    allink = set()
    for link in obj.find_all(re.compile('^a')):
        new_url = LinkUrl(url,link.get("href"))
        allink.add(new_url)
    for i in allink:
        cmd = "sqlmap -u " + i + " --batch --output-dir=~" + cmd1 + " > result.txt"
        subprocess.run(cmd,shell=True)
        print("testing " + i)
        with open("result.txt","r") as f:
            total = f.readlines()
            for item in total:
                if item.count("Type:")!=0:
                    print("exsit injection" + item)
                    with open("final.txt","a") as res:
                        info = i + item
                        res.write(info)
                    tmp = item
                if item.count("Payload")!=0:
                    with open("payload.txt","a") as payload:
                        p = i + tmp + item
                        payload.write(p)
    print("test over!")
    display_menu()

import sys

def choices():
    op = int(input("your option:"))
    if op == 1:
        url = GetUrl()
        demo = GetHtml(url)
        soup = TransHtml(demo)
        GetLink(soup,url)
    if op == 2:
        userinput = input("input params:")
        cmd = "sqlmap " + userinput
        subprocess.run(cmd,shell=True)
    if op == 3:
        sys.exit()

def display_menu():
    print("1.auto test")
    print("2.manual test")
    print("3.exit")
    choices()

if __name__=="__main__":
    display_menu()
原文地址:https://www.cnblogs.com/Asuhe/p/14248934.html