ISCC2024 winterbegins

2024-06-14 03:36
文章标签 iscc2024 winterbegins

本文主要是介绍ISCC2024 winterbegins,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,用IDA打开程序,看到一大堆while(1)又套着while(1)的结构,肯定是控制流平坦化了,我们可以使用IDA插件d810去掉。
在这里插入图片描述

现在程序就好看多了。如果IDA没有显示这堆中文字符串,可以考虑使用IDA8.3,就可以显示了。

首先,反汇编第12行那个函数sub_7FF783BFCB20,里面一大堆奇奇怪怪的语句,不知道是干嘛的。我们可以在第十六行下断点,然后随便输入一堆字符串,就可以知道,这个函数其实就是对v6字符串赋值。
在这里插入图片描述可以点进去v6看看,往下拉一拉,就能看到了,就是赋值到比较后面的位置而已。

在这里插入图片描述

sub_7FF783BE1000这个函数比较简单,就是输入的字符串不能有数字。

在这里插入图片描述

sub_7FF783BE11E0,这个函数就是对你输入的字符串,重复的字母会压缩成一个,并且后面跟着一个重复次数。例如,CC会变成C2,BBB会变成B3,也可以动调玩玩看。

下面的sub_7FF783BE1E30这个函数就比较重要了,其中,sub_7FF783BE1A50这个函数:
在这里插入图片描述里面有个sub_7FF783BE2030(&v6[3 * i], “%%%02X”, (unsigned __int8)a1[i]);
这个语句其实就是sprintf。这个函数就是把字符串的ascii码转16进制字符串。

sub_7FF783BE1840这个函数,就是把字符的数字转成数字,如果是字母,也做一些转换,具体的转换可以自己看看,非常简单。

在这里插入图片描述sub_7FF783BE15D0这个函数应该是最重要的了。sub_7FF783BFC480这个函数就是一个赋值,动调可以知道。下面的语句,就是在Str中,找对应位置的两个汉字赋值到v3,最后返回v3。(一个汉字是对应两个字节的,这个是汉字的编码方式)
对应的位置指的是,sub_7FF783BE1840这个函数不是会得到一些数字吗?我们会从输入的字符串转变过来的数字,然后根据这些数字找到Str对应的位置,找到相应的汉字赋值。

思路清晰了,脚本非常好写:

key="冻笔新诗懒写寒炉美酒时温醉看墨花月白恍疑雪满前村"
ciphertext="美酒恍疑时温寒炉美酒寒炉寒炉懒写墨花前村时温时温前村恍疑墨花懒写墨花月白墨花懒写醉看墨花醉看恍疑醉看美酒墨花醉看醉看前村恍疑醉看时温醉看前村月白醉看新诗醉看月白醉看美酒墨花冻笔醉看恍疑墨花冻笔醉看恍疑墨花懒写墨花前村墨花"table=[]
for i in range(0,len(ciphertext),2):table.append(key.find(ciphertext[i:i+2]))#print(table)
for i in range(0,len(table)):table[i]=int(table[i]/2)def get_char(pos):cnt=0new_pos=posstring=""c=0while cnt<2:if table[new_pos]!=11:string+=str(table[new_pos])new_pos+=1cnt+=1else:new_pos+=1string+=str(chr(61+table[new_pos]))new_pos+=1cnt += 1return new_pos,chr(int(string,16))i=0
ans=""
while i<len(table):i, c = get_char(i)ans += c
print(ans)
#ISC2{_rxrgidvoenahdpipir}

这篇关于ISCC2024 winterbegins的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059258

相关文章

ISCC2024 WriteUpReverse 迷失之门

Reverse 迷失之门 迷失之门 writeup解题思路 打开题目是一个压缩包解压后是一个.exe程序 按照做题顺序第一步查壳发现并没有壳将其拖入ida中进行查看 使用shift+F12进行字符串查看 发现flag字符了我们双击它 将光标移动到yes哪里右击空白地方打开交叉索引并按F5进行反汇编发现下面代码 6.将其里面的数字换成对应的ASCII 根据上面

ISCC2024 WriteUp

msic Funzip Funzip writeup解题思路 1.打开题目发现是一个base64 2.看了一遍后发现他不是很全于是写一个脚本进行补全 wf = open("5.txt", "w") with open("1 (2).txt", "r") as f:     data = f.read()     data = data.splitlines() for li

ISCC2024个人挑战赛WP-WEB

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考)  还没想好名字的塔防游戏 GET /world.js HTTP/1.1 Host: 101.200.138.180:17345 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;

ISCC2024个人挑战赛WP-MISC

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考)  where is flag 下载附件,解压出pyc,然后到下面网址反编译 python反编译 - 在线工具 记住c,是密文, Key是 k5fgb2eur5styn0lve3t6r1s AES ecb解密 解密网址:https://www.lddgo.net/encrypt/aes 成语学习 压缩