SQLMAP注入DVWA high level

1.SQLi

代碼分析

session-input.php:

<?php

define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';

dvwaPageStartup( array( 'authenticated', 'phpids' ) );

$page = dvwaPageNewGrab();
$page[ 'title' ] = 'SQL Injection Session Input' . $page[ 'title_separator' ].$page[ 'title' ];

if( isset( $_POST[ 'id' ] ) ) {
    $_SESSION[ 'id' ] =  $_POST[ 'id' ];
    //$page[ 'body' ] .= "Session ID set!<br /><br /><br />";
    $page[ 'body' ] .= "Session ID: {$_SESSION[ 'id' ]}<br /><br /><br />";
    $page[ 'body' ] .= "<script>window.opener.location.reload(true);</script>";
}

$page[ 'body' ] .= "
echo $page['body'];
<form action=\"#\" method=\"POST\">
    <input type=\"text\" size=\"15\" name=\"id\">
    <input type=\"submit\" name=\"Submit\" value=\"Submit\">
</form>
<hr />
<br />

<button onclick=\"self.close();\">Close</button>";

dvwaSourceHtmlEcho( $page );
?>

high.php:

<?php

if( isset( $_SESSION [ 'id' ] ) ) {
    // Get input
    $id = $_SESSION[ 'id' ];

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>Something went wrong.</pre>' );

    // Get results
    while( $row = mysqli_fetch_assoc( $result ) ) {
        // Get values
        $first = $row["first_name"];
        $last  = $row["last_name"];

        // Feedback for end user
        $html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);        
}

?>

一圖勝千言:

時(shí)序圖

漏洞利用

查詢(xún)頁(yè)面URL: http://127.0.0.1/DVWA-master/vulnerabilities/sqli/session-input.php
回顯頁(yè)面URL: http://127.0.0.1/DVWA-master/security.php
注意查詢(xún)頁(yè)面和回顯頁(yè)面不同,所以需要使用second-order參數(shù)進(jìn)行二階注入。
將POST請(qǐng)求的數(shù)據(jù)包保存至/home/e.txt采桃,使用sqlmap進(jìn)行注入如下圖:

sqlmap注入

2. SQL Blind Injection

代碼分析

cookie-input.php:

<?php

define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';

dvwaPageStartup( array( 'authenticated', 'phpids' ) );

$page = dvwaPageNewGrab();
$page[ 'title' ] = 'Blind SQL Injection Cookie Input' . $page[ 'title_separator' ].$page[ 'title' ];

if( isset( $_POST[ 'id' ] ) ) {
    setcookie( 'id', $_POST[ 'id' ]);
    $page[ 'body' ] .= "Cookie ID set!<br /><br /><br />";
    $page[ 'body' ] .= "<script>window.opener.location.reload(true);</script>";
}

$page[ 'body' ] .= "
<form action=\"#\" method=\"POST\">
    <input type=\"text\" size=\"15\" name=\"id\">
    <input type=\"submit\" name=\"Submit\" value=\"Submit\">
</form>
<hr />
<br />

<button onclick=\"self.close();\">Close</button>";

dvwaSourceHtmlEcho( $page );

?>

high.php:

<?php

if( isset( $_COOKIE[ 'id' ] ) ) {
    // Get input
    $id = $_COOKIE[ 'id' ];

    // Check database
    $getid  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $getid ); // Removed 'or die' to suppress mysql errors

    // Get results
    $num = @mysqli_num_rows( $result ); // The '@' character suppresses errors
    if( $num > 0 ) {
        // Feedback for end user
        $html .= '<pre>User ID exists in the database.</pre>';
    }
    else {
        // Might sleep a random amount
        if( rand( 0, 5 ) == 3 ) {
            sleep( rand( 2, 4 ) );
        }

        // User wasn't found, so the page wasn't!
        header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' );

        // Feedback for end user
        $html .= '<pre>User ID is MISSING from the database.</pre>';
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>
時(shí)序圖

setcookie()定義了 Cookie阱佛,會(huì)和剩下的 HTTP 頭一起發(fā)送給客戶(hù)端朝巫。 和其他 HTTP 頭一樣溃列,必須在腳本產(chǎn)生任意輸出之前發(fā)送 Cookie(由于協(xié)議的限制)食零。 請(qǐng)?jiān)诋a(chǎn)生任何輸出之前(包括 <html> 和 <head> 或者空格)調(diào)用本函數(shù)辜羊。

sql blind的查詢(xún)頁(yè)面與回顯頁(yè)面URL相同,因此直接使用burpsuite抓取時(shí)序圖中最后一次GET請(qǐng)求的數(shù)據(jù)包保存為a.txt斜友,最后使用Sqlmap進(jìn)行注入即可炸裆,如下圖:


sqlmap注入

部分Sqlmap參數(shù)介紹:

1.--second-order(二階sql注入)

有些時(shí)候注入點(diǎn)輸入的數(shù)據(jù)看返回結(jié)果的時(shí)候并不是當(dāng)前的頁(yè)面,而是另外的一個(gè)頁(yè)面鲜屏,這時(shí)候就需要你指定到哪個(gè)頁(yè)面獲取響應(yīng)判斷真假烹看。–second-order后面跟一個(gè)判斷頁(yè)面的URL地址。

2.-r

sqlmap可以從一個(gè)文本文件中獲取HTTP請(qǐng)求洛史,這樣就可以跳過(guò)設(shè)置一些其他參數(shù)(比如cookie惯殊,POST數(shù)據(jù),等等)虹菲。當(dāng)請(qǐng)求是HTTPS的時(shí)候你需要配合這個(gè)--force-ssl參數(shù)來(lái)使用靠胜,或者你可以在Host頭后面加上:443

3.–batch

用此參數(shù),不需要用戶(hù)輸入毕源,將會(huì)使用sqlmap提示的默認(rèn)值一直運(yùn)行下去

4--level

共有五個(gè)等級(jí)浪漠,默認(rèn)為1,最大為5霎褐,sqlmap使用的payload可以在xml/payloads.xml中看到址愿,你也可以根據(jù)相應(yīng)的格式添加自己的payload。

這個(gè)參數(shù)不僅影響使用哪些payload同時(shí)也會(huì)影響測(cè)試的注入點(diǎn)冻璃,GET和POST的數(shù)據(jù)都會(huì)測(cè)試响谓,HTTP Cookie在level為2的時(shí)候就會(huì)測(cè)試,HTTP User-Agent/Referer頭在level為3的時(shí)候就會(huì)測(cè)試省艳。

總之在你不確定哪個(gè)payload或者參數(shù)為注入點(diǎn)的時(shí)候娘纷,為了保證全面性,建議使用高的level值跋炕。

5.--risk

共有四個(gè)風(fēng)險(xiǎn)等級(jí)赖晶,默認(rèn)是1會(huì)測(cè)試大部分的測(cè)試語(yǔ)句,2會(huì)增加基于事件的測(cè)試語(yǔ)句,3會(huì)增加OR語(yǔ)句的SQL注入測(cè)試遏插。

在有些時(shí)候捂贿,例如在UPDATE的語(yǔ)句中,注入一個(gè)OR的測(cè)試語(yǔ)句胳嘲,可能導(dǎo)致更新的整個(gè)表厂僧,可能造成很大的風(fēng)險(xiǎn)。

測(cè)試的語(yǔ)句同樣可以在xml/payloads.xml中找到了牛,你也可以自行添加payload颜屠。

6.-p

sqlmap默認(rèn)測(cè)試所有的GET和POST參數(shù),當(dāng)--level的值大于等于2的時(shí)候也會(huì)測(cè)試HTTP Cookie頭的值白魂,當(dāng)大于等于3的時(shí)候也會(huì)測(cè)試User-Agent和HTTP Referer頭的值汽纤。但是你可以手動(dòng)用-p參數(shù)設(shè)置想要測(cè)試的參數(shù) 上岗。例如: -p "id,user-anget"

當(dāng)你使用--level的值很大但是有個(gè)別參數(shù)不想測(cè)試的時(shí)候可以使用--skip參數(shù)福荸。例如:--skip="user-angent.referer"

在有些時(shí)候web服務(wù)器使用了URL重寫(xiě),導(dǎo)致無(wú)法直接使用sqlmap測(cè)試參數(shù)肴掷,可以在想測(cè)試的參數(shù)后面加*敬锐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呆瞻,隨后出現(xiàn)的幾起案子台夺,更是在濱河造成了極大的恐慌,老刑警劉巖痴脾,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颤介,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赞赖,警方通過(guò)查閱死者的電腦和手機(jī)滚朵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)前域,“玉大人辕近,你說(shuō)我怎么就攤上這事∧渎ⅲ” “怎么了移宅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)椿疗。 經(jīng)常有香客問(wèn)我漏峰,道長(zhǎng),這世上最難降的妖魔是什么届榄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任浅乔,我火速辦了婚禮,結(jié)果婚禮上痒蓬,老公的妹妹穿的比我還像新娘童擎。我一直安慰自己滴劲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布顾复。 她就那樣靜靜地躺著班挖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芯砸。 梳的紋絲不亂的頭發(fā)上萧芙,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音假丧,去河邊找鬼双揪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛包帚,可吹牛的內(nèi)容都是我干的渔期。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼渴邦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疯趟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谋梭,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤信峻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瓮床,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盹舞,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年隘庄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踢步。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峭沦,死狀恐怖贾虽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吼鱼,我是刑警寧澤蓬豁,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站菇肃,受9級(jí)特大地震影響地粪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琐谤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一蟆技、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦质礼、人聲如沸旺聚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砰粹。三九已至,卻和暖如春造挽,著一層夾襖步出監(jiān)牢的瞬間碱璃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工饭入, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嵌器,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓谐丢,卻偏偏與公主長(zhǎng)得像爽航,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庇谆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當(dāng)給sq...
    xuningbo閱讀 10,308評(píng)論 2 22
  • sqlmap用戶(hù)手冊(cè) 說(shuō)明:本文為轉(zhuǎn)載岳掐,對(duì)原文中一些明顯的拼寫(xiě)錯(cuò)誤進(jìn)行修正凭疮,并標(biāo)注對(duì)自己有用的信息饭耳。 ======...
    wind_飄閱讀 2,048評(píng)論 0 5
  • sqlmap也是滲透中常用的一個(gè)注入工具,其實(shí)在注入工具方面执解,一個(gè)sqlmap就足夠用了寞肖,只要你用的熟,秒殺各種工...
    linkally閱讀 6,889評(píng)論 1 40
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理衰腌,服務(wù)發(fā)現(xiàn)新蟆,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • SQLMAP作用 判斷可注入的參數(shù) 判斷可以用哪種SQL注入技術(shù)來(lái)注入 識(shí)別出哪種數(shù)據(jù)庫(kù) 根據(jù)用戶(hù)選擇右蕊,讀取哪些數(shù)...
    陸灑脫閱讀 3,723評(píng)論 1 4