CTFlearn: Lost Password

题目来源:https://ctflearn.com/index.php?action=find_problem_details&problem_id=380

原题:

Lost Password

I lost my password :( can you crack my program

https://mega.nz/#!caZxSBTT!qnrxeFvX5FOcSIngekCj4ZOO8R2EeuBhOryVieCumd0

Format Flag : flag{key/password}

下载题目中的文件,在kali中运行:


程序让我们输入密码,之后返回了一串字符。根据题意,正确的密码就是flag值。

将文件放入IDA pro中进行反编译,查看main函数源码:


可以看到main函数中只是判断密码是否符合一些条件,并没有调用更多的函数。如果密码符合条件则打印出“Password Benar!”,否则打印“Password Salah!”。分析源码可以看到用户输入的密码存放在字符数组s中。之后一个for循环检查s中的每个字符是否与整型v4内存中所对应的字符相同。之后还判断了s的长度是否为12。所以我们可以得出密码的长度为12个字符,并且其字符与v4中的相同。

我写了一个c程序来计算v4所对应的字符串:


运行结果为:


前8个字符看起来很像正确的字符,但是后面的字符却溢出了。这是因为一个长整型没有足够的空间来储存12byte长度的字符串,所以程序中还在v4之后定义了v5。我们以同样的方式来计算v5所对应的字符串可以得到:


字符串:“1N1_P455W0RD”的长度正好是12,将其输入到程序中:


程序显示密码正确!安装题目给出的flag的格式,flag就是:flag{1N1_P455W0RD}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,819评论 0 10
  • 以前我手机里有很多流行歌曲,上下班公车上无聊的时候,就会翻出来听听。很多歌已被我放入手机很长时间了,但我总是...
    已不是从前阅读 2,284评论 0 6
  • 温度养生9句话: 1.活人与死人 解释:活人有温度,死人没温度,人活着就要有温度。 说明☞温度决定生死! 2.小孩...
    趁早养生阅读 399评论 0 0
  • “辉儿今个回来的也挺早啊。”刚走进大门洞,从后院老房子里走出来的标嫂就笑呵呵的跟我打着招呼。每次见到我都是这样称...
    AA皓月苍穹阅读 105评论 0 3
  • 我行走街头,置身于百姓中间,用心观察,时刻准备着去按动快门。因为故事就在身边,一切贵在发现,用抢拍偷拍的方式,尽可...
    刘爱国阅读 377评论 0 1