RCTF-2015-x_xor_md5
题目:
0000h: 69 35 41 01 1C 9E 75 78 5D 48 FB F0 84 CD 66 79 i5A..žux]Hûð„Ífy
0010h: 55 30 49 4C 56 D2 73 70 12 45 A8 BA 85 C0 3E 53 U0ILVÒsp.E¨º…À>S
0020h: 73 1B 78 2A 4B E9 77 26 5E 73 BF AA 85 9C 15 6F s.x*Kéw&^s¿ª…œ.o
0030h: 54 2C 73 1B 58 8A 66 48 5B 19 84 B0 80 CA 33 73 T,s.XŠfH[.„°€Ê3s
0040h: 5C 52 0C 4C 10 9E 32 37 12 0C FB BA CB 8F 6A 53 \R.L.ž27..ûºË
0050h: 01 78 0C 4C 10 9E 32 37 12 0C FB BA CB 8F 6A 53 .x.L.ž27..ûºË 0060h: 01 78 0C 4C 10 9E 32 37 12 0C FB BA CB 8F 6A 53 .x.L.ž27..ûºË
0070h: 01 78 0C 4C 10 9E 32 37 12 0C 89 D5 A2 FC .x.L.ž27..‰Õ¢ü描述 key不存在
Solve:
在题目中看到了两行重复的十六进制,猜测是不是key.而本题题目是xor,那就拿这些十六进制和整个文本对应去异或试试
str1 =[0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53]result=[]txt =[0x69,0x35,0x41,0x01,0x1C,0x9E,0x75,0x78,0x5D,0x48,0xFB,0xF0,0x84,0xCD,0x66,0x79,0x55,0x30,0x49,0x4C,0x56,0xD2,0x73,0x70,0x12,0x45,0xA8,0xBA,0x85,0xC0,0x3E,0x53,0x73,0x1B,0x78,0x2A,0x4B,0xE9,0x77,0x26,0x5E,0x73,0xBF,0xAA,0x85,0x9C,0x15,0x6F,0x54,0x2C,0x73,0x1B,0x58,0x8A,0x66,0x48,0x5B,0x19,0x84,0xB0,0x80,0xCA,0x33,0x73,0x5C,0x52,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0x89,0xD5,0xA2,0xFC]for i in range(len(txt)):tmp = 0tmp = str1[i%len(str1)]^txt[i]result.append(tmp)print((hex(tmp)[2:]).zfill(2),end="")
0000h: 68 4D 4D 4D 0C 00 47 4F 4F 44 00 4A 4F 42 0C 2A hMMM..GOOD.JOB.*
0010h: 54 48 45 00 46 4C 41 47 00 49 53 00 4E 4F 54 00 THE.FLAG.IS.NOT.
0020h: 72 63 74 66 5B 77 45 11 4C 7F 44 10 4E 13 7F 3C rctf[wE.LD.N.<
0030h: 55 54 7F 57 48 14 54 7F 49 15 7F 0A 4B 45 59 20 UTWH.TI..KEY
0040h: 5D 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]*..............
0050h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0070h: 00 00 00 00 00 00 00 00 00 00 72 6F 69 73 ..........rois
发现中间有很多00隔开了数据,然后猜想,会不会是空格,空格为0x20,则再把数据全部异或0x20
result2=[]
for j in range(len(result)):tmp = 0tmp = int(result[j],16)^0x20result2.append((hex(tmp)[2:]).zfill(2))print((hex(tmp)[2:]).zfill(2),end="")
0000h: 48 6D 6D 6D 2C 20 67 6F 6F 64 20 6A 6F 62 2C 0A Hmmm, good job,.
0010h: 74 68 65 20 66 6C 61 67 20 69 73 20 6E 6F 74 20 the flag is not
0020h: 52 43 54 46 7B 57 65 31 6C 5F 64 30 6E 33 5F 1C RCTF{We1l_d0n3_.
0030h: 75 74 5F 77 68 34 74 5F 69 35 5F 2A 6B 65 79 00 ut_wh4t_i5_*key.
0040h: 7D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }.
0050h: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0060h: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0070h: 20 20 20 20 20 20 20 20 20 20 52 4F 49 53 ROIS
其中遇到了一个问题需要注意一下:
当数据为0x0C的时候,python输出会变成0xC,就会丢失掉一个0,导致我一开始的数据少了,后面用zfill来补上0
发现字符ut前是一个不可显示的字符,然后*key后是一个空格
网上的师傅们考虑到*key后可能跟着也是一个*,则将这两位都^*(0x2A)
得到了这样
0000h: 48 6D 6D 6D 2C 20 67 6F 6F 64 20 6A 6F 62 2C 0A Hmmm, good job,.
0010h: 74 68 65 20 66 6C 61 67 20 69 73 20 6E 6F 74 20 the flag is not
0020h: 52 43 54 46 7B 57 65 31 6C 5F 64 30 6E 33 5F 36 RCTF{We1l_d0n3_6
0030h: 75 74 5F 77 68 34 74 5F 69 35 5F 2A 6B 65 79 2A ut_wh4t_i5_*key*
0040h: 7D 0A 20 }.
RCTF{We1l_d0n3_6ut_wh4t_i5_*key*}
然后我就天真的以为这就是flag了
交了半天没交上,再回来看
题目中的描述说了key 不存在,然后题目中有md5的字眼
我们去找一下之前异或的key能不能被查到
01780C4C109E3237120CFBBACB8F6A53
这个没有被查到
然后就想不到怎么做了。
网上的wp都说对他进行md5解密,去异或了一下32
a = ['01','78','0C','4C','10','9E','32','37','12','0C','FB','BA','CB','8F','6A','53']
final = []
for i in range(0,len(a)):x = int(a[i],16)final.append(hex(x^32)[2:])print(hex(x^32)[2:].zfill(2),end="")
print(final)
21582c6c30be1217322cdb9aebaf4a73
将21582c6c30be1217322cdb9aebaf4a73
去查一下md5得到了that
将原来flag里面的key
换成that
就好了
RCTF{We1l_d0n3_6ut_wh4t_i5_that}
全部的脚本:
str1 =[0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53]
result=[]
txt =[0x69,0x35,0x41,0x01,0x1C,0x9E,0x75,0x78,0x5D,0x48,0xFB,0xF0,0x84,0xCD,0x66,0x79,0x55,0x30,0x49,0x4C,0x56,0xD2,0x73,0x70,0x12,0x45,0xA8,0xBA,0x85,0xC0,0x3E,0x53,0x73,0x1B,0x78,0x2A,0x4B,0xE9,0x77,0x26,0x5E,0x73,0xBF,0xAA,0x85,0x9C,0x15,0x6F,0x54,0x2C,0x73,0x1B,0x58,0x8A,0x66,0x48,0x5B,0x19,0x84,0xB0,0x80,0xCA,0x33,0x73,0x5C,0x52,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0xFB,0xBA,0xCB,0x8F,0x6A,0x53,0x01,0x78,0x0C,0x4C,0x10,0x9E,0x32,0x37,0x12,0x0C,0x89,0xD5,0xA2,0xFC]
for i in range(len(txt)):tmp = 0tmp = str1[i%len(str1)]^txt[i]result.append((hex(tmp)[2:]).zfill(2))print((hex(tmp)[2:]).zfill(2),end="")
print('\n')
result2=[]
for j in range(len(result)):tmp = 0tmp = int(result[j],16)^0x20result2.append((hex(tmp)[2:]).zfill(2))print((hex(tmp)[2:]).zfill(2),end="")
print('\n')
print(hex(0x1c^0x2a))
a = ['01','78','0C','4C','10','9E','32','37','12','0C','FB','BA','CB','8F','6A','53']
final = []
for i in range(0,len(a)):x = int(a[i],16)final.append(hex(x^32)[2:])print(hex(x^32)[2:].zfill(2),end="")
print(final)
总结一下
异或文件找到可以读的出来的明文还是挺好玩的,但是这个思路说实话有点跳跃,然后不看wp估计要做很久很久很久吧
参考
https://blog.csdn.net/weixin_44604541/article/details/112403221
RCTF-2015-x_xor_md5相关推荐
- 攻防世界writeup——Web(持续更新)
文章目录 ics-06(XCTF 4th-CyberEarth) NewsCenter( XCTF 4th-QCTF-2018) lottery(XCTF 4th-QCTF-2018) NaNNaNN ...
- android app渗透测试-Activity、Service
Android App中可能出现的安全漏洞的类型: 协议--通信协议(本地.网络),协议大部分是由C/C++实现,存在以下安全问题:通信数据引发的逻辑漏洞:通信数据引发的缓冲区溢出等可能导致远程代码执 ...
- jarvisoj pwn XMAN系列
目录 level0 level1 level2 level2_x64 level3 Level3_x64 level0 题目明显提示:buf的长度是0x80,可以直接覆盖掉return address ...
- android 克隆攻击原理,通过CTF学习Android漏洞(炸弹引爆+dex修复)2015 RCTF / 攻防世界高手区 where...
0x00 说明 刷android ctf题,感觉涉及的点不错,分享一下做题过程. 题目: 2015 RCTF / 攻防世界高手区 where 描述(提示): Where is the flag.(Th ...
- 龙岩学院计算机二级报名时间,福建龙岩学院2015年12月计算机等级考试报名通知...
福建龙岩学院2015年12月计算机等级考试报名通知 各学院: 根据上级有关文件通知,2015年12月福建省高校学生计算机应用水平等级考试开始报名,现将有关事项通知如下: 一.考试内容: 本次一.二考试 ...
- 浙江大学通信与计算机网络,新浙大2015年通信与计算机网络离线作业.doc
新浙大2015年通信与计算机网络离线作业 浙江大学远程教育学院 <通讯与计算机网络>课程作业 姓名:学 号:年级:14年春学习中心:温州学习中心 从资源共享的角度来定义计算机网络,计算机网 ...
- 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)
2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...
- CV算法复现(分类算法5/6):ResNet(2015年 微软亚洲研究院)
致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 目录 致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 1 本次要 ...
- mysql如何下载连接到visual_Visual Studio 2015 Community连接到Mysql
Visual Studio 2015 Community连接到MySQL,步骤很简单,但刚弄的时候一脸懵,现在记录如下以作备忘: 安装好VS2015和Mysql后,只需要再安装两个东西即可. 一个是S ...
- 微软批量授权版WINDOWS 10资料(截至到2015年11月,此处无下载地址)
微软批量授权版WINDOWS 10资料: 1.专业版: Windows 10 专业版(2015 年 7 月发布) WINDOWS 10专业版简体中文,32位/64位 SW_DVD5_Win_Pro_1 ...
最新文章
- adb logcat查看手机端日志
- 如何查看python解释器位置_Python:查看解释器的位置
- 如何在Java中使用Lombok删除样板安装程序获取器
- React开发(126):ant design学习指南之form中的自定义校验validator
- 微信小程序视图层WXML_小程序事件
- IntelliJ IDEA 必备的快捷键大全
- Translation 翻译插件google
- TwinCAT 3 EL7211模块控制倍福伺服
- php 七牛云 视频加水印
- 2022年茶艺师(中级)考试题模拟考试题库模拟考试平台操作
- Mac下Brew 卸载MySql以及安装Mysql 阿星小栈
- ISP—自动白平衡(AWB)
- python去除空行_python中去掉空行的问题
- 十进制转二进制,用java的两种基本方法,适合新手
- 华为OD机试 - 按身高和体重排队(Java JS Python)
- java中给对象的List集合去重的几种方法(Lambda)
- PC的ARM的安全启动
- 华为2018年机试练习题[java版]
- MATLAB/Simulink 线性分析工具箱频域分析(手把手教会)
- python open报错:‘gbk‘ codec can‘t decode byte 0xbd in position xxxx: illegal multibyte sequence
热门文章
- python如何设置画布开始位置_Python用Turtle绘图,原来如此简单
- cf显示网络连接服务器失败怎么办,cf连接服务器失败怎么办
- container_of的用法
- 常见容错机制:failover、failfast、failback、failsafe
- 杨帅浙江大学计算机,诚邀校友见证杭州校友会注册成立(非活动帖)
- python安装numpy模块教程_python安装numpy科学计算模块
- 在html中打字如何变大,如何把字体放大 如何更改桌面与网页字体大小-电脑教程...
- 获取iv和encryptedData
- XHR 和 Fetch 的使用详解和区别总结
- UCI糖尿病数据利用逻辑回归算法进行训练和预测