- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有很多关于addslashes 和mysql_real_escape 函数如何不安全地防止注入(inject)的讨论。事实是,甚至像 Wordpress 这样的大型框架或 CMS 也在使用这些功能,并且到目前为止它们做得很好。
我知道在使用GBK字符集时有一些特定的场景,或者可以使用utf8_decode来注入(inject)一些sql代码,或者一些简单的例子,比如1' OR 1 --
当涉及一个简单的地方时可以使用它。
然而,经过一些研究,如果字符集是 UTF-8,那么似乎很难将一些东西注入(inject)到一个简单的查询中,使用 addslashes 或 mysql_real_escape,让我们承认,这是最常见的情况。
所以,鉴于这个新手脚本,请提供一个 sql 注入(inject) POC(记住 UTF-8 字符集)
$mysql['username'] = addslashes($_POST['username']);
$mysql['password'] = addslashes($_POST['password']);
$sql = "SELECT *
FROM users
WHERE username = '{$mysql['username']}'
AND password = '{$mysql['password']}'";
最佳答案
更新 2 :
After further research , 之前的 MySQL 版本5.0.77 与 SET NAMES
结合使用时可能容易受到 GBK 问题的影响独自的。早先人们认为只有 5.0.22 及更早版本是易受攻击的。
这意味着如果您使用的是 5.2 之前的 PHP 版本,其中 mysql_set_charset
/mysqli_set_charset
被引入,您的代码在特定的、精心设计的条件下可能容易受到攻击。
如果您坚持使用 PHP 5.1,请确保您使用的是 MySQL 5.0.77 或更高版本。 5.0.77“只有”两年的时间,但已被推送到 RHEL/CentOS 5.x 的存储库中,这是更流行的发行版,坚持 5.0.x 系列的 MySQL 和 5.1.x 系列的 PHP。
升级吧,伙计们!
更新 1:Another recent question已揭开GBK东西的来源:A bugfix in MySQL 5.0.22 .当使用除 mysql_real_escape_string
以外的任何东西时,早于此的版本都非常容易受到攻击。结合 mysql_set_charset
而不仅仅是 SET NAMES
. mysqli 等效项名为 mysqli_set_charset
.
似乎没有 mysql_set_charset
的等效项在 PDO 中。这可能是因为它可以使用 MySQL 原生的预准备语句,这可能是免疫问题,或者是 SET NAMES
足以使其底层转义机制按预期工作。
无论如何,如果您使用任何 MySQL 5.0.22 5.0.77 之前的版本并没有特别注意确保您只传递已知字符集中的字符串 ,您可能会发现自己容易受到攻击。
我将保留原始帖子的其余部分未修改,但我已经更新了 tldr。
There is a lot of talk about how addslashes and mysql_real_escape function are not safe to prevent injections
addslashes
用于防止 SQL 注入(inject)是完全错误的,因为它不能保证为所有数据库提供正确的转义方法,主要是因为它添加了反斜杠,有时转义机制完全不同。
mysql_real_escape_string
当您需要将某些 SQL 连接在一起时,这是您获得的最佳保护之一。
I know there are some particular scenarios when using GBK charset, or utf8_decode can be used to inject some sql code
iconv
运行字符串与
//IGNORE//TRANSLIT
应该是足够好的保护(通常通过在错误序列点截断字符串,当您受到攻击时这是一种可接受的失败模式 - 格式错误的序列不应该出现在合法请求中)。
addslashes
完全不知道字符集,只处理原始字节。它会在序列中间粘贴一个反斜杠,然后将其炸毁。但是,这应该只会导致有关不良字符集信息的提示。
mysql_real_escape_string
另一方面,它是根据内置的连接字符集知识设计的,因此如果它看到序列而不是引号,它就不会转义序列。然而,因为它会将它识别为一个序列而不是一个引用,所以根本没有危险。
关于Php 和 Sql 注入(inject) - UTF8 POC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139127/
我希望得到您的指导和建议。我正在尝试为名为“支持请求贡献者”的 Azure RBAC 角色构建概念证明。这些是我在创建非管理员常规用户帐户并将该角色分配给订阅级别的帐户后计划进行的测试。 这个角色可以
关于lazyCSRF lazyCSRF是一款功能强大的Burp Suite插件,该工具可以帮助广大研究人员生成功能强大的CSRF(跨站请求伪造) PoC。Burp Suite是一个拦截HTTP
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 3年前关闭。 Improve this
有没有java的开源PoC服务器和客户端软件(框架)来管理SIP并支持RTP和RTCP,App Packet消息最好支持TBCP? 我们的项目是通过手机发送和接收实时语音和视频,并管理为参与者创建的
谁能举例说明我们为什么要使用线程池。 我从理论上知道如何将线程池与执行器一起使用。 我看了很多教程,但我没有得到任何关于为什么我们应该使用线程池的实际例子,它可以是 newFixedThreadPoo
我有点问题。我想了解 Hadoop 以及如何使用它来实时处理数据流。因此,我想围绕它构建一个有意义的 POC,这样当我必须在一些潜在雇主面前证明我对它的了解或在我现在的公司介绍它时,我可以展示它。 我
基本上,我正在线性回归模型上部署概念验证,以验证基于特定数据集的准确系数百分比。为了高级别的构建我的模型,我在数据集中应用了一种操作,以确保作为输入所需的所有列都是数字且正常。 数据集概述显示所有列都
有很多关于addslashes 和mysql_real_escape 函数如何不安全地防止注入(inject)的讨论。事实是,甚至像 Wordpress 这样的大型框架或 CMS 也在使用这些功能,并
我有一个现有的 ASP.NET MVC3 应用程序,现在想合并 ExtJs 主要用于制图,但以后会使用更多功能。我的架构中已经有一组 POCO 实体,并且希望它们都可用于基于 javascript 的
installing Mesosphere DC/OS on AWS 的说明使用最低配置指示的 CloudFormation 模板: You have the option of 1 or 3 Mes
这是我的路线构建器。在这里,我尝试将文件中的数据插入主题。稍后,我将传递我的主要方法并使用 Camel 上下文运行它。我尝试了几个代码,但没有一个对我有帮助。我正在研究 Apache kafka -
我是一名优秀的程序员,十分优秀!