首页
社区
课程
招聘
[原创]更新后的第一题仍然多解
2019-6-10 17:17 1737

[原创]更新后的第一题仍然多解

2019-6-10 17:17
1737

系统认可的答案是:401353

但经我验证,3A!353 也可以通过验证


算法很简单,serial为6个字符,后三个必须是353. 前三个的ASCII相加等于149. 然后根据某个算法算出一个值保存在ESI中,这个ESI必须等于0x401353。接下来会发生异常,在异常处理的过程中会打印"success!"。

求解的过程也不复杂,设前三个字符分别为x, y, z,然后遍历所有可能求解即可。代码如下:

def check(x, y, z):
    
    val = 0 
    for i in [x, y, z, 0x33, 0x35, 0x33]:
        val = 16 * val + i - 48
    
    return val == 0x401353

for x in range(1, 148):
    for y in range(1, 149 - x - 1):
        z = 149 - x - y
        if z <= 0: continue
        if check(x, y, z):
            print(x, y, z)
            print(chr(x), chr(y), chr(z))

打印结果为

(50, 82, 17)

('2', 'R', '\x11')

(51, 65, 33)

('3', 'A', '!')

(52, 48, 49)

('4', '0', '1')

(53, 31, 65)

('5', '\x1f', 'A')

(54, 14, 81)

('6', '\x0e', 'Q')


也就是说,以下两个输入均是正确的解!

3A!353

401353

经实验也是对的。



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-6-10 17:25 被jeffli编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 7034
活跃值: (2604)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
netwind 13 2019-6-10 19:20
2
0
字母数字以外的字符不允许
雪    币: 233
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
jeffli 2019-6-10 19:34
3
0
netwind 字母数字以外的字符不允许
请问规则中有这样规定吗?我没看到呀。是只适用于这道题,还是这次比赛十道题都是这样?
雪    币: 7034
活跃值: (2604)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
netwind 13 2019-6-10 22:28
4
0
比赛规则 已经论坛置顶 链接 https://bbs.pediy.com/thread-251706.htm


其中注意阅读攻击比赛规则第二条

3、攻击篇比赛规则


(1) 答案提交

题目发布之时开始,得到正确答案,请及时在比赛平台(ctf.pediy.com)提交;

每个团队,任何团队成员都可提交答案,但仅限一名成员提交答案,比如团队5人中,1人提交正确答案后,其余4人则无法提交答案;

在最终成绩公布前请在【答案提交区】发表解题分析文章、所用工具、源代码等材料,且文章有理有据能够详细完成说明自己获得答案的整个过程,否则不予发放奖品。



(2)解题规则

PWN题目公布时,会提供给攻击者服务器IP和漏洞程序对应的端口,必要时会提供漏洞程序二进制文件,攻击者需要利用漏洞获得服务器SHELL,找到FLAG并提交。FLAG提交格式为flag{***}。

CrackMe题目提交的注册码必须由字母、数字或字母数字组合构成;如有需要平台验证注册码的请加比赛专用QQ群8601428联系管理验证,只接收注册码串在防守方预设的输入口输入验证。

WEB题目发布时,会提供给攻击者一个URL,攻击者应根据发现的WEB漏洞从服务器获得FLAG。FLAG提交格式为flag{***}。
游客
登录 | 注册 方可回帖
返回