unctf2021部分wp
unctf2021部分wp
1,rejunk
下载程序并运行,随机输入几个数提示length error,拖进idapro找到main函数后f5查看伪代码,根据题目提示垃圾代码混淆与逆向异或运算可观察得到关键的两行
我们可以看到几个字符串,这就是关键语句,分析容易得知将v9(从0开始循环的数与flag字符串中每个字符加上2的值异或运算得到了变换后的字符串),根据异或运算的性质开始写脚本
运行得到flag如下所示
(感谢坤哥对解此题的大力帮助)
2, ezlogin
下载后打开是这样的
程序提示是程序流程识别,算法逆向,还是ida主函数看伪代码
看了看流程也不是特别懂,但好像login那里有东西,于是我login了一波,观察代码貌似输入一个数就行了?(我也不知道为啥就爆出来了flag)如图
3, easy_rsa
下载后得到一个名字为easyrsa的文件,加上后缀txt将它以文本打开可知它是已知qpce求密文的rsa问题
直接写脚本即可
可以跑出来
165720758591616896381926092066231533379319438670959799283552583224184682787196461195645这一串串数字,然后用libnum将数字转成字符串可得flag
Flag:UNCTF{Th1s_1s_f1ag_f0r_unctf_2021!!}
4, 分析badusb流量
下载得到一堆数字,四个一组,观察发现前两列只有00和20
题目提示为键盘映射,不难知道实质就是usb流量分析中键盘流量分析的一种,查阅资料得知如下对应方式
根据flag的形式以及花括号的特殊性,我们不难判断20开头的是shift之后的,00就是普通输入的,找到对应关系flag就容易获得了,最后得到UNCTF{Y0u-Are-very-n1ce}
5, fuzz_md5
进题目阅读代码
我分别查询了php中preg_replace和substr函数的作用如下
其中preg replace函数在本题中的作用是过滤掉unctf这个字符串,而substr的意思则是截取pass3的前五位。逐行分析代码逻辑如下:
首先get传参user,post传参pass,pass2是pass的md5值,pass3是pass2的前五位,之后将user中unctf这个字符串过滤掉得a。如果同时满足a为unctf且pass3是66666的话就可以爆出flag。这就是程序的基本逻辑
那么,对于user,它过滤掉了一遍unctf,我们直接用嵌套双写绕过,令初始的user为uncunctftf即可。那么对于pass,我们已知他经过md5加密后的前五位是66666,写脚本爆破即可(理论上来说md5不存在逆向解,但可根据一定关系映射进行爆破)
运行后得到的值随便一个就可以作为pass
最后我们进行传参即可,post传pass,get传user,传递完毕可直接得到结果
6, 探秘中世纪城堡
下载附件看到
根据提示,推测先凯撒,再base64,最后栅栏密码。于是开始尝试,发现凯撒偏移为5时刚好可以base64解密
在根据题目双重阻拦推测双重栅栏,设置栅栏密码偏移为2得到
这就是flag
本文来自博客园,作者:wysng,转载请注明原文链接:https://www.cnblogs.com/wysngblogs/p/15651781.html

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探