您好,欢迎访问一九零五行业门户网

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 ....进行查询了~
其它类似信息

推荐信息