发现 SQL 注入(inject)漏洞

标签 sql security url xss sql-injection

昨天我收到一封来自某人的电子邮件,说我们的网站容易受到 SQL 注入(inject)攻击。电子邮件说:

I tried some classic SQL injection on your server. This URL contains the result:

http://www.mysite.com/ppreview.php?id=611111161%20and%201=0%20UNION%20all%20SELECT%201,2,3,4,password,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,user_id,70,71%20%20from%20admin--&u=10064&t=users_cars

请注意,在上面的 URL 中,我没有公开我的实际域并将其替换为 mysite.com。

任何人都可以解释上面的 URL 是什么意思,因为我的网站很容易受到这种 url 的攻击,也可能会受到您的网站的攻击。<​​/p>

如何解码该 url,那里发生了什么?

最佳答案

问题是您将查询字符串上的 SQL 命令连接到您的 SQL 命令中。

大概你的代码是这样的

"select * from preview where ID=" + Request.QueryString["id"]

一旦你使用了那个QueryString,它就变成了

select * from preview where ID=611111161 and 1=0
UNION ALL
SELECT 1,2,3,4,password,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,user=id,70,71
FROM admin

EG:他让您的管理员帐户登录信息显示在您的预览页面上。

您应该始终确保对从用户那里获得的任何输入进行 SQL 转义,或者更好地使用参数化查询,服务器会处理这些。在不了解 SQL 服务器的语言或类型的情况下,我无法真正为您指明执行此操作所需代码的方向。

关于发现 SQL 注入(inject)漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795099/

相关文章:

android - 共享公钥的问题

rest - 公开记录开放 API 是一种好习惯吗?

Docker 中的安全配置文件 (docker build --security-opt)

eclipse - Apache Tomcat 或 Eclipse 重定向到本地主机 :8080/instead of localhost:8080/projectname/index. jsp

javascript - 如何操作正则表达式从文本返回 URL 数组?

mysql - 根据自定义条件清除重复行

mysql - 将不同查询的输出合并为单个查询输出

sql - 在 SQL 更新期间跳过过去的转换错误并继续的最佳方法是什么?

javascript - 如何使用路径设置正确的javascript路径

SQL根据条件插入现有表