ホームページ 運用・保守 安全性 sqlmap処理署名暗号化の考え方

sqlmap処理署名暗号化の考え方

May 14, 2023 am 11:52 AM
sign sqlmap

我对公司的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処理署名暗号化の考え方sqlmap処理署名暗号化の考え方

使用SQLMAP进行测试,发现无法测试。
sqlmap処理署名暗号化の考え方于是我使用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処理署名暗号化の考え方

上面是生成payload和sign的过程,下面是我请求一个payload报错的过程。

sqlmap処理署名暗号化の考え方

sqlmap処理署名暗号化の考え方

以上がsqlmap処理署名暗号化の考え方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Excel で SIGN 関数を使用して値の符号を判断する方法 Excel で SIGN 関数を使用して値の符号を判断する方法 May 07, 2023 pm 10:37 PM

SIGN 関数は、Microsoft Excel に組み込まれている非常に便利な関数です。この関数を使用すると、数値の符号を調べることができます。つまり、数値が正であるかどうかです。 SIGN 関数は、数値が正の場合は 1 を返し、数値が負の場合は -1 を返し、数値が 0 の場合は 0 を返します。当たり前すぎるように思えますが、多くの数値が含まれる大きな列があり、すべての数値の符号を見つけたい場合は、SIGN 関数を使用すると、数秒で作業を完了することができ、非常に便利です。この記事では、Excel ドキュメントで SIGN 関数を簡単に使用して数値の符号を計算する 3 つの方法を説明します。この素晴らしいトリックをマスターする方法を学びましょう。起動する

Sqlmap 自動インジェクションのサンプル分析 Sqlmap 自動インジェクションのサンプル分析 May 13, 2023 pm 03:31 PM

sqlmap を使用して dvwa へのインジェクションを自動化し、dvwa レベルを低く設定し、dvwa の SQLInjection (SQLInjection(Blind)) を開き、ブラウザーのデバッグを開き、ユーザー ID を入力して送信し、インターセプトされた要求を表示します。これは GET リクエストである URL「http://192.168.1.222:8089/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#」であることがわかります。これをテストするために salmap に直接入れます。 - u コマンド -u"http://192.168.1.22

sqlmap を使用して問題を分析する方法 sqlmap を使用して問題を分析する方法 May 27, 2023 pm 01:07 PM

0x00 概要 最近、sqlmap インジェクション テストを使用しているときに、上位バージョンの sqlmap ではインジェクションを検出できないが、下位バージョンではインジェクションを検出でき、誤検知ではなくデータが枯渇するという奇妙な現象に遭遇しました。比較テストを行って sqlmap のソース コードを表示したところ、2 つの小さな穴が見つかりました。 0x01 シナリオ再現注入ポイント形式: json..."whereparams":[{"name":"keyWord","value":"test"}]} 注入可能なパラメータ:valuesqlmap コマンド:pythonsqlmap.py-rsqlpk.txt–フラッシュ-session-vvsqlmapv1.2.11 は を注入できません

SQLMap と SQLi インジェクション防御を分析する方法 SQLMap と SQLi インジェクション防御を分析する方法 May 11, 2023 pm 06:37 PM

パート 1: Sqlmap の使用 1.1 sqlmap の概要 1. SQL インジェクションの基本的なステートメントをいくつか説明しましたが、手動インジェクションは非常に面倒です. データを取得するには、強力な SQL インジェクション ツールである sqlmap を使用できます 2. sqlmap の概要 (1) # sqlmap は、SQL インジェクションの脆弱性とデータベースに接続されているサーバーを自動的に検出して悪用できるオープンソースの侵入テスト ツールです。非常に強力な検出エンジン、複数の機能を備えたペネトレーション テスター、データベース フィンガープリンティングによる基盤となるファイル システムへのアクセス、および帯域外接続を介したコマンド実行を備えています。公式 Web サイト: sqlmap.org(2)#サポートされるデータベース: MySQL、Oracle、PostgreS

SQLMAPのオニオンモードプロキシとは何ですか? SQLMAPのオニオンモードプロキシとは何ですか? May 26, 2023 am 09:56 AM

外部 Web サイトへの侵入テストを行う必要があるため、ほとんどの Web サイトではアクセス頻度制御が行われており、この頻度を超えると、その IP は直接禁止されます。特に SQLMAP の実行中はさらに「おばさんっぽく」なり、SQLMAP の実行が終了する前にエラーが報告されて終了します。そこで SQLMAP のプロキシ モードについて勉強し始めたのですが、SQLMAP には通常のプロキシ (HTTP プロキシ) とオニオン プロキシの 2 つのプロキシ モードがあります。当初は通常のエージェントの適用について書きたかったのですが、Baidu はこの記事が十分に詳細であると判断し、くだらない話をやめました。 Sqlmap 拡張 - 外部 IP プロキシ プールの実装 オニオン プロキシに焦点を当てましょう。当初、オニオンがインジェクションに直接使用されていたとき、「赤おばさん」レポートはありませんでした。その後、侵入 Web サイトの数が増加するにつれて、

sqlmap 時間ベースの注入の分析を実装する方法 sqlmap 時間ベースの注入の分析を実装する方法 May 12, 2023 pm 12:10 PM

1. はじめに SQL インジェクションを検出するにはどうすればよいですか?私の答えは、「当事者 A がセキュリティを行っている場合、SQL インジェクションの検出は比較的簡単に実行できる」です。 1) エラー挿入の検出。 2) 誤検知が比較的多いため、ブール値エラー レポートを挿入しないでください。 3) 時間ベースのタイム インジェクションを実行し、低速ログ データベース レコードを作成するための操作とメンテナンスに連絡し、スリープを監視し、ベンチマーク キーワードを監視します。位置付けを容易にするために、スリープ時間の小数点にスキャン タスクの ID 番号を追加できます。 (追記: この方法で SQL インジェクションの 99% を見つけることができます) したがって、時間ベースのタイム インジェクションを行う場合、私は時間エラーを非常に厳しく制限します。ただし、@chengable は、t に基づいて、パーティ B でセキュリティ関連の作業を行っています。

sqlmap _dns インジェクション構成方法とは何ですか? sqlmap _dns インジェクション構成方法とは何ですか? May 12, 2023 pm 12:25 PM

インターネット上には、sqlmap の DNS インジェクションに関する関連記事が少なすぎます。--dns-domain パラメーターについて簡単に紹介しているだけです。関連する実用的な記事は曖昧であるか、一度に言及されており、混乱を招きます (主に不正直、重要なのはまだビッグボスではありません)。そこでネット上の方法を参考に再度やってみました。準備する必要があるものには、1 つの sqlmap、Windows ブラインド インジェクション、2 つのドメイン名、および外部ネットワーク サーバーが含まれます。ある時、何かをしていた時にタイムブラインドインジェクションに出会い、たまたまWindowsマシンだったのでDNSインジェクションの方法を思い出しました。開始する前に、sqlmap の --sql-shell コマンドを使用して、DNS インジェクション ペイロードをテストする予定です。まず、burpsuite に移動します。

sqlmap処理署名暗号化の考え方 sqlmap処理署名暗号化の考え方 May 14, 2023 am 11:52 AM

同社のアプリをテストしたところ、すべてのパラメーターの内容に 32 ビット文字が追加され、最終的に MD5 暗号化が実行されていることがわかりました。 APPの処理プロセスでは最初に署名が正しいかどうかを検証するため、署名検証に失敗するとデータベースにまったく入れなくなりますが、それをテストするためにSQLMAPを使用するために、プロキシデータ用のスクリプトを作成しました。データ パケットでは、そのパラメータの内容と 32 文字の暗号化された置換が実行されます。注: このスクリプトは、暗号化プロセスを知ることができたり、フロントエンド JS の暗号化方式を取得したりできるため、企業の内部システムに適しています。まず、会社のシステムをシミュレートするために、Django を使用して POST ID とトークンを取得し、カスタムの暗号化単語を追加するプログラムを作成しました。

See all articles