首页 > 其他 > 详细

hgamefinal re peko-chain!

时间:2020-03-10 00:06:07      阅读:59      评论:0      收藏:0      [点我收藏+]

这题一直想偏了,一直关心4,结果1才是重点。。。还是太菜了。。。

感觉自己做题时总是很慌,平时刷题还好,一到比赛本来能分析明白的地方也看不出来。。。不知有没有什么好办法。。。

======================================================================================================

 这题是一个简化的区块链,提示了是哈希链表,慌得我连提示没注意到

技术分享图片

 

本题的关键在于1,

技术分享图片

 

 在sub_400A76里

技术分享图片

 

 将输入的名字md5后做了一个这样的结构,之后在sub_4008F6里

技术分享图片

 

 将这个结构再次md5,将md5&0xfffff作为索引,在创世块中这个值为1656A

再看2

技术分享图片

 

 在2和4里都用了这个函数,可以由此拿到shell,但是由于4里有cat flag 我一直在看4,结果其实4里是个假flag和提示

hgame{fakefakefakefake}
Im so sorry that lied you..But to be honest, you are a bit close to the final answer
You may also realized that the peko-chain has So many bugs there
To think about it: Its hash function always safe? Or what is the defiction of safe hash function
Good Luck~

 于是思路就是在将输入名字进行计算后,在用2拿shell

先计算

# -*- coding: utf-8 -*-
import base64,hashlib
from itertools import *
list = abcdefghijklmnopqrstuvwxyz
for i in product(list, repeat=5):
    name = "".join(i)
    name_md5 = hashlib.md5(name).hexdigest()
    j=0
    name_key=b‘‘
    for i in range(16):
        name_key+=chr(eval(0x+name_md5[j:j+2]))
        j+=2;
    key = \x75\x6F\x6B\x6E\x6E\x69\x67\x69\x6B\x75\x73\x64\x6F\x6B\x65\x70
    key+=name_key
    key+= \x6A\x65\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
    key+= \x32\x00\x00\x00\x00\x00\x00\x00
    key = hashlib.md5(key).hexdigest()
    if(key[0:4]==6a65 and key[5]==1):
        print realname:+name
        break
6a65f10a5f7b7d53a73a0c5094a6e5be
realname:enecr

技术分享图片

 

 注:虽然放的都是静态调试的图,但其实是做完之后懒得截图了,主要还是靠动态调试出来

 

最后感谢出题人Ch1p姐姐赛后的指导

 

hgamefinal re peko-chain!

原文:https://www.cnblogs.com/harmonica11/p/12433338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!