目錄
1.1變動:
任務面板
過濾條件面板
請求監聽段實作程式碼
任務執行段實作程式碼:
首頁 運維 安全 Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

May 12, 2023 pm 07:19 PM
sqlmapapi burpsuit

1.1變動:

增加過濾設定

#最佳化顯示結果

增加執行提示訊息

增加網域正規符合 

整個外掛程式分為三個面板:任務面板、sqlmapapi參數配置面板、過濾條件面板。

任務面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

Server : SQLmapapi服務的IP和連接埠

THREAD:同時偵測的任務數量

# Domain:需要偵測的域名,支援正規符合

CLEAN:清除任務快取清單

TEST:測試SQLmapapi的連線是否成功

START:開啟偵測   

左下為任務清單和任務狀態,右側按鈕下方是資訊提示區域,下方為請求詳情和掃描結果。

sqlmapapi參數配置面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

這裡的設定參考sqlmap的參數設定。

Tamper:清單中的是sqlmap自帶的tamper,輸入框中可填入自訂的tamper使用 」,「逗號分割 。

LogFile:設定掃描日誌記錄文件,該文文件儲存路徑為sqlmapapi伺服器上的路徑。

過濾條件面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

ExcludeSuffix:用來排除一些指定後綴的請求,使用正規則進行比對。例如:圖片、css、js等。

IngoreCase:對ExcludeSuffix進行限制是否區分大小寫,預設為不區分。

IngoreParams:在對請求進行重複性偵測時需要忽略的參數,使用」,「逗號分割,例如:請求中的隨機數timeStamp等。

ExcludeParams:在對請求進行篩選時如果存在該參數則不將該請求加入待測列表,例如:驗證碼checkCode等。

以上是根據這段時間在實際使用的過程中所做的一些修改,後續還會根據大家的建議進一步對該插件進行優化,謝謝大家的支持。

以下是程式中的一些程式碼以及實作想法:

請求監聽段實作程式碼

public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
        boolean addFlag = false;// 是否添加到扫描列表
        // 判断是否为request请求、开关是否打开
        if (messageIsRequest && sqlmapApiPanel.isStart()) {
            String host = helpers.analyzeRequest(messageInfo).getUrl().getHost();
            if (host.matches(targetDomian)) {
                IRequestInfo iRequestInfo = helpers.analyzeRequest(messageInfo);
                // 从?号处截断URL 可区分http 和 https
                String url = String.valueOf(iRequestInfo.getUrl());
                url = url.indexOf("?") > 0 ? url.substring(0, url.indexOf("?")) : url;
                // 排除指定后缀URL(eg : .jpg|.png|.ico)
                if (!excludeSuffix.matcher(url).matches()) {
                    // 构造任务实体
                    TaskEntity entity = new TaskEntity(iRequestInfo.getUrl(), //
                            iRequestInfo.getMethod(), //
                            callbacks.saveBuffersToTempFiles(messageInfo), //
                            iRequestInfo);
                    // 进行数据去重检测
                    String hash = bCrypt.hashpw(entity.getSignString(-1, ingoreParams), SALT);
                    Integer repeatCheckValue = 1;
                    if (String.valueOf(iRequestInfo.getHeaders()).indexOf("Chris-To-Sqlmap") != -1) {
                        if (repeatCheck.containsKey(hash)) {
                            repeatCheckValue = repeatCheck.get(hash) + 1;
                            hash = hash + repeatCheckValue;
                        }
                        addFlag = true;
                    }
                    // 检测当前数据包是否重复,检测当前数据包是否要根据参数可选过滤
                    else if (!repeatCheck.containsKey(hash) && !entity.hasParams(excludeParams)) {
                        // repeatCheck
                        if (!entity.getParamBody().isEmpty()) {// 检测post参数是否为空
                            addFlag = true;
                        } else if (!entity.getParamUrl().isEmpty()) {// 检测get参数是否为空
                            addFlag = true;
                        } else if (sqlmapApiOption.getLevel() >= 3 && !entity.getParamCookie().isEmpty()) {// level参数大于3是应检测cookie注入
                            addFlag = true;
                        }
                    }
                    if (addFlag) {
                        int row = listTasks.size();
                        repeatCheck.put(hash, repeatCheckValue);
                        listTasks.add(entity);
                        fireTableRowsInserted(row, listTasks.size());
                    }
                }
            }
        }
    }
登入後複製

任務執行段實作程式碼:

public void run() {
                while (true) {
                    if (!threadFlag) {
                        try {
                            sqlmapApiPanel.setMessage("Waiting.");
                            sleep(3 * 1000);
                        } catch (InterruptedException e) {
                            stderr.print(e.getMessage());
                        }
                        continue;
                    }
                    // 增加任务
                    if (runingTasks.size()  removeList = new ArrayList();
                        for (String key : runingTasks.keySet()) {
                            TaskEntity entityRuning = runingTasks.get(key);
                            String status = sqlmapapi.flushStatus(sqlmapapiServer, entityRuning);
                            sqlmapApiPanel.setMessage("Flash task [" + key + "] " + status + " .");
                            if ("terminated".equals(status)) {
                                entityRuning.setTaskStatus(status);
                                entityRuning.setTaskScanData(sqlmapapi.flushScanData(sqlmapapiServer, entityRuning));
                                sqlmapApiPanel.setMessage("Task [" + key + "] finished .");
                                removeList.add(key);
                            } else if ("not running".equals(status)) {
                                stderr.println(entityRuning.getTaskid() + " not running");
                                // entityRuning.setTaskEngineid(taskStart(entityRuning));
                            } else {
                                entityRuning.setTaskStatus(status);
                            }
                            try {
                                sleep(3 * 1000);
                            } catch (InterruptedException e) {
                                stderr.print(e.getMessage());
                            }
                        }
                        if (!removeList.isEmpty()) {
                            for (String key : removeList) {
                                runingTasks.remove(key);
                            }
                        }
                        fireTableRowsInserted(0, listTasks.size());
                    } else {
                        try {
                            sleep(3 * 1000);
                        } catch (InterruptedException e) {
                            stderr.print(e.getMessage());
                        }
                    }
                }
            }
登入後複製

以上是Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1660
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1259
29
C# 教程
1233
24