事件起因:某學校群聊又有人被騙瞭,發瞭類似這樣的內容,點進去一看就是偽裝成QQ郵箱或者QQ空間後臺的網站,騙取QQ號碼。隨便填寫賬號密碼後,有一個假的學籍查詢表單,讓你填一些敏感信息啥的(黑入後臺後發現居然真有人寫瞭,汗)。突然心生一意:要不試試SQL註入看看?過程1、分析後臺接口直接瀏覽器F12,點開網絡,然後隨便輸個賬號密碼,點登錄,就抓到登錄接口瞭。負載payload裡可以看到請求的參數為u、p、step三個參數,此處圖片就不展示瞭。2、利用apipost或者postman,嘗試對後臺進行SQL註入: 設置u為‘and 1=1 即出現select的報錯提示:再設置為'and 1=1 #10086,此時出現insert插入失敗的提示看來後臺是先select一遍數據庫確定該用戶此前不存在,再insert到數據庫裡的。從insert內容可以看出會記錄ip和地址等信息,因此單ip下發送大量垃圾信息也可以輕松過濾掉。3.既然有個select 那自然有很大的操作空間關於如何註入,可以看:(SQL註入實戰之報錯註入篇(updatexml extractvalue floor)_bckBCK的博客-CSDN博客_updataxml報錯註入SQL註入之PHP+Mysql – Byskkip – 博客園 (cnblogs.com)SQL註入-攻入Apple ID釣魚網站實錄 – msp的昌偉哥哥 – 博客園 (cnblogs.com)我使用以下SQL註入套取信息(替換用戶名參數如下):' and updatexml(1,concat(0x7e,(select database()),0x7e),1) — 1008611以上這條可以套取到database()的信息,套取出來結果是d149同理替換select database()為其他語句可以套出MySQL版本信息,本人套出來為5.6根據此前套出來的select和insert語句還可以套出來cc_users表中的其他信息,操作如下:' and updatexml(1,concat(0x7e,(select group_concat(username) from d149.cc_users),0x7e),1) — 1008611
需要使用concat語句連接查詢結果,否則會因為子查詢的row數量>1而報錯。或者使用limit語句,一個一個的套出來也可以。我嘗試使用drop table cc_users.報錯。註意默認情況下能套出來的信息長度有限制,不能直接全部套出來,隻能套一點點。隻有這些內容當然沒什麼用,我打算用SET語句SET GLOBAL group_concat_max_len = 10240
修改concat語句默認的長度,但是報錯。嘗試獲取information_shcema.tables或information_schema.columns,來套取其他表或其他列的信息,結果請求不響應瞭,看來後臺有防備啊。4.重磅的來瞭:群裡有位大佬直接套出瞭整個網站的源代碼怎麼套的?直接原網站後面加上某個神秘數字.rar,下載下來就是源碼….結構大概如下:其中有幾個重要文件:1.根目錄login.php wap文件夾下的login.php 偽造的登錄頁面。裡面可以直接看到後臺所執行的SQL語句。2.config文件夾下的_config.php文件包括數據庫名稱設置,用戶名設置,密碼設置,可以看到數據庫表的前綴為cc_3.重點之一:通過搜索cc_users關鍵字,找到瞭數據庫備份所在的文件夾:config/sbak/bdata,其下有一個文件夾,內部居然是全部的數據庫備份!完整的數據庫建表SQL赫然在內。分析可知管理員表名稱為cc_admins,內有f_userName,f_psw兩個字段,分別對應賬號、密碼。還有一個f_userPwd,應該是密碼MD5加密後的結果。4.重點來瞭通過搜索admin關鍵詞,鎖定瞭以下文件:d141/admin.php這就是整個系統的後臺直接在瀏覽器裡域名+d141/admin.php,報瞭404?考慮到此前套出來數據庫名字為d149,訪問域名+d149/admin.php,成功進入後臺登錄頁面!5.套取管理員賬號和密碼此前通過分析源碼已經得知管理員表名稱和結構,直接通過以下SQL套取關鍵信息:' and updatexml(1,concat(0x7e,(select group_concat(f_userName) from d149.cc_admins),0x7e),1) — 1008611
' and updatexml(1,concat(0x7e,(select group_concat(f_psd) from d149.cc_admins),0x7e),1) — 1008611
' and updatexml(1,concat(0x7e,(select group_concat(f_userPwd) from d149.cc_admins),0x7e),1) — 1008611
套取出來的信息居然和前面數據庫備份的信息一模一樣。(userPwd由於過長,後面有個字母f沒套出來)直接利用用戶名和密碼,成功進入後臺:後臺可以直接看到數據庫中的內容,由於此前已經被我刪庫過一輪,所剩信息已經不多。但是可以看到仍然有幾位同學上當受騙,甚至填寫瞭自己包括自己父母的真實信息,包括手機號,沒刪庫前這樣的信息大概有一百多條。點擊刪除按鈕,就刪除瞭一條記錄那肯定不能這樣一條一條點呀,能不能SQL註入呢?答案是可以。F12查看網絡,可以發現刪除的url如下:/users.php?act=delete&user_id=1234GET請求,可以直接在瀏覽器中輸入分析源代碼中相關語句直接後面拼接上or 1=1變成/users.php?act=delete&user_id=1234 or 1=1瀏覽器地址欄中輸入,回車,可以看到整個資料已經全部被清空(瀏覽器會自動把空格轉為%20)後臺還可以進行修改密碼、設置網頁標題等操作。改密碼什麼的事情就不幹瞭,就這樣吧。嘗試ssh連接後臺linux服務器,嘗試mysql遠程連接數據庫均失敗。最後決定就SQL註入刪庫就好瞭,其他事就不幹瞭。6.後記希望大傢提升安全意識,不要在來歷不明的網站隨便輸入自己的真實信息!尤其是QQ群裡發的一些什麼教務處通知啥的,千萬不要點擊。即使有這種網站,一定要檢查是否官方網站,是否https,是否境外網站(可以去站長之傢等查詢網站的信息),一般這種網站的域名都是奇奇怪怪的,並且IP都位於海外。盜號網站源碼不放出,以免有人利用源碼禍害更多人。SQL註入這種操作在Java的ORM框架下(mybatis等)基本失效,但是仍然是一個值得關註的安全問題,稍有不慎就會被套出全部信息,平時一定要註意。最後正告原作者:你用的CN域名,可以直接查到你的姓名。還能查到你名下其他的域名。請立即停止你的行為,既然是CN域名必然備案,你應該也知道這樣做的後果。希望不要等落網瞭才知道後悔!本文來自https://www.cnblogs.com/6543×1/p/16047181.html
本文出自快速备案,转载时请注明出处及相应链接。