CTF实验吧——证明自己吧
没有壳 ,vc++ 写的 ? 拖进OD观察观察,发现代码很短哟,先来看这俩个call 怀疑他们其中有正确的flag和我们输入的东西对比 ? 再进IDA里 main 空格,发现 关键函数就是sub_401060 ? 双击进入查看sub_401060的伪C代码 分成三个部分: 第一,将我们输入的a1与v5的长度比较,将a1的每一项都进行异或。 第二,将v5的每一项都减去5 第三,可以当成这样看, while(?? *(a1 + v3) == *(_BYTE *)&V5+V3) ?? ) 就是把我们输入的a1与v5逐个比较 ps:这里的if(strlen((const char *)v5)==0)return 1;判断v5元素为0个就返回1,没啥用。有点迷惑,不管他。 所以 这里我们逆推,先将v5减去5再异或(注意异或的性质 顺序不要搞错了),不就得到了应该输入的正确的值了吗 v5的数据可以根据地址去寻找,v5=dword_40708C ,这里用OD比较方便 ctrl+G,因为V5是字符串,所以指向的是该字符串的首地址,则V5为 68 57 19 48 50 6e 58 78 54 6a19 58 5e 06(都为十六进制) 拿下来,用python或者C语言写脚本即可解得答案。 python: a=" " code=(0x68,0x57,0x19,0x48,0x50,0x6E,0x58,0x78,0x54,0x6A,0x5E,0x06) for i in code: i=(i-5)^0x20 a+=chr(i) print(a) ?C: #include<stdio.h> 验证一下,对的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- About Regular Expression
- ios – Xcode 4.6 xcode更新后的zXing编译错误(4H127)
- c# – Linq-to-entities,在一个查询中获取结果行数
- flex中读取本地文件[图像为例]
- java结合testng,利用txt做数据源的数据驱动实例
- 关于C++友元函数的实现讲解
- vb.net WebBrowser页面与WinForm交互技巧
- redux-form(V7.4.2)笔记(四)SelectingFormValuesForm实
- swift – 如何创建可以在Key中保存任何内容的字典?或者它能
- 敏捷开发的精神内涵 (原文最终修订于2006-08-11 上午10:49