一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

深入淺出玩轉(zhuǎn)SQL注入(含過狗下篇)

 jzpeter 2017-02-21

一、前言

這幾天在教同學(xué)web安全,其中就包括了sql注入。
原本我覺得很簡單的東西,到了他們眼里,變得很復(fù)雜。
這也引發(fā)我的思考,是不是應(yīng)該站在小白的角度,去解釋這個東西。
所以寫這個帖子,很長,有目錄,大家可以根據(jù)需求選擇的看

本文原創(chuàng)作者:sucppVK,本文屬i春秋原創(chuàng)獎勵計劃
(ps:不少童鞋對sql注入一知半解,自以為掌握了,就不屑于去學(xué)習(xí),這是很可怕的)
(ps:本教程基于mysql)
---------------------目錄-------------------------------------

  (上篇)

  • 數(shù)據(jù)庫操作與注入邏輯(不玩數(shù)據(jù)庫很難吃透sql注入)

  • SQL注入漏洞產(chǎn)生原因(徹底理解這個洞)

  • 顯注與盲注(怎么去玩這個洞)

    (下篇)

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

  • 用sqlmap來學(xué)習(xí)注入

  • 高級注入技巧(攻防演變)

  • 繞過WAF注入(干掉煩人的某狗)

---------------------------------------------------------------


二、正文

(接上篇)

-----------0x04.簡單使用sqlmap進(jìn)行漏洞利用---------------------------------------------------
sqlmap是一個很強(qiáng)大的sql注入工具
他是開源的,大家可以去看源代碼

簡單教程:
我的個人習(xí)慣,在sqlmap目錄下,創(chuàng)建一個bat文件
里面寫cmd
然后打開它:

假如,我找到了目標(biāo)站點(diǎn):
http://127.0.0.1/vkweb/exam/mysql/text.php?id=1
我會先手工簡單測試存不存在sql注入漏洞
id=1' and '1
id=1' and '0
發(fā)現(xiàn)前者有回顯,后者沒有
因此我斷定,這個地方,把我的輸入當(dāng)做代碼去執(zhí)行了
存在sql注入漏洞

然后就可以扔工具里跑了:
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1'

sqlmap發(fā)現(xiàn)了注入點(diǎn)
下一步輸入:
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1' --dbs
查找有什么數(shù)據(jù)庫:

接著,我想查test這個數(shù)據(jù)庫里,有什么數(shù)據(jù)表:
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1' -D test --table

最后就是邪惡的查表信息了,也就是所謂的脫褲:
這里,users看起來比較誘人,肯定查這個:
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1' -D test -T users --dump

sqlmap有時候會問你一些選擇,看不懂英文就去死吧

sqlmap很強(qiáng)大,命令很多
比如,有時候目標(biāo)網(wǎng)站會檢查訪問的ua,
sqlmap等的滲透測試工具是有自己的ua的

User-Agent: sqlmap/1.0-dev (http://)
這時候,人家能讓你訪問嗎?
所以就會超時,紅一大片,
這時候sqlmap提供--user-agent,--random-agent參數(shù),修改ua
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1' --user-agent='i am good man'

User-Agent: i am good man
--random-agent參數(shù),是隨機(jī)給你偽裝一個合法瀏覽器ua

功能很強(qiáng)大,這里就不一一介紹。
感興趣的可以去谷歌查一查。


-----------0x05.用sqlmap來學(xué)習(xí)sql注入---------------------------------------------------
我們是站在巨人的肩膀上的
sqlmap上集成了很多數(shù)據(jù)庫管理系統(tǒng)的注入方法,姿勢很多
用它來學(xué)習(xí)是再好不過的了。
兩種辦法:
1.用burpsuite,sqlmap那邊加上參數(shù)--proxy='127.0.0.1:8080',這樣所有請求都會經(jīng)過burpsuite
2.VK的獨(dú)門收集法(真的是我自己想出來的,也許有大牛早就想到了)
這個有局限性,必須自己搭環(huán)境:



<?php         header('content-type:text/html;charset=UTF-8');         $id = $_GET['id'];         $conn = mysql_connect('127.0.0.1','guest','123') or die('could not connect:'.mysql_error());         mysql_select_db('test',$conn) or die('can not use:'.mysql_error());         $sql = 'select * from users where id='{$id}'';         $cun = mysql_query($sql) or die(mysql_error());         echo ' ';         while($row = mysql_fetch_array($cun)){         echo 'user:'.$row['user'].' ';         echo 'gold:'.$row['gold'].' ';         echo '[object Object]';         };         if ($param = $_SERVER['QUERY_STRING']){                 $op = fopen('1.txt','a ');                 fwrite($op, urldecode($param).'\r\n');                 fclose($op);         }         mysql_close($conn);         echo '您當(dāng)前執(zhí)行的SQL語句:';         echo urldecode($sql); ?>

注意這里的:
if ($param = $_SERVER['QUERY_STRING']){
$op = fopen('1.txt','a ');
                fwrite($op, urldecode($param).'\r\n');
                fclose($op);
        }
他會把所有的參數(shù)記錄下來,保存到腳本目錄的1.txt下
sqlmap中輸入:
sqlmap.py -u'http://127.0.0.1/vkweb/exam/mysql/text.php?id=1' --purge-output
--purge-output  指令意思是,清除之前的探測歷史記錄,從新來過
因?yàn)槲覄偛乓呀?jīng)跑過這個站了
如果不清楚歷史記錄,他不會再一次進(jìn)行注入探測

清清楚楚,是不是很爽


-----------0x06.高級注入技巧---------------------------------------------------
寬字節(jié)注入:
PHP 5.3.0 之前默認(rèn)開啟魔術(shù)引號
所有的用戶輸入會自動加上函數(shù)addslashes()
輸入中的 '(單引號),'(雙引號),\(反斜線)和   NULL 字符都會被自動加上一個反斜線進(jìn)行轉(zhuǎn)義
例如:

你想輸入單引號閉合前面
很可惜,被反斜線殺掉了。。
導(dǎo)致你的輸入始終被單引號包裹,沒有逃出去當(dāng)做代碼去執(zhí)行

這樣就沒有漏洞了嗎?
如果數(shù)據(jù)庫采用的是gbk字符,那就存在缺陷
GBK 亦采用雙字節(jié)表示,總體編碼范圍為 8140-FEFE,首字節(jié)在 81-FE 之間,尾字節(jié)在 40-FE 之間
英文字母用一個字節(jié)表示綽綽有余,
但是咱們中華文化上下五千年,一個字節(jié)沒辦法表示
于是就用gbk,兩個字節(jié)來表示
這樣會有什么危害?

http://pubimage.360doc.com/wz/default.gif

http://pubimage.360doc.com/wz/default.gif


中轉(zhuǎn)注入(從cookie注入)
這個先講asp的
之前我就和某論壇的老大討論過。
他非要說,asp中轉(zhuǎn)注入,是把人家的站點(diǎn)弄到本地,人家那邊有過濾,你弄到本地就沒過濾了。。。
無語。。。。。

asp中轉(zhuǎn)注入,其實(shí)就是cookie中注入。
php中,用超全局變量$_GET,$_POST來接受參數(shù)
asp中,用Request.QueryString (GET) 或 Request.Form (POST)!來接收

有些程序員比較懶,直接這么寫
ID=Request('ID')
這時候asp并不知道,從get  還是post上接收參數(shù)
它就會一個一個去試!
它是先取GET中的數(shù)據(jù),沒有再取POST中的數(shù)據(jù),還會去取Cookies中的數(shù)據(jù)

程序員還會自己寫waf,可是他的waf是檢測get和post的數(shù)據(jù)
但是缺漏了cookie

因此,我們只需要把數(shù)據(jù)放在cookie里,就可以繞過waf的檢測
而且服務(wù)器也可以正常接收!

這就是中轉(zhuǎn)注入的真正原理。
舉個栗子:
www.foo.com/news.php?id=1
存在注入漏洞
可是人家有自己的waf,
輸入:id=1'
他就提示,請不要嘗試攻擊

測試漏洞:
地址欄輸入www.foo.com/news.php
回車
網(wǎng)頁本該有文章的地方空了,因?yàn)闆]有參數(shù)
清空地址欄
輸入:
[removed]alert([removed]='id=' escape(' 1 and 1=1--'));
這時候,你可以用firebug看看自己的cookie
多了個id=1 and 1=1--

(圖片只是表達(dá)cookie會多出這個值,并不是攻擊站點(diǎn))
[removed]是偽協(xié)議,告訴瀏覽器后面的代碼當(dāng)做js去解析
[removed]是取cookie這個對象
讓他='id=' escape(' 1 and 1=1--')

因此,把數(shù)據(jù)放在了cookie中,
asp在get和post中找不到數(shù)據(jù),就回去cookie中去找
然后就導(dǎo)致注入!

------------------------------小結(jié)-----------------------------------------
道理很簡單,我已經(jīng)把鐵和錘子給你了
能打造出什么樣的武器,就看你自己
sql注入產(chǎn)生的前提是要和數(shù)據(jù)庫交互

中轉(zhuǎn)注入只不過是,cookie接受參數(shù),沒過濾,然后和數(shù)據(jù)庫交互,而導(dǎo)致的漏洞罷了
php中也是一樣,如果他的cookie和數(shù)據(jù)庫交互,并且過濾不嚴(yán)謹(jǐn),一樣會導(dǎo)致漏洞


---------------0x07.繞過WAF注入---------------------------------------------------
現(xiàn)在的waf很多
某狗,某盾,云某。。。
過狗一句話在各大論壇經(jīng)常出現(xiàn)

但是過狗注入?yún)s很少更新
這一直是個敏感的話題
畢竟sql注入是個高威脅的漏洞
小公司沒精力去弄安全,只好弄個waf來保護(hù)網(wǎng)站
一旦waf被繞過,公司的數(shù)據(jù)就完全暴露在黑客面前。。。。

這里我先說兩點(diǎn):

  • 我肯定不會把直接過狗的方法說出來,但我會說怎么去找這個方法

  • 狗很好過,很弱!

為什么說狗很弱,這邊指的是什么規(guī)則都沒改過的狗
因?yàn)槿思腋惆踩a(chǎn)品的要考慮面向客戶,如果他的過濾規(guī)則太嚴(yán)格,那么很可能連正常的訪問網(wǎng)頁都會被攔截
如此一來,誰還用你的安全產(chǎn)品

還是用到這個腳本:

<?php         header('content-type:text/html;charset=UTF-8');         $id = $_GET['id'];         $conn = mysql_connect('127.0.0.1','guest','123') or die('could not connect:'.mysql_error());         mysql_select_db('test',$conn) or die('can not use:'.mysql_error());         $sql = 'select * from users where id='{$id}'';         $cun = mysql_query($sql) or die(mysql_error());         echo ' ';         while($row = mysql_fetch_array($cun)){         echo 'user:'.$row['user'].' ';         echo 'gold:'.$row['gold'].' ';         echo '[object Object]';         };         if ($param = $_SERVER['QUERY_STRING']){                 $op = fopen('1.txt','a ');                 fwrite($op, $param.'\r\n');                 fclose($op);         }         mysql_close($conn);         echo '您當(dāng)前執(zhí)行的SQL語句:';         echo urldecode($sql); ?>

記得這個是干什么的嗎?
他會把所有的請求,記錄在同目錄的1.txt里
這時候你去fuzz,用大量的payload去測試
看看1.txt里面有什么
就知道狗的弱點(diǎn)了
本人用這個方法找出好幾種過狗姿勢了
三、結(jié)束語
本人建議:學(xué)sql注入,最好還是去玩數(shù)據(jù)庫吧

(完結(jié))

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    婷婷伊人综合中文字幕| 91人妻人人揉人人澡人| 日本丁香婷婷欧美激情| 五月综合激情婷婷丁香| 国产一区一一一区麻豆| 国产不卡免费高清视频| 国产精品丝袜美腿一区二区| 久久热九九这里只有精品| 樱井知香黑人一区二区| 激情国产白嫩美女在线观看| 国产精品午夜小视频观看| 日韩精品中文字幕亚洲| 亚洲精品一区二区三区免| 成人精品一区二区三区综合| 日本久久中文字幕免费| 午夜久久精品福利视频| 国产内射一级二级三级| 精品人妻一区二区三区四区久久| 国产精品推荐在线一区| 精品人妻精品一区二区三区| 国产又大又黄又粗又免费| 激情偷拍一区二区三区视频| 又大又长又粗又黄国产| 欧美日本精品视频在线观看| 91人妻人人做人碰人人九色| 日韩成人动作片在线观看| 欧美一区二区三区喷汁尤物| 欧美一区二区三区喷汁尤物| 四季av一区二区播放| 久久99热成人网不卡| 国产午夜福利片在线观看| 日韩一区二区三区免费av| 男人的天堂的视频东京热| 丝袜人妻夜夜爽一区二区三区| 国产一区二区精品高清免费| 亚洲高清亚洲欧美一区二区| 91日韩欧美在线视频| 人妻久久一区二区三区精品99| 中文字幕日产乱码一区二区| 欧美一区二区三区不卡高清视| 精品人妻久久一品二品三品|