本帖最后由 syncking 于 2019-8-25 08:35 编辑
[Asm] 纯文本查看 复制代码 00161E80 > /0FBE5435 C8 movsx edx,byte ptr ss:[ebp+esi-0x38] ; edx 代表是输入的数据
00161E85 . |8BC3 mov eax,ebx ; ebx 3F91E504
00161E87 . |D3F8 sar eax,cl
00161E89 . |83EA 30 sub edx,0x30
00161E8C . |0FB6C0 movzx eax,al
00161E8F . |33D0 xor edx,eax
00161E91 . |3954B5 B8 cmp dword ptr ss:[ebp+esi*4-0x48],edx ; 要对比的数据分别是 0x16 0xE4 0xB3 0xBD
00161E95 |75 30 jnz short Clever_B.00161EC7 ; 不相等就跳转到 error
00161E97 |83C1 08 add ecx,0x8
00161E9A |46 inc esi
00161E9B |83F9 20 cmp ecx,0x20 ; 这里限制了 只比较了 4位
00161E9E .^\7C E0 jl short Clever_B.00161E80
00161EA0 . 8B0D 98401600 mov ecx,dword ptr ds:[<&MSVCP140.?cout@s>; msvcp140.?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A
00161EA6 . BA 30431600 mov edx,Clever_B.00164330 ; congratulation,submit with format: flag{key}
00161EAB . 68 20261600 push Clever_B.00162620
00161EB0 . E8 2B050000 call Clever_B.001623E0
刚刚我写的那个python脚本 算出来的第四个数据也只有 2次方符号 符合答案
程序输入B1R2是错的,控制台输入B1R2次方 ,这个2次方符号从这个程序汇编上看是按ASCII(32)对待的。所以怎么输入也不会对
我觉得就是出题的人就是不想让你通过输入得到数据 所以用了一个2次方符号的数据
其他的我就不知道 一个菜鸟的分析 |