题目分析
该题是将输入的参数数进行解析然后取出进行计算
然后后面有一个验证(cpp + py * js) ^ *(name + i)) != *(&v148 + i + 8)
用ida-python解出
1 | flag = [0x4c,0x70,0x71,0x6b,0x38,0x71,0x6b,0x38,0x6c,0x70,0x7d,0x38,0x6f,0x6a,0x77,0x76,0x7f,0x38,0x7e,0x74,0x79,0x7f,0x36,0x36,0x36] |
很明显This is the wrong flag...
继续往下看
输入的name为11位
然后开始对输入的那么进行识别
计算出0~8
,b~z
的个数,并且如果输入的name不为0~8
,b~z
就必须是- / * ( )
然后验证0~8
,b~z
的个数是否为5,1 第二位是否为b~z
最后一个验证result
是否等于24
很容易看出这是在进行24点的运算0~8
与- / * ( )
还有一个字母应该是e
脚本
我的17小时脚本
1 | import itertools |
poker师傅的5秒脚本
1 | from hashlib import md5 |
总结
脚本写了很久去问了poker师傅,然后发现原来那个e
是科学记数法,我一直以为是自然底数。。。mmp