爆破爆破基础(一)

一.爆破的概念

什么是爆破?

我的理解就暴力破解,将flag一个一个试出来

二.爆破小例

1.只涉及一位 并且 只涉及数字 的加密

加密算法:

#include <stdio.h>
int main()
{
	char str1[] = { 1,2,3,4,5,6,7,8 };
	char str2[8] = { 0 };
	int i;
	for (i = 0; i < 8; i++)
	{
		str2[i] = str1[i] + 2;
	}
	for (i = 0; i < 8; i++)
	{
		printf("%d",str2[i]);
	}
	return 0;
}

跟狗屎一样的代码...

很简单,都不能算加密,就是把每个数加上2...

爆破:

#include <stdio.h>
int main()
{
	int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;
	char str1[] = { 1,2,3,4,5,6,7,8 };
	char str2[8] = { 0 };
	char str3[8] = { a,b,c,d,e,f,g,h };
	int i, j;
    //直接把“加密”的部分复制过来,获得“加密”后的内容
	//我都不好意思把这个叫加密...
    for (i = 0; i < 8; i++)
	{
		str2[i] = str1[i] + 2;
	}
    //直接开始从数组第一位开始穷举,直到这个位置加密后的值和对应位置加密后的值相等,再进入下一位
    //直到最后一位
	for (i = 0; i < 8; i++)
	{
		for (j = 0; ; j++)		//这里突然脑子短路了一下,设置成到9结束了,调试时才发现,值又不是只有0~9
		{
			str3[i] = j;
			if (str2[i] == str3[i])
			{
				break;
			}
		}

	}
	for (i = 0; i < 8; i++)
	{
		printf("%d",str3[i]);
	}
	return 0;
}

2.只涉及一位 并且 涉及数字和字母 的加密

加密算法:

#include <stdio.h>
#include <string.h>
int main()
{
	char str1[20] = "0";
	char str2[20] = "0";
	char str3[20] = "0";
	int len, i;
	gets(str1);
	len = strlen(str1);
	for (i = 0; i < len; i++)
	{
		str2[i] = str1[i] + 2;
	}
	puts(str2);
	//验证一下flag,懒得再新建一个文件了...
	printf("请输入flag:");
	gets(str3);
	if (strcmp(str3, str1))
	{
		puts("no");
	}
	else
	{
		puts("yes");
	}
	return 0;
}

还是依托答辩一样的代码...

一样的每位加上2

爆破:

#include <stdio.h>
int main()
{
	char str1[20] = "0";
	char str2[20] = "0";
	char str3[20] = "0";
	int len, i,j;
    //一样的,直接把加密的部分cv下来,作为一个cv程序员这肯定会
	gets(str1);
	len = strlen(str1);
	for (i = 0; i < len; i++)
	{
		str2[i] = str1[i] + 2;
	}
	//同样开始一个一个试,和上面一样
	for (i = 0; i < len; i++)
	{
		for (j = 0;; j++)
		{
			str3[i] = j;
			if (str3[i] == str2[i])
			{
				break;
			}
		}
	}
	puts(str3);
	return 0;
}

3.涉及两位 并且 只涉及数字 的加密

感觉开始上强度了...

这个加密不对...很有问题...别看了

加密算法:

这个是真狗屎,调了半天...

#include <stdio.h>
#include <string.h>
int main()
{
	char flag[20] = "1425";
	char datacmp[20] = "eg";
	char your_answer[20] = "0";
	char encipher_your_answer[20] = "0";
	int len, i, j;
	printf("flag:%s\n",flag);
	printf("加密后的flag(将输入加密后和这个进行比较):%s\n", datacmp);

	//将输入进行加密
	printf("输入你的答案:");
	len = strlen(flag);
	gets(your_answer);
	for (i = 0, j = 0; i <= len; i += 2, j++)
	{
		encipher_your_answer[j] = your_answer[i] + your_answer[i + 1];
	}

	//将输入加密得到的内容后与flag加密后的内容比较
	if (strcmp(encipher_your_answer, datacmp))
	{
		puts("wrong");
	}
	else
	{
		puts("right");
	}

	return 0;
}

爆破:
没写出来...

#include <stdio.h>
int main()
{
	char str1[20] = "0";
	char str2[20] = "0";
	char str3[20] = "0";
	char str4[20] = "0";
	int len, i, j, k;
	//加密
	gets(str1);
	len = strlen(str1);

	for (i = 0, j = 0; i <= len; i++, j++)
	{
		str2[j] = str1[i] + str1[i + 1];
		i += 1;
	}
	//爆破
	for (i = 0; i < len/2; i++)
	{
		for (j = 0;; j++)
		{
			for (k = 0;; k++)
			{
				str4[i] = 
			}
		}
	}

	puts(str4);
	return 0;
}
posted @ 2022-12-28 23:47  说芬兰语的雪  阅读(32)  评论(0编辑  收藏  举报