当前位置: 首页 > news >正文

buuctf--->Youngter-drive

做题笔记

下载 查壳。

脱壳之后:

32ida打开。

因为这题运行不起来,调试不起来,会报错,只能纯分析。

所以,我先看的字符串:>>>信息收集。

看见的一瞬间就知道,是某种表以及某种加密。

进行跟踪。

在跟踪长的。

a2+a1 这一看就是其中某一个是数组,所以具体跟进传入进行分析就好

跟踪sub_411940就好。

然后会来到这个界面,继续分析。

”Source“很眼熟,在字符判断时也出现过,猜测是input。

综上,其实 Source 也就是input长度为29。

继续分析:

跟踪 StartAddress_0 函数 看看哪儿进行引用了。

最终会来到这个界面。

CreateThread是创建线程的API   

CloseHandle没记错 好像是关闭句柄的API

CreateMutexW不知道 查呗:

可以得出:

starAddress内容就是我们此前跟踪的。

sub_41119F内容如下:

所以,此时可以综合所有已知的。

重点在于——CreateMutexW这个互斥函数。

相当于,这两种算法只能在同一时间实现一个。

脚本:不会,不想动脑筋(思路清晰,不想写。。。看具体分析就好。)

参考:

Youngter-drive - PYozo_free - 博客园 (cnblogs.com)icon-default.png?t=O83Ahttps://www.cnblogs.com/pppyyyzzz/p/12468370.html#:~:text=Youngt

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{char encode[50] = "TOiZiZtOrYaToUwPnToBsOaOapsyS";char table[100] = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";char flag[50] = " ";//算法逆向。for (int i = 0; i < strlen(encode); i++){flag[i] = encode[i];i++;//考虑互斥关系。int j = 0;while (encode[i]!=table[j]){j++;}//get到这种写法,等价于python table.find(encode[index]) ---在表中查找对应字符。//查找之后 根据大小写处理方式不同逆向写脚本。if (encode[i]>='A'&&encode[i]<='Z'){flag[i]= j + 96;}else//‘a’~'z'{flag[i]= j + 38;}//说明:这样写,是因为 flag就是table中的index 实际上可以转换成 index 与index之间的关系。}printf("%s", flag);printf("\n");system("pause");return 0;
}

flag{ThisisthreadofwindowshahaIsESE}

题外话:

这题算法还好,能理解。

关键是 提高对win32 API的重视程度,如果 不知道 createMutexW互斥 那想都别想做。。。。


http://www.mrgr.cn/news/40912.html

相关文章:

  • 复习HTML(基础)
  • 重置linux后vscode无法再次使用ssh连接
  • 【ShuQiHere】深入理解 LC-3 指令集架构(LC-3 ISA):硬件与软件的桥梁 ️
  • 华为OD机试真题---数大雁
  • 在Ubuntu 14.04上安装带SSL的Webmin的方法
  • profile-spec-ref元素
  • 【计算机毕业设计】springboot企业客户信息反馈平台
  • Linux基础命令parted详解
  • 【简介Sentinel-1】
  • 【1】野火STM32F103VET6开发板入门笔记之点亮RGB
  • express,MySQL 实现登录接口,如果用户未注册直接注册
  • 黑马linux笔记(转载)
  • 信息安全工程师(28)机房安全分析与防护
  • 深度学习:DCGAN
  • 什么是信息增益比
  • 【有啥问啥】AI中的数据融合(Data Fusion):让数据“1+1>2”
  • 前端开发技术框架选型
  • 斐波那契数列
  • 第七篇:重定向和管道相关知识总结
  • vite 构建运行自定义脚本