加密算法
常见加密编码等算法解析
加密算法分为可逆以及不可逆,部分加密算法会有其他的参数,逆向解密需要知道这些参数
- MD5
- SHA
- ASC
- URL
- BASE64
- Unescape
- AES
- DES
加密形式算法解析
有些加密算法本身是依据现有算法进行添加内容,多次加密,以及偏移等方式进行,目的是加强密文的强度
- 直接使用加密算法加密
- 对明文加
salt
后进行加密 - 偏移
- 位数
- 模式
- 干扰
- 自定义组合
常见解密方式
- 撞库
- 逆向
- 自定义逆向算法
某 CTF 比赛题目解析
脚本自定义算法组合逆向,密文如果在没有加密算法的情况下基本无法破解,但是获取到加密算法后,可以根据加密的规则进行逆向破解
<?php
function encrypt($data, $key) {
$key = md5('ISCC');
#print $key;
$x = 0;
$len = strlen($data);
$klen = strlen ($key);
#print $len;
for ($i=0; $i < $len; $i++) {
if($x == $klen)
$x = 0 ;
$char .= $key[$x];
$x += 1;
#print $key[$X];
}
#print $char[0].$char[1].$char[2];
for ($i=0;$i<$len; $i++) {
$str .= chr ((ord ($data[$i]) + ord ($char[$i]))%128);
}
return base64_encode ($str);
}
echo encrypt('helloword');
?>
- 逆向解密算法
<?php
function decrypt($str) {
$mkey = md5('ISCC');
$klen = strlen($mkey);
$tmp = $str;
$tmp = base64_decode($tmp);
//解密base64
$md_len = strlen($tmp);
//获取输入加密字符长度
$x = 0;
$char = "";
//临时数组
for ($i=0; $i<$md_len; $i++) {
if ($x == $klen) {
//当加密字符串长度超出key
$x = 0;
//的长度时查重头开始和获取
}
$char .= $mkey[$x];
//.= 累积函数
$x += 1;
}
$md_data = array();
//获取加密字符中的ASCII数据
for ($i=0; $i<$md_len; $i++) {
array_push($md_data,ord($tmp[$i]));
}
$md_data_source = array();
$data1 = "";
$data2 = "";
foreach ($md_data as $key => $value) {
//最终还原
$i = $key;
if($i >= strlen($mkey)) {
$i = $i - strlen($mkey);
}
$dd = $value;
$od = ord($mkey[$i]);
array_push($md_data_source,$dd);
$data1 .=chr(($dd+128)-$od);
//原数据加key的Ascii大于128
$data2 .=chr($dd-$od);
//原数据加key的Ascii小于128
}
print "data1 =>".$data1."<br>\n";
print "data2 =>".$data2."<br>\n";
}
$str = 'HxclIiEqIiUY';
decrypt($str);
?>
某 CMS 密码加密解密
为了加强密文强度,有些加密算法会对明文或加密后的密文进行再次加密
- discuz论坛查表后,获得密文进行解密
某 URL 加密地址的漏洞测试
观察参数值加密字符串,下载源代码分析,函数定义 AES 加密,涉及模式 CBC,128 位,加密密码,偏移量,两次 base64 减去常规一次,填充模式
- 扫描目录
- 获得源码
- 分析加密算法
- 逆算密文
- 获得明文后,加入sql注入语句再加密代入进行尝试
base64加密参数
通过搜索
inurl:id=MQ==
获得一些网站,在base64解密中,MQ==
原文为1
也就是说,完整的参数为id=1
,可以通过对参数值进行注入,然后将参数值进行base64加密尝试注入
资源
最后一次更新于2021-11-15 16:34
0 条评论