php - 關於sql注入和xss的具體實例分析
高洛峰
高洛峰 2017-06-13 09:22:07
0
3
1926

一個月前我的個站被攻擊了,然後今天收到了一份來自360的漏洞檢測報告,我的天360還乾這種事?

  • sql注入
    漏洞連結1:
    http: //xxx.com:80/index.php?alias=message&action=comment?comment-diary-id=1&comment-ip=182.118. 33.8&comment-author=88888&comment-email=hacker@hacker.org&comment-url=http: //www.hacker.org/&comment-text=88888&comment-submit=SEND&comment-parent=0 RLIKE (SELECT (CASE WHEN (4725 ) THEN 0 ELSE 0x28 END))
    漏洞連結2:
    http: //xxx.com:80/index.php?alias=message' AND SLEEP(5)
    # 漏洞連結3:
    http: //xxx.com:80/index.php?cat=note' AND 'dSob'='dSob

  • xss
    漏洞連結:
    http: //xxx.com:80/admin/login.php?req_url=/admin/index.php"><script>alert(42873 )</script>

#我在寫入資料庫時有使用addslashes為什麼還會被注入?連結1和連結2要合在一起才會被注入嗎?
對於第二個漏洞,我不太清楚該怎麼防禦。
對站點安全研究不深入,請教大家給分析一下這是怎麼實現的,以及如何修復漏洞,謝謝。
如果需要寫入資料庫的程式碼我再貼上。

PS,寫連結會被sf自動縮短,所以在http:後面都加了個空格。


debug過了,的確是可以注入...對sql還是不夠了解

最終寫入資料庫的語句是:

insert into comment values(NULL,1,1497261734,'88888',0,'hacker@hacker.org','http://www.hacker.org/','182.118.33.8','88888',0 RLIKE (SELECT (CASE WHEN (4725=4725) THEN 0 ELSE 0x28 END)) AND SLEEP(5)%20%23);

想請教最後一句是什麼意思

0 RLIKE (SELECT (CASE WHEN (4725=4725) THEN 0 ELSE 0x28 END)) AND SLEEP(5)%20%23
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(3)
Ty80

xss 巢狀html腳本程式碼,參數應該轉為html實體。函數htmlspecialchars

連接1係透過輸入mysql的關鍵字去進行mysql如今,應該需要將關鍵字過濾。

當然其實所有防止注入最好的方式就是用預處理! ! ! !

洪涛
  1. 最好使用參數化查詢,而不是使用SQL語句拼接的方式。

  2. xss可以透過參數過濾,將類似這樣的腳本程式碼過濾掉。

我想大声告诉你

你這程式碼完全沒過濾啊

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板