题目:

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相关推荐

  1. 攻防世界writeup——Web(持续更新)

    文章目录 ics-06(XCTF 4th-CyberEarth) NewsCenter( XCTF 4th-QCTF-2018) lottery(XCTF 4th-QCTF-2018) NaNNaNN ...

  2. android app渗透测试-Activity、Service

    Android App中可能出现的安全漏洞的类型: 协议--通信协议(本地.网络),协议大部分是由C/C++实现,存在以下安全问题:通信数据引发的逻辑漏洞:通信数据引发的缓冲区溢出等可能导致远程代码执 ...

  3. jarvisoj pwn XMAN系列

    目录 level0 level1 level2 level2_x64 level3 Level3_x64 level0 题目明显提示:buf的长度是0x80,可以直接覆盖掉return address ...

  4. android 克隆攻击原理,通过CTF学习Android漏洞(炸弹引爆+dex修复)2015 RCTF / 攻防世界高手区 where...

    0x00 说明 刷android ctf题,感觉涉及的点不错,分享一下做题过程. 题目: 2015 RCTF / 攻防世界高手区 where 描述(提示): Where is the flag.(Th ...

  5. 龙岩学院计算机二级报名时间,福建龙岩学院2015年12月计算机等级考试报名通知...

    福建龙岩学院2015年12月计算机等级考试报名通知 各学院: 根据上级有关文件通知,2015年12月福建省高校学生计算机应用水平等级考试开始报名,现将有关事项通知如下: 一.考试内容: 本次一.二考试 ...

  6. 浙江大学通信与计算机网络,新浙大2015年通信与计算机网络离线作业.doc

    新浙大2015年通信与计算机网络离线作业 浙江大学远程教育学院 <通讯与计算机网络>课程作业 姓名:学 号:年级:14年春学习中心:温州学习中心 从资源共享的角度来定义计算机网络,计算机网 ...

  7. 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)

    2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...

  8. CV算法复现(分类算法5/6):ResNet(2015年 微软亚洲研究院)

    致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 目录 致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 1 本次要 ...

  9. mysql如何下载连接到visual_Visual Studio 2015 Community连接到Mysql

    Visual Studio 2015 Community连接到MySQL,步骤很简单,但刚弄的时候一脸懵,现在记录如下以作备忘: 安装好VS2015和Mysql后,只需要再安装两个东西即可. 一个是S ...

  10. 微软批量授权版WINDOWS 10资料(截至到2015年11月,此处无下载地址)

    微软批量授权版WINDOWS 10资料: 1.专业版: Windows 10 专业版(2015 年 7 月发布) WINDOWS 10专业版简体中文,32位/64位 SW_DVD5_Win_Pro_1 ...

最新文章

  1. adb logcat查看手机端日志
  2. 如何查看python解释器位置_Python:查看解释器的位置
  3. 如何在Java中使用Lombok删除样板安装程序获取器
  4. React开发(126):ant design学习指南之form中的自定义校验validator
  5. 微信小程序视图层WXML_小程序事件
  6. IntelliJ IDEA 必备的快捷键大全
  7. Translation 翻译插件google
  8. TwinCAT 3 EL7211模块控制倍福伺服
  9. php 七牛云 视频加水印
  10. 2022年茶艺师(中级)考试题模拟考试题库模拟考试平台操作
  11. Mac下Brew 卸载MySql以及安装Mysql 阿星小栈
  12. ISP—自动白平衡(AWB)
  13. python去除空行_python中去掉空行的问题
  14. 十进制转二进制,用java的两种基本方法,适合新手
  15. 华为OD机试 - 按身高和体重排队(Java JS Python)
  16. java中给对象的List集合去重的几种方法(Lambda)
  17. PC的ARM的安全启动
  18. 华为2018年机试练习题[java版]
  19. MATLAB/Simulink 线性分析工具箱频域分析(手把手教会)
  20. python open报错:‘gbk‘ codec can‘t decode byte 0xbd in position xxxx: illegal multibyte sequence

热门文章

  1. python如何设置画布开始位置_Python用Turtle绘图,原来如此简单
  2. cf显示网络连接服务器失败怎么办,cf连接服务器失败怎么办
  3. container_of的用法
  4. 常见容错机制:failover、failfast、failback、failsafe
  5. 杨帅浙江大学计算机,诚邀校友见证杭州校友会注册成立(非活动帖)
  6. python安装numpy模块教程_python安装numpy科学计算模块
  7. 在html中打字如何变大,如何把字体放大 如何更改桌面与网页字体大小-电脑教程...
  8. 获取iv和encryptedData
  9. XHR 和 Fetch 的使用详解和区别总结
  10. UCI糖尿病数据利用逻辑回归算法进行训练和预测