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

Re--题

一.[NSSCTF 2022 Spring Recruit]easy C

直接看for循环,异或

写代码

就得到了flag       easy_Re

二.[SWPUCTF 2021 新生赛]非常简单的逻辑题

先对这段代码进行分析

flag = 'xxxxxxxxxxxxxxxxxxxxx'
s = 'wesyvbniazxchjko1973652048@$+-&*<>'
result = ''
for i in range(len(flag)):
    s1 = ord(flag[i])//17  //ord(flag[i]) 获取 flag 字符串中第 i 个字符的 ASCII 码值。

s2 = ord(flag[i])%17
    result += s[(s1+i)%34]+s[-(s2+i+1)%34]
print(result)
# result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'

假如flag的第一个字母是N,N的ASCII码值是78,78//17=4,所以s1是4,78%17=10,所以s2是10. 此时i=0,(s1+i)%34=4,-(s2+i+1)%34=-11

那就是在s里面找第五个字母,倒着在s里面找第十一个字母,也就是v0,result就是这样来的。

现在知道了result倒推flag即可

flag = ""

enc = "v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i"

s = "wesyvbniazxchjko1973652048@$+-&*<>"

for i in range(len(enc)//2):

    for j in range(34,127):

        s1 = j//17

        s2 = j%17

        if (enc[2*i] == s[(s1+i)%34] and enc[2*i+1] == s[-(s2+i+1)%34]):

            flag += chr(j)

print(flag)

NSSCTF{Fake_RERE_QAQ}

三.

[SWPUCTF 2022 新生赛]upx

脱壳

Upx -d

这是一道异或

就得到了flag

四.[HGAME 2022 week1]easyasm

拖进ida64

不能f5查看伪代码,所以要分析汇编代码,看一下dseg和seg001函数

dseg里面是一个假的flag

看一下seg001函数

Shift+e导出来

0x91, 0x61, 0x01, 0xC1, 0x41, 0xA0, 0x60, 0x41, 0xD1, 0x21,

0x14, 0xC1, 0x41, 0xE2, 0x50, 0xE1, 0xE2, 0x54, 0x20, 0xC1,

0xE2, 0x60, 0x14, 0x30, 0xD1, 0x51, 0xC0, 0x17

分析汇编语言

由于汇编语言还没怎么学,所以ai了一下

这段代码是用汇编语言编写的,它执行了一系列的位操作和比较。下面是每条指令的解释:

xor ax, ax:将寄存器 ax 清零。

mov al, [si]:将内存地址 si 指向的值移动到寄存器 al 中。

shl al, 1:将 al 寄存器中的值左移一位,相当于乘以2。

shl al, 1:再次左移一位。

shl al, 1:第三次左移一位。

shl al, 1:第四次左移一位,总共左移了四位,相当于乘以16。

push ax:将 ax 寄存器的值压入堆栈。

xor ax, ax:再次将 ax 寄存器清零。

mov al, [si]:再次将内存地址 si 指向的值移动到寄存器 al 中。

shr al, 1:将 al 寄存器中的值右移一位,相当于除以2。

shr al, 1:再次右移一位。

shr al, 1:第三次右移一位。

shr al, 1:第四次右移一位,总共右移了四位,相当于除以16。

pop bx:从堆栈中弹出一个值到寄存器 bx 中,这个值是之前 ax 的值,即0。

add ax, bx:将 bx 寄存器的值加到 ax 寄存器中,由于 bx 是0,所以 ax 的值不变。

xor ax, 17h:将 ax 寄存器的值与十六进制数 17h 进行异或操作。

add si, 1:将 si 寄存器的值加1,指向下一个内存地址。

cmp al, es:[si-1]:比较 al 寄存器的值与 es 段寄存器和 si-1 地址指向的内存值。

jz short loc_100DD:如果比较结果为零(即两个值相等),则跳转到标签 loc_100DD 处执行。

首先是将ax清零,然后从数据段中拿出数据,向左偏移4,压入栈中,再清零ax,再从数据段中拿出数据,再向右偏移4,将栈中的数据拿出给bx,ax+bx,再拿ax与 (十六进制的17)23进行异或,最后的数据拿来和额外段的数据比较。

逆着这个逻辑写脚本

先与十六进制的17进行异或,右移4位 再将左移后的值对128取模,两者相加后对应ASCII码

就得到了flag

NSSCTF{welc0me_to_4sm_w0rld}

五.[SWPUCTF 2021 新生赛]老鼠走迷宫

下载完没有后缀,拖入010

搜一下MZ开头是什么文件

添加后缀

然后我们需要将exe转化为py

将其放到pyinstxtractor.py这个工具下面

cmd打开终端

输入命令 python pyinstxtractor.py 文件名

将5.pyc和struct.pyc这两个pyc文件拖入010中,将struct的前16位十六进制数复制到5.pyc开头

另存为

然后使用在线网站

套脚本

得到sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwwwwaawwddwwwwaaaawwddwwwwddssssddwwwwddddwwddddssaassaassddddssddssaassssssddsssssss

Md5解密

就得到了

69193150b15c87d39252d974bc323217

所以flag就是NSSCTF{69193150b15c87d39252d974bc323217}

                                                                                                                               

http://www.xdnf.cn/news/10085.html

相关文章:

  • 轻量级swiper插件推荐
  • 在线制作幼教早教行业自适应网站教程
  • TDengine 运维——巡检工具(定期检查)
  • AD9361 的工作原理
  • 正点原子Z15I ZYNQ 开发板发布!板载PCIe2.0、SPFx2、MIPI CSI等接口,资料丰富!
  • kanass V1.1.3版本发布,支持需求评审和Jira的数据导入
  • cocosCreator导出的web工程加载本地图片
  • 默克微生物培养基选择指南
  • Linux 创建用户
  • 4.0/Q2,GBD数据库最新文章解读
  • Oracle数据类型AnyType与AnyData
  • 4.Haproxy搭建Web群集
  • 【Golang进阶】第六章:包管理与工程实践——从模块化开发到CI/CD全流程
  • 沉浸式 “飞进” 鸟巢:虚拟旅游新体验​
  • 发布订阅者模式
  • stm32无刷电机控制_滑膜观测器更改电机如何调整?
  • 《java创世手记》---java基础篇(下)
  • 招工招聘系统开发——适配多元场景,满足企业多样化招聘需求
  • 91.评论日记
  • 2025年文学与文化发展国际会议(ICLCD 2025)
  • FEMFAT许可分析的数据可视化方法
  • 重读《人件》Peopleware -(13)Ⅱ 办公环境 Ⅵ 电话
  • 如何通过一次需求评审,让项目效率提升50%?
  • 【定昌linux开发板】设置密码的有效时间
  • 【Python】第二弹:搭建 Python 环境
  • 创建一个网站、有了云服务器还需要什么?
  • [创业之路-394]:企业战略管理-战略制定/设计-从业绩差距到机会差距的跨越,从存量市场到增量市场的转型之道
  • 晨控CK-FR03与TwinCAT3配置EtherCAT通讯连接手册
  • 开发者体验提升:打造高效愉悦的开发环境
  • Prometheus + Grafana + Cadvisor:构建高效企业级服务监控体系