DASCTF NOV - re - babytea - writeup

2023-11-20 23:31
文章标签 re dasctf writeup nov babytea

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

初识别为正常tea算法,稍改了魔数delta。
考点主要集中在对异常的识别与调试。一共有三处异常:
第一处:必定为0,必定执行异常处理程序:
在这里插入图片描述
第二处:由给予值的最高位(第32位)决定,不一定执行异常:

在这里插入图片描述
第三处:必定为0,必定执行异常处理程序:
在这里插入图片描述
那么这里有两点:①为了方便代码阅读,可以先将必定执行的语句改为jmp,之后伪代码可以如下图:
在这里插入图片描述
②要在动调里捕获异常,我们可以在异常处理代码的入口下断。(mov esp ,xxx)
如几处标红断点所示。
那么本题最后加上细节,分析可得,其魔改了一共了三个点:①tea开始时使用变量a、b异或v0、v1②sum累加delta时若最高位为0(或许是溢出)则异或0x1234567③tea结束时v0、v1为新的a、b

from ctypes import *sign = []
sum = c_uint32(0)
d1 = 0x1234567
d2 = 0x89ABCDEF
for i in range(32):delta = 0x9E3779B1if (sum.value + delta) & 0x80000000 == 0:sign.append(1)sum.value += deltasum.value ^= 0x1234567else:sign.append(0)sum.value += deltadef encrypt(v, k):v0, v1 = c_uint32(v[0]), c_uint32(v[1])delta = 0x9E3779B1k0, k1, k2, k3 = k[0], k[1], k[2], k[3]v0.value ^= 0x1234567v1.value ^= 0x89ABCDEFtotal = c_uint32(0)for i in range(32):#print(hex(v0.value))total.value += deltaif sign[i] == 1:total.value ^= 0x1234567v0.value += ((v1.value << 4) + k0) ^ (v1.value +total.value) ^ ((v1.value >> 5) + k1)v1.value += ((v0.value << 4) + k2) ^ (v0.value +total.value) ^ ((v0.value >> 5) + k3)return v0.value, v1.valuedef decrypt(v, k):v0, v1 = c_uint32(v[0]), c_uint32(v[1])#print(hex(v[0]), hex(v[1]))delta = 0x9E3779B1k0, k1, k2, k3 = k[0], k[1], k[2], k[3]total = c_uint32(0xc78e4d05)for i in range(32):v1.value -= ((v0.value << 4) + k2) ^ (v0.value +total.value) ^ ((v0.value >> 5) + k3)v0.value -= ((v1.value << 4) + k0) ^ (v1.value +total.value) ^ ((v1.value >> 5) + k1)if sign[31-i] == 1:total.value ^= 0x1234567total.value -= deltav0.value ^= d1v1.value ^= d2return v0.value, v1.valueif __name__ == "__main__":context = [0x5E27B530, 0xBDBEF7F3, 0xE3516A8F, 0x5D836CFE,0xD83DFA09, 0x8EFC737A, 0x55A853A3, 0x7A564EC5]# 待加密的明文,两个32位整型,即64bit的明文数据# 四个key,每个是32bit,即密钥长度为128bitkey = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476]# 202CB962AC59075B964B07152D234B70flag = b''for i in range(0, 4):res = decrypt(context[i*2:i*2+2], key)d1 = context[i*2]d2 = context[i*2+1]flag +=res[0].to_bytes(4, "little")+res[1].to_bytes(4, "little")print(flag)

flag{600d_y0u_r34lly_kn0w_734_4nd_53h}

这篇关于DASCTF NOV - re - babytea - writeup的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

013.Python爬虫系列_re正则解析

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

Login failed:make sure your username and password are correct and that you’re an admin or moderator

Login failed:make sure your username and password are correct and that you’re an admin or moderator   1.使用MySql查看工具进入数据库,进入表“ofuser”,把字段 plainPassword 改成 123,然后在你的控制台上输入该表的   username跟plainPa

解决Re-download dependencies and sync project

解决Re-download dependencies and sync project 问题描述 新建一个工程,报错 Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)<a hr

2024年“羊城杯”粤港澳大湾区网络安全大赛 初赛 Web数据安全AI 题解WriteUp

文章首发于【先知社区】:https://xz.aliyun.com/t/15442 Lyrics For You 题目描述:I have wrote some lyrics for you… 开题。 看一下前端源码,猜测有路径穿越漏洞 http://139.155.126.78:35502/lyrics?lyrics=../../../../../etc/passwd 简单看

正则 re中要转义的特殊字符

如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。需要转义  特别字符 说明 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用

【CTF Web】BUUCTF Upload-Labs-Linux Pass-04 Writeup(文件上传+PHP+.htaccess绕过)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

正则表达式模块re及其应用

正则表达式是一种强大的文本处理工具,能够用来匹配、查找、替换复杂的文本模式。Python中的正则表达式由re模块提供。 以下是一些常用的方法及示例: 一. 常用方法 re.match() 从头开始匹配re.search() 搜索第一个匹配串re.findall() 查找所有匹配项re.finditer() 遍历所有匹配re.sub() 替换字符串中匹配的模式re.split() 将字符串分割

Layer-refined Graph Convolutional Networks for Recommendation【ICDE2023】

Layer-refined Graph Convolutional Networks for Recommendation 论文:https://arxiv.org/abs/2207.11088 源码:https://github.com/enoche/MMRec/blob/master/README.md 摘要 基于图卷积网络(GCN)的抽象推荐模型综合了用户-项目交互图的节点信息和拓

鹏城杯 2022 取证writeup

简单取证 我们进去首先使用imageinfo pslist screenshot clipboard filescan 等等插件查看相关信息。 这里找到一个password姑且先留着 然后使用filescan找到了一个jpg文件 我们先dump下来 vol -f file.raw --profile=WinXPSP2x86 dumpfiles -Q 0x000000000207e3d