了解常见的php的sql注入式攻击_第1页
了解常见的php的sql注入式攻击_第2页
了解常见的php的sql注入式攻击_第3页
了解常见的php的sql注入式攻击_第4页
了解常见的php的sql注入式攻击_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——了解常见的php的sql注入式攻击了解常见的php的sql注入式攻击

在php开发网站的过程中,经常会遇到各种类型的攻击,譬如注入式攻击、多个查询的注入攻击等。就跟随我一起去了解下吧,想了解更多相关信息请持续关注我们我!

一、注入式攻击

当脚本正在执行一个SELECT指令,攻击者便可以强迫显示一个表格中的每一行记录-通过把一个例如1=1这样的条件注入到WHERE子句中,如下所示:

复制代码代码例如:

SELECT*FROMwinesWHEREvariety=lagreinOR1=1;

这本身可能是很有用的信息,由于它透露了该表格的一般布局这是一条普遍的记录所不能实现的,以及潜在地显示包含机密信息的记录。

一条更新指令潜在地具有更直接的要挟。通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子:

复制代码代码例如:

UPDATEwinesSETtype=red,vintage=9999WHEREvariety=lagrein

通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子:

复制代码代码例如:

UPDATEwinesSETtype=red,vintage=9999WHEREvariety=lagreinOR1=1;

最危害的指令可能是DELETE-这是不难想像的。其注入技术与我们已经看到的一致-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子:

复制代码代码例如:

DELETEFROMwinesWHEREvariety=lagreinOR1=1;

二、多个查询注入

多个查询注入将会加剧一个攻击者可能引起的潜在的损坏-通过允大量条破坏性指令包括在一个查询中。在使用MySQL数据库时,攻击者通过把一个出乎意料之外的终止符插入到查询中即可很轻易实现这一点-此时一个注入的引号单引号或双引号标记期望变量的结尾;然后使用一个分号终止该指令。现在,一个另外的攻击指令可能被添加到现在终止的原始指令的结尾。最终的破坏性查询可能看起来如下所示:

复制代码代码例如:

SELECT*FROMwinesWHEREvariety=lagrein;GRANTALLON*.*TOBadGuy@%IDENTIFIEDBYgotcha;

这个注入将创造一个新的用户BadGuy并赋予其网络特权(在全体的表格上具有全体的特权);其中,还有一个不祥的口令被参与到这个简朴的SELECT语句中。假设你遵循我们在以前文章中的建议-严格限制该过程用户的特权,那么,这理应无法工作,由于Web服务器守护程序不再拥有你撤回的GRANT特权。但是从理论上讲,这样的一个攻击可能赋予BadGuy自由权力来实现他对你的数据库的任何操作。

至于这样的一个多查询是否会被MySQL服务器处理,结论并不唯一。这其中的.一些理由可能是由于不同版本的MySQL所致,但是大多数处境却是由于多查询存在的方式所致。MySQL的监视程序完全允许这样的一个查询。常用的MySQLGUI-phpMyAdmin,在最终查询之前会复制出以前全体的内容,并且仅仅这样做。

但是,大多数的在一个注入上下文中的多查询都是由PHP的mysql扩展负责管理的。幸好,默认处境下,它是不允许在一个查询中执行多个指令的;试图执行两个指令例如上面所示的注入将会简朴地导致失败-不设置任何错误,并且没有生成任何输出信息。在这种处境下,尽管PHP也只是规法则矩地实现其缺省行为,但是切实能够养护你免于大多数简朴的注入式攻击。

PHP5中的新的mysqli扩展参考/mysqli,就象mysql一样,内在地也不支持多个查询,不过却供给了一个mysqli_multi_query函数以支持你实现多查询-假设你切实想这样做的话。

然而,对于SQLite-与PHP5绑定到一起的可嵌入的SQL数据库引擎参考/和http:///sqlite处境更为可怕,由于其易于使用而吸引了大量用户的关注。在有些处境下,SQLite缺省地允许这样的多指令查询,由于该数据库可以优化批查询,更加是分外有效的批INSERT语句处理。然而,假设查询的结果为你的脚本所使用的话(例如在使用一个SELECT语句检索记录的处境下),sqlite_query函数却不会允许执行多个查询。

三、INVISIONPowerBOARDSQL注入脆弱性

下面是一个出名的论坛系统在登录代码中察觉的一处SQL注入脆弱性。

这个登录查询如下所示:

复制代码代码例如:

$DB-querySELECT*FROMibf_membersWHEREid=$midANDpassword=$pid;

其中,成员ID变量$mid和口令ID变量$pid被使用下面两行代码从my_cookie函数中检索出:

复制代码代码例如:

$mid=intval$std-my_getcookiemember_id;$pid=$std-my_getcookiepass_hash;

在此,my_cookie函数使用以下语句从cookie中检索要求的变量:

复制代码代码例如:

returnurldecode$_COOKIE[$ibforums-vars[cookie_id].$name];

留神:从该cookie返回的值根本没有被处理。尽管$mid在使用于查询之前被强制转换成一个整数,但是$pid却保持不变。因此,它很轻易遭遇我们前面所议论的注入类型的攻击。

因此,通过以如下方式修改my_cookie函数,这种脆弱性就会暴露出来:

复制代码代码例如:

if!in_array$name,arraytopicsread,forum_read,collapseprefs

return$this-clean_valueurldecode$_COOKIE[$ibforums-vars[cookie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论