[推荐]PHP真正的注入是这样的
热 荐 ★★★★★
PHP真正的注入是这样的
PHP的注入并不像前段时间asp那么广 有一定的局限性 经典的php+mysql其实早在asp主入时期已经开始流入国内了 只是那会我们知道的太少 只能很片面的拿些很古老的php主入方法去拿站 转篇网上的文章看看它的局限性和应用面
先说一下PHP默认安装的这个选项:
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
默认都是打开的,我们提交的很多字符都会被转义,所以把要查询的变量用单引号包括起来是非常正确的做法,以前很多程序这样写:select * form article where id = $id;这样我们后面可以直接跟union,当然你的mysql版本要支持,现在这种情况几乎不存在了,所以PHP的注入是非常困难的.今天在一个安全公告看到了一个PHP注入漏洞报着怀疑的态度去看代码,这种写法第一次见,但是原理一样,记录之~
article.php这样写:
if ($_REQUEST[sid]){
$sid = $_REQUEST[sid];
$module = announce;
}
include(mod.php);
把直接获取的sid赋值,没有过滤,接着看mod.php:
if (!file_exists($announce))
break;
include ($announce);
$oldID = $sid;
$newID = $convert[$oldID];
if ($newID)
$reroute = "index.php?module=announce&ANN_user_op=view&ANN_id=$newID";
break;
}
if (empty($reroute))
$reroute = "index.php";
header("location:" . $reroute);
exit();
变量直接转向到URL并把sid附加上去了,这样变量newid就是个漏洞变量了,如果mysql版本支持union就可以直接访问该URL提交and 1=2 union ....进行查询了~
这样的代码才是php真正的注入代码.
文章录入:cainiaowang 责任编辑:cainiaowang