首页 > 其他分享 >Youngter-drive 1

Youngter-drive 1

时间:2023-05-06 15:45:44浏览次数:30  
标签:字符 Des drive Source flag 线程 Youngter 我们

查壳:

有壳32位,脱了,看看运行:无法运行,那么进IDA看看:

找个主函数:

发现没了,那么再找找

密文?不确定,跟进看看:

来到一个输出正确flag的地方,可以知道Des就是我们要找的东西:去看看有谁调用过它:

有两,第一个就是上图的输出,那么我们看第二个:

在这里我们看到一个方法:sub_411190() --> 这不就是输出正确的flag的方法吗?说明这里才是正确的主函数:

那么我们往上看:

这个就是我们一开始以为的主函数的方法的调用,接下去看看:

将Source赋值给Des,那么我们看看Source是个啥,跟进:

发现内存里是空的?那么我们猜测,这是不是初始化空间?接着向下看:

不认识这两:查呗:

构建两个线程?跟进第一个线程:

又出现了Source,后边还跟了一个内存,里边是一个数据:1D --> 29,看看调用他两的方法:sub_41112C(有些人进不去伪代码,这是由于堆栈不平衡,调成平衡后就好了),发现是将字符经过变化后给Source

这里大概是讲,先判断是否是字母,再判断是否是小写字母,然后操作result和off_418000中的数据。先看看off_418000中是个啥:"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"

跟进第二个线程:


hObject?Wait?(暂停第一个线程吗?)查:

跟我们想的一样:那么主要去分析第一个线程就好了:

在第一个线程中,我们能看到,是先将字符给了result后才进行操作的,结合上述,也就是奇数位不变,偶数位改变,但是先别急,怎么变化我们并没有弄清楚,再看看。它说的是(a2+a1),根据传参我们能知道,这是指想Source中的字符,也就是说,是在off_418000中找到Source的字符然后进行变化。那么Source的字符串就是我们接下来要找的,之前我们访问过它的内存,却没有任何东西,但是还记最后的比较方法吗,那里提供了最后的加密字符串:

回去:

跟进:off_418004查看:"TOiZiZtOrYaToUwPnToBsOaOapsyS"

可以得到Source的字符串:"TOiZiZtOrYaToUwPnToBsOaOapsyS",写个脚本:

Des = 'TOiZiZtOrYaToUwPnToBsOaOapsyS'
D = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasd'
flag = ''
for i in range(len(Des)):
    if i % 2 == 0:
        flag += Des[i]
    else:
        if ord(Des[i]) < ord('A') or ord(Des[i]) > ord('Z'):
            flag += chr(D.find(Des[i]) + 38)
        else:
            flag += chr(D.find(Des[i]) + 96)
print(flag)

这里解释一下为啥还要加上38/96因为我们给定字串中找的是加密后的字符,而我们需要的原来的字符,所以利用加密后的字串还原它。

得到flag{ThisisthreadofwindowshahaIsES}开开心心上交 --> 给w了??????????看了每一个步骤都没错昂,参考了网络上大佬的文章,说是少了一位字符(因为是字串定义的是1D嘛,0~1D自然是30位(我们还原的只有29位))

莫得办法咯,爆破咯

最后flag{ThisisthreadofwindowshahaIsESE}收工。

标签:字符,Des,drive,Source,flag,线程,Youngter,我们
From: https://www.cnblogs.com/TFOREVERY/p/17377567.html

相关文章

  • UEFI 基础教程 (三) - 运行第一个PEI Driver
    一、编写源代码编写C:\edkii\OvmfPkg\MyHelloWorldPEIMDriver\MyHelloWorldPEIMDriver.c#include<uefi.h>#include<Library/UefiLib.h>#include<Library/BaseLib.h>#include<Library/DebugLib.h>#include<Library/BaseMemoryLib.h>......
  • OrchardCore 中的 插件开发/ Shape / DisplayDriver / 视图扩展 / Razor代码注入
    请注意该文章仅限于OrchardCore项目中的DisplayDriver扩展机制,ASP.NETCOREMVC自身并没有对应功能,如果需要可以将相关的OrchardCore模块添加到项目中也可以实现响应功能背景最近一个功能需求,需要使用其它用户模拟身份,所以计划在用户列表页面扩展按钮组功能那么开始看代......
  • 在 linux-4.9/drivers/usb/serial/ch341.c 上串口收发数据异常
    有天做USBhost串口驱动的时候发下FT\CP都没有问题,就CH341有问题,读写正常,但数据不正常。有一点稀奇,可能是ch中间有版本变更了吧。解法就更新到https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ch341.c最新的代码就行,有一些函数有出入,但大体影响......
  • powershell创建软连接 通过OneDrive同步文件
    放置在OneDrive文件夹中的文件只能通过Windows系统访问,即便是此文件保存在本机硬盘中。通过创建软连接的方式,既可以保证访问兼容性,也可以享受到OneDrive同步功能。OneDrive会把软连接视为源文件。创建软连接需要管理员权限。New-Item-ItemTypeSymbolicLink-Path[链接要放置......
  • 修改docker的cgroup driver为systemd
    简单来说修改docker的cgroupdriver为systemd的原因是因为在文档CRIinstallation中的相关说明:“使用systemd作为initsystem的Linux的发行版,使用systemd作为docker的cgroupdriver可以确保服务器节点在资源紧张的情况更加稳定”。但是在修改后发现自己的docker服务无法正常启动,以......
  • opendrive数据格式解析思维导图 , opendrive高精地图是自动驾驶领域使用最为广泛的开源
    opendrive数据格式解析思维导图,opendrive高精地图是自动驾驶领域使用最为广泛的开源高精地图标准级地图格式。本思维导图将详细剖开高精路网地图内部的数据格式,涵盖:道路、车道、车道段、交叉口等相关名词及其属性、作用、链接关系等参数的解析。内容比较全面,希望对高精地图进行......
  • Lanelet2高精地图解析及全局路径规划, Lanelet2格式的高精地图是与opendrive高精地图并
    Lanelet2高精地图解析及全局路径规划,Lanelet2格式的高精地图是与opendrive高精地图并行的当前两大最流行的高精地图格式。在autoware停止维护AI版本推出Auto版本后,更是将原先的Lanelet地图格式进行升级为lanelet2。因此,如果大家有公司的产品依赖autoware的代码进行部署的,熟悉Lane......
  • linux cpufreq framework(5)_ARM big Little driver
    1.前言也许大家会觉得奇怪:为什么Linuxkernel把对ARMbig·Lttile的支持放到了cpufreq的框架中?众所周知,ARM的big·Little架构,也称作HMP(具体可参考“LinuxCPUcore的电源管理(2)_cputopology”中相关的介绍),通过在一个chip中封装两种不同类型的ARMcore的方式,达到性能和功耗的......
  • Python-webdriver_manager的简单使用
     提前祝大家五一快乐(*^▽^*)前言:我们在使用Selenium做UI自动化时都需要手动去下载各个浏览器版本的webdriver,有时我们可能还会遇到跨操作系统去进行测试。以及有时因浏览器自动升级等原因,导致我们不得再去更新对应版本的webdriver。为了解决以上问题,webdriver-m......
  • selenium笔记之webDriver获取浏览器控制台日志
    大家应该都听过或者用过sentry,非常好用和强大,有用户当时的各种环境,关联sourceMap后能定位到代码层面(Sentry是一个开源的错误跟踪工具,帮助开发人员监控和诊断他们应用程序中的问题。它提供实时监测、警报和分析多个平台和编程语言中的错误和异常。Sentry可以与各种框架和服务集......