写在前面
一切脚本的导图都是自己写的、画的,假如有欠好的当地多多包容,过错的当地也请指出,谢谢。
分组暗码的形式
分组暗码每次只能处理加密固定长度的分组,可是咱们加密的明文可能会超越分组暗码处理的长度。
这时便需要对一切分组进行迭代,而迭代的 *** 被称为分组暗码的形式。常见的为针对ECB、CBC形式进犯(L-ctf说到其间一种)。
ECB
ECB形式的全称是Electronic CodeBook形式,将明文分组加密后直接成为密文分组,而密文则是由明文分组直接拼接而成,如图所示:
Features:
ECB形式是一切形式中最简略的一种。明文分组和密文分组是一一对应的,假如明文分组有相同的那么最终的密文中也会有相同的密文分组。
由于每个分组都单独进行加密解密,所以无需破解密文就能操作部分明文,或许改动明文,在不知道加密算法的情况下得到密文,然后到达进犯作用,如图所示(翻转密文分组,那么明文分组也会被翻转)
Example:
某次CTF遇到的标题
思路:以administrator权限登陆就就能取得Flag。判别权限则是依据cookie里边的uid参数,cookie包括username和uid两个参数,均为运用ECB加密的密文,但是username的密文是依据注册时的明文生成的。
因而咱们能够依据username的明文操作生成咱们想要的uid的密文。通过fuzz发现明文分组块为16个字节,那么咱们注册17字节的用户,多出的那一个字节就能够是咱们咱们期望的UID的值,而此刻咱们检查username的密文添加部分便是UID的密文,即可假造UID。
注册aaaaaaaaaaaaaaaa1取得1的密文分组,注册aaaaaaaaaaaaaaaa2取得2的密文分组,以此类推
源码没找到,如同弄丢了,自己写了个差不多的,有爱好能够操练
ebc.php:
function AES($data){
$privateKey = "12345678123456781234567812345678";
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_ECB);
$encryptedData = (base64_encode($encrypted));
return $encryptedData;
}
function DE__AES($data){
$privateKey = "12345678123456781234567812345678";
$encryptedData = base64_decode($data);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_ECB);
$decrypted = rtrim($decrypted, "") ;
return $decrypted;
}
if (@$_GET['a']=='reg'){
setcookie('uid', AES('9'));
setcookie('username', AES($_POST['username']));
header("Location: http://127.0.0.1/ecb.php");
exit();
}
if (@!isset($_COOKIE['uid'])||@!isset($_COOKIE['username'])){
echo '"post" action="ecb.php?a=reg">
Username:
"text" name="username">
Password:
"text" name="password" >
"submit" value="注册">
';
}
else{
$uid = DE__AES($_COOKIE['uid']);
if ( $uid != '4'){
echo 'uid:' .$uid .'';
echo 'Hi ' . DE__AES($_COOKIE['username']) .'';
echo 'You are not administrotor!!';
}
else {
echo "Hi you are administrotor!!" .'';
echo 'Flag is 360 become better';
}
}
?>
ecb.py:
#coding=utf-8
import urllib
import urllib2
import base64
import cookielib
import Cookie
for num in range(1,50):
reg_url='http://127.0.0.1/ecb.php?a=reg'
index_url='http://127.0.0.1/ecb.php'
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
opener.addheaders.append(('User-Agent','Mozilla/5.0'))
num=str(num)
values={'username':'aaaaaaaaaaaaaaaa'+num,'password':'123'}
data=urllib.urlencode(values)
opener.open(reg_url,data)
[1] [2] [3] [4] [5] 黑客接单网
ps:定位进犯者,我觉得罗卡规律说的挺好的:凡有触摸,必留痕迹。 这儿留意两个点:a.服务器版别2003x86 便是32位体系经过这个特别的信息走漏缝隙,合作遥控器的调频规则可快速得到跳频序列,但...
翻开 [我国菜刀] 衔接一句话木马; $html = ''; 首要一个目标办法要想被长途运用所调用需求其 extends 于java.rmi.Remote接口,并需求抛出Rem...
拜访网站时假如拜访途径中短少/,大多数中间件都会主动将途径补全,回来302或301跳转如下图,Location方位的域名会运用Host头的值。 这种状况实际上危险较低,难以构成Host头进犯。可是因为...
依据360互联网安全中心的数据(包含360安全卫士和360杀毒的查杀数据),2018年算计430余万台计算机遭受勒索病毒进犯(只包含国内且不含WannaCry数据)。 值得重视的是,在2018年11月...
开始的版别,办法和字符串均未加密。 JNDI - Java Naming and Directory Interface 名为 Java命名和目录接口,详细的概念仍是比较复杂难明,详细结构设计细节可以...
sudo apt install gcc-4.4Sofacy或许是这三个歹意安排中最为活泼的。 在整年中,咱们在各类歹意活动中发现了该安排的活动,他们更新了他们的东西集,并被当局指定为几个歹意活动的暗...