php - 关于sql注入和xss的具体实例分析
高洛峰
高洛峰 2017-06-13 09:22:07
[PHP讨论组]

一个月前我的个站被攻击了,然后今天收到了一份来自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=4725) THEN 0 ELSE 0x28 END))
    漏洞链接2:
    http: //xxx.com:80/index.php?alias=message' AND SLEEP(5)%20%23
    漏洞链接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)
PHP中文网

xss 嵌套html腳本代碼,參數應該轉為html實體。函數htmlspecialchars

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

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

PHP中文网
  1. 最好使用参数化查询,而不要使用SQL语句拼接的方式。

  2. xss可以通过参数过滤,将类似<script>这样的脚本代码过滤掉。

我想大声告诉你

你这代码完全没过滤啊

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号