g2uc

TeamBlog

[REVERSE]0x2 PY&MD5

题目文件:
链接: https://pan.baidu.com/s/1s3Sq3nIHeMAMX797MIbiKQ 密码: hnyc


下载题目文件后发现是pyc文件,无法直接查看源码内容,因此百度找个pyc反编译网站(例如:https://tool.lu/pyc/)直接反编译得到源码:

#!/usr/bin/env python
import md5
md5s = [
    0x1EBFD5913EF450B92B9E65B6DE09ACADL,
    0x1C6B2CF25EB36540376A3B3FA208A9FBL,
    0x6696D088517C9390167FEDB2BC876E12L,
    0x944891A872A4891002F7CAF24C70FD79L,
    0x22D1BDC61CC009B82C178607A3569FD2L,
    0x964DE3CD368503D06156731676AFF358L,
    0x68B05F0EA56017A63E7255C991FD5D15L,
    0x4FBA80ED85D2B50ECE2DD336DA68B220L,
    0x4DC6E4668713974D68D44544FA7177C9L,
    0x919C5A8E20AE0DA98CA1F673F7AE519DL]
print 'Can you turn me back to python ? ...'
flag = raw_input('well as you wish.. what is the flag: ')
if len(flag) > 50:
    print 'nice try'
    exit()
if len(flag) % 5 != 0:
    print 'nice try'
    exit()
for i in range(0, len(flag), 5):
    s = flag[i:i + 5]
    if int('0x' + md5.new(s).hexdigest(), 16) != md5s[i / 5]:
        print 'nice try'
        exit()
        continue
print 'Congratz now you have the flag'

容易看出该程序就是将输入的值分成10段每段5个字节,判断每段的md5是否与其保存的md5相等,相等则输入的值为正确flag.
解密方法也很粗暴简单,直接到SOMD5(https://www.somd5.com/) 将这十个md5值解密并拼接在一起即可得到正确flag.

FLAG值:

whaleCTF{qAxcx2M3gRf3MGRDFZ2aI6FiNC7Mrm3qEQETD1ew}

发表评论:

搜索
标签列表
网站分类
文章归档
站点信息
  • 文章总数:20
  • 页面总数:0
  • 分类总数:4
  • 标签总数:7
  • 评论总数:1
  • 浏览总数:566
控制面板
您好,欢迎到访网站!
  查看权限

Powered By Z-BlogPHP 1.5.2 Zero

Copyright g2uc Rights Reserved.

公告

请把不属于分类中比赛的题目wp发布在essay分类!另外,题解文章请记得在标签里标注题目类型!