PHP中GPC绕过的一些总结 电脑资料
lib3rt3
邪恶八进制
PS:PHP中绕过GPC的情况有很多,本文仅仅是了一些比拟常见的,而且写的很浅(因为本人水平有限),欢送大家积极拍砖:)
ryat[at]wolvez
.wolvez
xx-10-18
1.通过数据库(文本)中转
通过数据库中转:
(注意存入数据库和select出的数据)
用户输入===>gpc\addslashes()==========>数据库=========>执行sql语句\include\写入缓存文件
insert\update select
这个问题是程序员容易忽略的,往往只是依靠gpc或addslashes函数对用户直接输入的数据进行处理,这样数据中的'"等都会被\转义,这样就能正确的执行sql语句,有效防止注入攻击了,
通过文本中转:
用户输入===>gpc\addslashes()===>写入文本文件===>include===>再次写入文本文件\执行sql语句
这个和通过数据库中转大致是一样的,对于写文件的操作如果处理不当是有可能被攻击者直接拿shell的,我们来看看php168的一个代码片段:
Copy code
function loginlogs($username,$password) {
global $timestamp,$onlineip;
$logdb[]="$username\t$password\t$timestamp\t$onlineip";
@include(PHP168PATH."cache/adminloginlogs.php");
$writefile="
$jj=0;
foreach($logdb AS $key=>$value) {
$jj++;
$writefile.="\$logdb[]=\"$value\";\r\n";
if($jj>200) {
break;
}
}
writefile(PHP168PATH."cache/adminloginlogs.php",$writefile);
} 字符串函数php
php168在后台时如果输入的用户名或密码有误就会执行这个loginlogs函数把者的信息记录在 adminloginlogs.php,如果用户输入的$username的数据是“";eval($POST[cmd]); //”,前面的"被闭合了,成功的写入了shell,
2.通过编码
UTF-7(+ACc-)===>gpc\addslashes()===>mbconvertencoding()===>UTF-8(')
这个问题的具体例子可见:superhei.blogbus./logs/4255503.html
0xbf27===>gpc\addslashes()===>0xbf5c27===>执行sql语句(数据库编码支持多字节)
PHP里的函数大多是把字符串作为单字节进行处理的,那么如果数据库编码支持多字节呢,我们可以利用这个特性引入',而这里,gpc不但没起作用还帮了我们的忙:)
详见:shiflett/blog/xx/jan/addslashes-versus-mysql-real-escape-string
用户输入(经过urlencode\rawurlencode\base64encode等函数处理)===>gpc\addslashes() ===>urldecode\rawurldecode\base64decode等函数===>执行SQL语句\include
通过二次编码绕过gpc\addslashes,比方'的URL编码二次编码%25%27。
3.一些函数的错误处理
看看下面的函数处理的字符串:
substr($GET['a'], 1);
假设输入的$GET['a']为'haha,经过gpc\addslashes()会变为\'haha,再经过substr处理后又变回了'haha.
处理字符串的函数有很多,往往程序员的一个不注意就能给我们带来很多有意思的利用:)
4.字符串和数组
看看下面的代码:
$a = $GET['a'];
echo $a[1];
输入$GET['a']为'haha,经过gpc\addslashes()会变为\'haha,看看手册里对字符串的一段描述:
字符串中的字符可以通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问和修改
这里也可以用方括号替代花括号(这是为了兼容较早的PHP版本,其实就是把字符串当数组处理的),有了这个特性我们能做很多事啊,比方这里$a[1]的输出就是'了:),当然具体大的利用要看具体的代码。
5.PHP自身的一些缺陷
PHP5的GPC对$SERVER的忽略
见剑心的《PHP5绕过缺陷》:.xfocus./articles/xx08/878.html
PHP某些版本对%00的错误转义
.securiteam./windowsntfocus/6M00K0AC1I.html
模板,内容仅供参考
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论