我被分配到我公司的一个遗留 Web 应用程序,在研究源代码一两天后,我发现了一个类似于以下内容的 SQL 注入(inject)向量:
mysql_query("SELECT * FROM foo WHERE bar='" . $_GET['baz'] . "'");
我已经尝试对此执行 SQL 注入(inject)测试,但由于 PHP 的 magic_quotes_gpc 模块被打开而失败了。
我知道 magic_quotes_gpc 脏,但我们有数百(如果不是数千)行代码与上面的代码类似。我们根本无法关闭 magic_quotes_gpc,因为这会让像这样的代码容易受到攻击。
我想知道上面的代码有多“可利用”,我们是应该立即修复它,还是将修复它的任务与我们的其他重构任务一起进行。
最佳答案
从 magic_quotes_gpc 转移网站的常用方法是添加包装函数:
function m($s) {
if (get_magic_quotes_gpc())
$s= stripslashes($s);
return mysql_real_escape_string($s);
}
mysql_query("SELECT * FROM foo WHERE bar='".m($_GET['baz'])."'");
这将解决 addslashes 无法识别字符集的问题,这会导致它在某些情况下容易受到攻击,并且通常会使代码像以前一样继续“工作”。
但是,从长远来看,依赖输入转义是不可持续的,因为它会将斜杠乘以您未插入数据库的输入字符串,并且无法转义您从其他来源插入数据库的字符串。这就是 magic_quotes_gpc 错误的真正原因:它将输出级编码应用于输入级。
因此添加包装函数,然后慢慢更新所有 SQL 插值以使用它。当您获得所有这些后,您可以关闭魔术引号。
关于PHP magic_quotes_gpc 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2127028/
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相
所以我正在使用acts_as_taggablegem提供的标签。这些帖子是我正在标记的内容。我怎么能说类似=>的东西(这里是伪代码)ifacollectionofPostshasatagwithacorrespondingStockQuote,displaythestockquote所以现在我有一个acts_as_taggable的Post资源。这是我的帖子索引操作现在的样子:defindex@stock=StockQuote::Stock.quote("symbol")ifparams[:tag]@posts=Post.tagged_with(params[:tag])else@po
我正在尝试将像Presentationabout"TestDrivenDevelopment"这样的字符串拆分成这样的数组:['Presentation','about','"BehaviorDrivenDevelopment"']我已经尝试过CSV::parse_line(string,col_sep:''),但这会导致['Presentation','about','BehaviorDrivenDevelopment']#I'mmissingthequoteshere我也尝试了一些正则表达式魔术,但我还是个初学者,没有成功。我想这对于专业人士来说很简单,所以也许有人可以指出我正确的
Ruby'ssafemode不允许通过潜在危险的操作使用受污染的数据。它的级别各不相同,0表示禁用,然后1-4表示安全级别。启用安全模式时可能存在哪些漏洞?您知道在启用安全模式时发给ruby程序的任何CVE编号吗?什么CWEViolations(或cwe系列)是否可以启用安全模式? 最佳答案 所有应用程序级别的漏洞都完全不受$SAFE级别的影响。不通过“不安全操作”的注入(inject)攻击,例如跨站点脚本和SQL注入(inject)。这或多或少包括Web应用程序的每个漏洞类别,可能除了本地和远程文件包含。查看OWASPTop1
从文本中提取引用词/短语的最佳方法是什么?我的尝试无法正常工作:text.scan(/\"([^"]+)/) 最佳答案 我想你想要:text.scan(/"([^"]*)"/)它适用于Rubular. 关于ruby正则表达式:extracttextbetweenquotes,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4799644/
漏洞复现cms漏洞环境搭建漏洞复现cms1.内容管理系统(contentmanagementsystem,CMS),是一种位于WEB前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。2.常见的cms系统国外的:Wordpress,Drupal,Joomla,这是国外最流行的3大CMS。国内则是DedeCMS和帝国,PHPCMS等。漏洞环境搭建一、
我正在研究以下RubyKoan:classDog7attr_reader:namedefinitialize(initial_name)@name=initial_nameenddefget_selfselfenddefto_s__enddefinspect""endenddeftest_inside_a_method_self_refers_to_the_containing_objectfido=Dog7.new("Fido")fidos_self=fido.get_selfassert_equal"",fidos_selfenddeftest_to_s_provides_a_st
我有一个没有引号字符的TSV文件。每当数据中出现\t时,它总是分隔列,而不是列值的一部分。每当"出现时,它始终是列值的一部分,并且永远不会包含列值。我想用Ruby阅读这个CSV,但它给了我/Users/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/csv.rb:1925:in`block(2levels)inshift':Illegalquotinginline9506.(CSV::MalformedCSVError)我的代码是:CSV.foreach(input_file,{:col_sep=>"\t",:headers=>true})do|r
我在微博模型上创建了一个方法,它接受一个user_id数组。在此方法中,我使用以下“查找”方法来提取数组中所有用户的所有帖子。find(:all,:conditions=>["user_idIN(?)",args.join(',')])但是当ActiveRecord为这个查询生成SQL时,它用单引号将逗号分隔的ID列表括起来。这会导致查询只提取单引号内第一个数字的帖子,而不是所有数字。SELECT`microposts`.*FROM`microposts`WHERE(user_idIN('3,4,5'))ORDERBYmicroposts.created_atDESC查询应该看起来像这