源码文件:
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();
}
//这样就成功修改文章了
|