re学习(28)攻防世界 parallel-comparator-200(线程函数)

news/2025/1/15 12:49:01/

下载出来是个C语言编辑文件,添加注释如下所示:

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>  //linux的线程库,所以要在linux中才可运行 #define FLAG_LEN 20void * checking(void *arg) {     //这道题的关键函数 char *result = malloc(sizeof(char));char *argument = (char *)arg;*result = (argument[0]+argument[1]) ^ argument[2];  //返回值等于0,因为a^a=0,所以 argument[0]+argument[1]=argument[2]//随机数+密钥=flag return result;
}int highly_optimized_parallel_comparsion(char *user_string)
{int initialization_number;int i;char generated_string[FLAG_LEN + 1];generated_string[FLAG_LEN] = '\0';while ((initialization_number = random()) >= 64);   //initialization_number随机产生的数大于等于64 //这里用了random()随机数,我们可以发现代码中并没有随机数种子,所以他这个随机数每次都是固定的,我们可以运行一下会发现每次都是41,//windows系统下是41,Linux下就是37,这道题要放到Linux系统下来看int first_letter;first_letter = (initialization_number % 26) + 97;  //initialization_number的值对26求余+ascii(a)=97,最后first_letter的值范围//在'a'-'z' pthread_t thread[FLAG_LEN];     //创建一个线程 char differences[FLAG_LEN] = {0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7, 6, -13, 13, 3, 9, -13, -11, 6, -7};char *arguments[20];//指针数组 for (i = 0; i < FLAG_LEN; i++) {arguments[i] = (char *)malloc(3*sizeof(char));//一个大小为3的数组,然后分别进行赋值 arguments[i][0] = first_letter;  //随机数 arguments[i][1] = differences[i];//key arguments[i][2] = user_string[i];//键盘输入没有加密的flag pthread_create((pthread_t*)(thread+i), NULL, checking, arguments[i]);//多线程//将arguments[i]他传到了checking函数中,然后调用checking函数,这个函数返回的id后面就保存在(pthread_t*)(thread+i) }void *result;int just_a_string[FLAG_LEN] = {115, 116, 114, 97, 110, 103, 101, 95, 115, 116, 114, 105, 110, 103, 95, 105, 116, 95, 105, 115};for (i = 0; i < FLAG_LEN; i++) {pthread_join(*(thread+i), &result);generated_string[i] = *(char *)result + just_a_string[i];free(result);free(arguments[i]);}int is_ok = 1;for (i = 0; i < FLAG_LEN; i++) {if (generated_string[i] != just_a_string[i])return 0;}    //因为generated_string[i] = *(char *)result + just_a_string[i]//并且 generated_string[i] = just_a_string[i] 说明 返回值*(char *)result=0return 1;
}int main()
{char *user_string = (char *)calloc(FLAG_LEN+1, sizeof(char));   //开辟一片内存,赋值给user_string fgets(user_string, FLAG_LEN+1, stdin);//对输入的值user_string进行输入 int is_ok = highly_optimized_parallel_comparsion(user_string);//函数运算输入的值user_string,并将结果给is_ok if (is_ok)printf("You win!\n");elseprintf("Wrong!\n");return 0;
}

关键代码:
因为generated_string[i] = *(char *)result + just_a_string[i]
并且 generated_string[i] = just_a_string[i] 说明 返回值*(char *)result=0

——→*result = (argument[0]+argument[1]) ^ argument[2] 因为a^a=0

——→argument[0]+argument[1]=argument[2]

——→随机数+密钥=flag

编写脚本:
 

#include<stdio.h>
int main(){char differences[20] = {0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7, 6, -13, 13, 3, 9, -13, -11, 6, -7};int aa=97;for(int i=0;i<=26;i++){for(int j=0;j<20;j++){printf("%c",differences[j]+aa+i);}printf("\n");}
}
//lucky_hacker_you_are


http://www.ppmy.cn/news/1006993.html

相关文章

【Python从入门到进阶】31、使用JSONPath解析淘票票网站地区接口数据

接上篇《30、JSONPath的介绍和使用》 上一篇我们介绍了JSONPath的基础和具体使用&#xff0c;本篇我们来具体使用JSONPath&#xff0c;来解析淘票票网站的地区接口数据。 一、引言 1、JsonPath的作用和用途&#xff1f; JsonPath是一种用于在JSON数据中进行查询和提取的表达…

PADS过孔操作

过孔须先在Layout内设置好类型&#xff0c;然后在“过孔配置”选项页将使用的过孔勾选。 2&#xff09;有多个过孔类型&#xff0c;可以先指定当前设计时使用的过孔类型。布线操作期间&#xff0c;右击在“过孔类型”选项内选择“通孔类过孔”或者“自动类过孔”&#xff0c;选…

Mybatis:一对一查询映射处理

Mybatis&#xff1a;一对一查询映射处理 前言一、概述二、创建数据模型三、 问题四、解决方案1、方案一&#xff1a;级联方式处理映射关系2、方案二&#xff1a;使用association处理映射关系3、方案三&#xff1a;分步查询 前言 本博主将用CSDN记录软件开发求学之路上亲身所得…

Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

工具&#xff1a; win10、WinSCP 服务器生成ssh密钥&#xff1a; 打开终端&#xff0c;使账号密码登录&#xff0c;输入命令 ssh-keygen -t rsa Winscp下载 Downloading WinSCP-6.1.1-Setup.exe :: WinSCP window 生成密钥 打开powershell ssh-keygen -t rsa 注意路径 …

【CSS】旋转中的视差效果

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…

CVPR 2023 | 计算机视觉中的深度学习理论进展(附视频+168页PPT)

近年来&#xff0c;由于深度学习的发展&#xff0c;计算机视觉取得了巨大的进步。然而&#xff0c;关于深度学习理论的进展&#xff0c;视觉研究者们却了解甚少&#xff0c;这导致了许多错失的联系和想法。 针对这个问题&#xff0c;来自LIONS、EPFL等组织的研究者们在CVPR 20…

HCIE-Datacom真题和机构资料

通过认证验证的能力 具备坚实的企业网络跨场景融合解决方案理论知识&#xff0c;能够使用华为数通产品及解决方案进行企业园区网络、广域互联网络及广域承载网络的规划、建设、维护及优化&#xff0c;能够胜任企业网络全场景专家岗位&#xff08;包括客户经理、项目经理、售前…

ai图片合成软件帮你创造个性绚丽

嘿&#xff01;悄悄告诉你一个小秘密&#xff0c;现在有一款超酷的软件&#xff0c;它能让你的图片变得活灵活现&#xff0c;就像跳出了屏幕一样&#xff01;没错&#xff0c;这就是ai图片制作软件&#xff01;想象一下&#xff0c;你拍摄了一张美丽的风景照片&#xff0c;但总…