SQL注入讀書筆記

以下內(nèi)容來自《白帽子講web安全》一書

Step

  1. 查找注入點

  2. 輸入單引號',如果Web服務(wù)器開啟了錯誤回顯惊豺,那定是極好的,可以給我們提供很多有用的信息揩页,如果沒有錯誤回顯烹俗,我們可以通過盲注來判斷是否可以注入。

    • 比如數(shù)字型注入http://newspaper.com/items.php?id=2我們構(gòu)造http://newspaper.com/items.php?id=2 and 1=2兔仰,這里后面永遠是假蕉鸳,所以我們會看到頁面是空或者是出錯的頁面。

    • 接下來无虚,再來驗證這一點,構(gòu)造http://newspaper.com/items.php?id=2 and 1=1友题,如果此時頁面正常返回了,那么就可以判斷id參數(shù)存在SQL注入了度宦。

    • 盲注中一個非常隱蔽的技巧:TimingAttack戈抄。

      • 在MySQL中有一個BENCHMARK(count,expr)函數(shù),它是用于測試函數(shù)性能的划鸽。它將表達式expr執(zhí)行count次。我們可以利用這個函數(shù)嫂用,讓它執(zhí)行若干次丈冬,使得結(jié)果返回的時間比平時要長;通過時間長短的變化往弓,來判斷注入語句是否執(zhí)行成功蓄氧。

      • 在不同的數(shù)據(jù)庫中都有著類似BENCHMARK()的函數(shù)匀们。

      • MySQL BENCHMARK(10000000,md5(1)) or SLEEP(5)
        PostgreSQL PG_SLEEP(5) or GENERATE_SERIES(1,1000000)
        MS SQL Server WAITFOR DELAY '0:0:5'
  1. 常見的注入攻擊技巧
    • 判斷數(shù)據(jù)庫對應(yīng)版本、表的結(jié)構(gòu)重抖、username祖灰、password等一系列信息,雖然可以通過手工一次次判斷局扶,但是使用工具是更明智的選擇,比如sqlmap.py
    • 讀寫文件的技巧畜埋,比如在MySQL中悠鞍,可以通過LOAD_FILE()讀取系統(tǒng)文件,并通過INTO DUMPFILE寫入本地文件咖祭。當然這要求當前數(shù)據(jù)庫用戶有讀寫系統(tǒng)相應(yīng)文件或目錄的權(quán)限么翰。
      • .....union select 1,1, LOAD_FILE('/etc/passwd'),1,1;
      • 如果要將文件讀出后牺汤,再返回給攻擊者浩嫌,則可以將系統(tǒng)文件讀出、寫入系統(tǒng)固该、然后通過LOAD DATA INFILE將文件導(dǎo)入常見的表中糖儡,最后就可以通過一般的注入攻擊技巧直接操作表數(shù)據(jù)了伐坏。
      • CREATE TABLE protatoes(lline BLOB);
      • UNION SELECT 1,1,HEX(LOAD_FILE('/etc/passwd')),1,1 INTO DUMPFILE '/tmp/potatoes';
      • LOAD DATA INFILE '/tmp/potatoes' INTO TABLE potatoes;
      • 除了INTO DUMPFILE握联,還有INTO OUTFILE,兩者區(qū)別是前者是用于二進制文件金闽,它會將目標文件寫入同一行內(nèi);二后者更適用于文本文件代芜。
    • 命令執(zhí)行:在MySQL中,除了可以通過導(dǎo)出webshell間接地執(zhí)行命令挤庇,還可以利用“用戶自定義函數(shù)”技巧,及UDF(User-Defined Functions)來執(zhí)行命令嫡秕。原理是在流行的數(shù)據(jù)庫中,一般都支持從本地文件系統(tǒng)中導(dǎo)入一個共享庫文件作為自定義函數(shù)昆咽,使用如下語法可以常見UDF
      • CREATE FUNCTION f_name RETURNS INTEGER SONAME shared_library
      • 有研究者給出了代碼可以通過UDF執(zhí)行系統(tǒng)命令牙甫,但是這段代碼在MySQL 5及后版本中受到限制。但是我們也可以用另一種方法——通過lib_mysqludf_sys提供的幾個函數(shù)執(zhí)行系統(tǒng)命名窟哺,其中最主要的是sys_eval()sys_exec()技肩。
        • sys_eval 脏答,執(zhí)行任意命令亩鬼,并將輸出返回。
        • sys_exec 雳锋,執(zhí)行任意命令,并將退出碼返回玷过。
        • sys_get ,獲取一個環(huán)境變量辛蚊。
        • sys_set ,創(chuàng)建或修改一個環(huán)境變量袋马。
      • 自動化注入工具已經(jīng)集成了此功能。
        • python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_init.php?id=1" --os-cmd id -v 1
    • 攻擊存儲過程:存儲過程位數(shù)據(jù)庫提供了強大的功能虑凛,它與UDF很像,但存儲過程必須使用CALL或者EXECUTE來執(zhí)行桑谍。在MS SQL Server和Oracle數(shù)據(jù)庫中,都有大量內(nèi)置的存儲過程锣披。
      • 比較"臭名昭著"的有“xp_cmdshell”、“xp_regread”等雹仿。還有很多有幫助的存儲過程,詳細的在書中P164盅粪。
    • 編碼問題:當MySQL使用GBK編碼是,0xbf27和0xbf5c都會被認為是一個字符(雙字節(jié)字符)票顾。而在進入數(shù)據(jù)庫之前帆调,在Web語言中則沒有考慮到雙字節(jié)字符問題豆同,雙字節(jié)字符會被認為是兩個字節(jié)番刊。比如php中 addslashes() 函數(shù)影锈,或者當 magic_quotes_gpc 開啟時芹务,會在特殊字符前增加一個轉(zhuǎn)義字符 “\”鸭廷。因此,當攻擊者輸入:0xbf27 or 1=1辆床,經(jīng)轉(zhuǎn)義后會變成 0xbf5c27(\ 的ASCII碼為0x57),但0xbf57又是另一個字符讼载。因此原本會存在的轉(zhuǎn)義符號“\”,在數(shù)據(jù)庫中就被吃掉了咨堤。
    • SQL Column Truncation:MySQL中有一個sql-mode,當其被設(shè)置為 default 時一喘,即沒有開啟 STRICt_ALL_TABLES 選項時,MySQL對于用戶插入的超長值只會提示warning津滞,而不是error(如果error灼伤,則插入不成功)触徐,這可能會導(dǎo)致發(fā)生一些“截斷”問題狐赡。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颖侄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌览祖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件又活,死亡現(xiàn)場離奇詭異苔咪,居然都是意外死亡柳骄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門耐薯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曲初,你說我怎么就攤上這事【势牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵评汰,是天一觀的道長痢虹。 經(jīng)常有香客問我,道長奖唯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任丰捷,我火速辦了婚禮,結(jié)果婚禮上病往,老公的妹妹穿的比我還像新娘。我一直安慰自己停巷,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布蕾各。 她就那樣靜靜地躺著,像睡著了一般式曲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吝羞,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音脆贵,去河邊找鬼医清。 笑死卖氨,一個胖子當著我的面吹牛会烙,可吹牛的內(nèi)容都是我干的筒捺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼系吭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肯尺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤则吟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后氓仲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡晰洒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年啥箭,在試婚紗的時候發(fā)現(xiàn)自己被綠了谍珊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捉蚤。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缆巧,靈堂內(nèi)的尸體忽然破棺而出豌拙,到底是詐尸還是另有隱情陕悬,我是刑警寧澤按傅,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布捉超,位于F島的核電站,受9級特大地震影響拼岳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惜纸,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耐版。 院中可真熱鬧,春花似錦粪牲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亭引。三九已至,卻和暖如春痛侍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背主届。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留君丁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓绘闷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親印蔗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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