MCTF 第一期winwin
来源:互联网 发布:永利国际中心 商业数据 编辑:程序博客网 时间:2024/05/16 11:17
附上网址:这里写链接内容
((_BYTE )&v18 + v10) = ~((_BYTE *)&v18 + v10);
大眼一看这玩意不就是取反吗但是取反之后的值是这玩意
-179 -189 -172 -186 -133 -171 -139 -139 -144 -136 -136 -168 -161 -207 -27 -60 -29 -173 -188 -239 -31 -28 -29 -171 -19 -14 -162 -179 -78 -94。都是负数,不懂就百度吧
char a=2; 那么a=00000010 (char 单字节) 对a取反 ~a=11111101 因为char是无符号型。
那么对无符号数而言,11111101即是253 注意,取反是对整个数位取反,而不是对有效数位取反。
char是无符号型 用python求~会的到负数。
与0xff异或可以求反求得的结果是无符号型
怎么说呢,本以为所有题都是一个套路,结果还是被出题人给骗了
关键代码就这些:
v18 = xmmword_4031F0; v19 = 0xCF9194A0; v10 = 0; v20 = 0x7D88; v21 = 0; v12 = xmmword_4031E0; v13 = 0x7744CF7B; v14 = 0x1EE3; v15 = 0; v11 = strlen((const char *)&v18); if ( v11 != 1 ) { do { if ( (unsigned int)&v18 + v10 + 5 - (_DWORD)&v18 > v11 - 2 ) break; *((_BYTE *)&v18 + v10) = ~*((_BYTE *)&v18 + v10); *((_BYTE *)&v18 + v10 + 5) ^= *((_BYTE *)&v12 + v10) ^ (unsigned __int8)(*((_BYTE *)&v18 + strlen((const char *)&v18) - v10) >> 3); ++v10; v11 = strlen((const char *)&v18); } while ( v10 < v11 - 1 ); v4 = a4; } if ( v4 == dword_40438C ) sub_401160(asc_4031A8, asc_4031D4, &v18); return 0; }
首先想到的是查看一下v12和v18,然后跟着他的操作来一遍,结果欣欣苦苦编出来的代码输出是一对没用的字符。这就很无奈了o(╥﹏╥)o
其实这里存在了一个套路,出题人让你误以为输出的是这些,是不是很可怕,其实flag是其中的一部分只取代码的上半段的话:
v12=[0x1a,0x3b,0x1c,0xac,0xbb,0xee,0x1e,0x1b,0x1c,0xaa,0x12,0x0d,0xa1,0xb2,0x4d,0x5d,0xb2,0xbc,0xab,0xb9,0x84,0xaa,0x8a,0x8a,0x8f,0x87,0x87,0xa7,0xa0,0xce,0x7b,0xcf,0x44,0x77,0xe3,0x1e]v18=[0xb2,0xbc,0xab,0xb9,0x84,0xaa,0x8a,0x8a,0x8f,0x87,0x87,0xa7,0xa0,0xce,0xa0,0x94,0x91,0xcf,0x7d,0x88]for i in range(len(v18)): v18[i]= v18[i]^0xff print chr(v18[i]),
执行这段代码
M C T F { U u u p x x X _ 1 _ k n 0 � w
这玩意看起来勉强算是flag吧,细心的人能发现他就是upx i know
应该就是了加上最后一个}试一下果然通过了。^_^
总结:城市套路深,不能只有单纯的想法去破解。
不确定那个函数是不是输出flag之前一定要把每一步得出来的值好好看一下,很可能flag就在他们中间
无符号型数的取反
- MCTF 第一期winwin
- 第一期
- 第一期
- WinWin Spiral Model
- 第一期推荐参考
- 第一期征文结果
- 第一期导读
- 第一期工程完成~
- 心情寄语 第一期
- 集训队第一期总结
- android 学习第一期
- Java学习第一期
- 周报-第一期
- iOS 周刊 第一期
- Android碎片第一期
- 传智播客网络营销第一期
- Unity 第一期
- weak win 第一期
- 后端_第五课_添加route_todo各种功能、丰富SESSION_expired、初步涉及管理员权限
- im不丢消息设计
- MySQL预处理语句深入分析
- oracle 表空间
- css 底部局中
- MCTF 第一期winwin
- Hibernate 级联更新和外键维护-自我总结
- scrapy防禁止 设置user-agent的方法
- Android RSA加密,通过模数和指数生成秘钥在加密遇到的坑
- CodePlus 2017 11 月赛 div2 题解
- 习题6.13
- 学习swift做ios程序
- 正则表达式详解和示例
- PHP 全局变量(global)