BUUCTF__[ACTF新生赛2020]SoulLike

这个题的前5位给了为actf{

第一个for循环要求满足前五位不要与第七位到第十一位相等就可以进入到LABEL_6

这个只要满足第十二个到最后一个就可以输出flag

因此只需要算出第十二个到最后就可以了

//但是第14行代码会将我们输入的flag变成actf{,不清楚为什么还可以正常执行。

第二十九行中的sub_83A函数是检测的,但是打不开,会出现以下警告:

解决办法:

打开ida函数的安装路径,进入cfg文件夹,找到hexrays.cfg文件,打开,找到MAX_FUNCSIZE

将原来的64改为1024,重新启动ida即可

//我的电脑直接打不开这个文件,我是使用虚拟机打开的,修改后将文件再复制过去的

打开这个函数,发现进行了好多次的基本计算,最后与v3数组进行比较

写脚本,直接得出flag的一部分

 

//爆破
#include <stdio.h>
#include <string.h>
int v3[12]={126,50,37,88,89,107,53,110,0,19,30,56};
int sub_83A(char *a1,int i)
{
	*a1 ^= 0x2Bu;
	 a1[1] ^= 0x6Cu;
	 a1[2] ^= 0x7Eu;
	 a1[3] ^= 0x56u;
	 a1[4] ^= 0x39u;
	 a1[5] ^= 3u;
    //……
	//直接复制源代码就行
	
	if(a1[i] == v3[i])
		return 1;
	else
	    return 0;
}

int main()
{
	int i,j;
	char flag[13] = "";
	char tmp[13] = "";
	for(i = 0; i < 12 ; i++)
	{
	    for(j = 33; j <= 126 ; j++)
	    {
	        strcpy(flag,tmp);
	        flag[i] = j;
	        if(sub_83A(flag,i))
	        {
	            tmp[i] = j;
	            break;
	        }
	    }
	}
	printf("%s\n",tmp);
	return 0;
}

//b0Nf|Re_LiT!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中的脚本,这段代码是用于解决ACTF新生2020中的base64隐写问题的。该问题涉及到一个名为"abcc.txt"的文件,其中包含了经过base64编码的字符串。脚本通过比较经过隐写处理的字符串和原始字符串的差异,来获取隐写信息。具体的解决过程如下: 1. 首先,脚本会读取"abcc.txt"文件的内容,并将每一行的换行符去除。 2. 然后,脚本会将每一行的字符串进行base64解码,并再次进行base64编码,去除换行符,得到一个经过隐写处理的字符串。 3. 接下来,脚本会调用"get_base64_diff_value"函数,比较经过隐写处理的字符串和原始字符串的差异。该函数会返回两个字符之间在base64字符集中的差值。 4. 如果差异不为0,则将差值转换为二进制,并填充到bin_str字符串中。 5. 如果差异为0,则将"0"填充到bin_str字符串中。 6. 最后,脚本会调用"goflag"函数,将bin_str字符串转换为ASCII字符,并返回解密后的隐写信息。 请注意,这段代码是用于特定比的解决方案,如果你想要解决其他base64隐写问题,可能需要根据具体情况进行修改。 #### 引用[.reference_title] - *1* [[ACTF新生2020]base64隐写 -wp](https://blog.csdn.net/freerats/article/details/108155636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值