mark一下,以后分析

原文:http://sibears.ru/labs/ASIS-CTF-Quals-2016-Leaked_License/

[ASIS CTF Quals 2016] - 泄露许可证[64]

GROKE

, 2016年5月9日

我从朋友的朋友的老兄那里借了这个软件许可证和图书馆!如果我可以伪造今年竞争计算机ID的许可证,那就太好了。

我们获得了Leaked_Lisence.dll和文件admin@nsa.gov.us_license

Groke @ MacBook-Air-groke:〜/ ctf / asis / Leaked_Lisence $ cat admin \ @nsa.gov.us_license 
7e43ecf0b4e27dacfb5e613437b17acb46e8deab2c70510dc71844b492a691ec

在dll中,导出一个验证方法,其参数占用48个字节。如果稍微查看一下该文件,可以看到源代码是C ++中的:

“ios_base :: eofbit set”
“ios_base :: failbit set”
“ios_base :: badbit set”

然后假设参数是std :: string。使用代码,我们恢复以下形式的字符串:

struct  magic {
union {
char * s1 ;
char s2 [ 16 ];
};
int size ;
int real_length ;
};

将此结构添加到id后,很明显验证函数按值接受2个这样的行。

实际上,算法本身如下(伪Python):

DEF  验证(ID , 许可证):
与 开放(“secret.key” ) 作为与 secret_file:
秘密 = secret_file 。read ()
checkString = sha256 (secret )。解码('hex' )
而 len (id ) < 32 :
id = id + id
secretFromUser = “”
license = license 。解码('hex' )
for x in xrange (32 ):
secretFromUser + = chr (ord (id [ i ]) ^ ord (license [ i ]))
check2 = sha256 (secretFromUser )。解码('hex' )
如果 check2 。equal (checkString ):
返回 1
返回 0

显然,这足以让我们从此许可证中获取secretFromUser并在其基础上生成我们自己的许可证。有一个问题,因为不清楚许可证的ID是什么。有一种理论认为某处出现了错误,并且编写了以下文件以便用笔感觉:

#include“stdafx.h”
#include <iostream>
#include <string>
#include <Windows.h> struct magic {
union {
char * s1 ;
char s2 [ 16 ];
};
int size ;
int real_length ;
}; magic * get_my_magic (char * buf ){
struct magic * ret = (magic * )malloc (24 );
int ln = strlen (buf );
ret - > s1 = (char * )malloc (ln );
ret - > size = ln ;
ret - > real_length = ln ;
strncpy (ret - > s1 , buf , ln );
return语句 的RET ;
} int main () {
magic * id = get_my_magic (“admin@nsa.gov.us” );
magic * key = get_my_magic (“7e43ecf0b4e27dacfb5e613437b17acb46e8deab2c70510dc71844b492a691ec” );
auto hMod = LoadLibraryA (“Leaked_Lisence.dll” );
auto myFunc = (int (* )(magic , magic ))GetProcAddress (hMod , “verify” );
汽车 s = myFunc (* id , * key );
std :: cout << s << std :: endl ;
}

需要魔术结构,因为工作室中的sizeof(std :: string)<> 24

然而,实践表明理论计算是正确的,我们回到了id的搜索。尝试过“quals2016@asis-ctf.ir”后,我们获得了以下许可证:
6e52e0f5a99023eeac30672828ec22db53ea9dab30414a1fca4511ebd5bea4fe 
,结果就是flag:

ASIS{6e52e0f5a99023eeac30672828ec22db53ea9dab30414a1fca4511ebd5bea4fe}

攻防世界 reverse leaked-license-64的更多相关文章

  1. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  2. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  3. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  4. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  5. 攻防世界 reverse parallel-comparator-200

    parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...

  6. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  7. 攻防世界 reverse Windows_Reverse2

    Windows_Reverse2   2019_DDCTF 查壳: 寻找oep-->dump-->iat修复   便可成功脱壳 int __cdecl main(int argc, con ...

  8. 攻防世界 reverse seven

    seven  hctf2018 这是一个驱动文件 ida载入,查找字符串 根据字符串来到函数:sub_1400012F0 __int64 __fastcall sub_1400012F0(__int6 ...

  9. 攻防世界 reverse Replace

    Replace 湖湘杯2018 查壳upx,手动脱壳,修复IAT,去掉重定向便可以运行. ida查看,流程清晰.关键函数check_E51090. int __cdecl main(int argc, ...

随机推荐

  1. TypeScript Generics All In one

    TypeScript Generics All In one TypeScript 泛型 代码逻辑复用 扩展性 设计模式 方法覆写, 直接覆盖 方法重载,参数个数或参数类型不同 test " ...

  2. vue-cli & plugin:vue/strongly-recommended bug

    vue-cli & plugin:vue/strongly-recommended bug ESLint plugin:vue/strongly-recommended module.expo ...

  3. js & object & prototype & __proto__ & prototype chain

    js & object & prototype & proto & prototype chain constructor prototype === instance ...

  4. UI & APP

    UI & APP lanhu http://help.lanhuapp.com/hc/ http://help.lanhuapp.com/hc/kb/article/1173434/ 快速使用 ...

  5. Google can't be accessed again, today is shit day

    Google can't be accessed again, today is shit day 2019.11.28 12:00~20:56 holy shit (pile of poop) Go ...

  6. APC推出鞋底缓震科技 两款中高端跑鞋将陆续上市

    近日,英国知名运动品牌APC(公司编号:08703733)推出了全新的鞋底缓震科技 NOVR,该项技术将首先应用于两款跑步鞋上,随后陆续应用到其他重点鞋类产品. 是对于各大运动品牌来说,鞋底研发一直是 ...

  7. 为什么NGK推出的DEFI项目这么火热?

    进入到2020年的下半年,DeFi的锁仓量基本上是以日破新高的态势,不断的成为一个独角兽.DeFi逐渐形成一个独角兽的同时,也在不断的给区块链生态赋能,源源不断进行金融价值输送.所以加密货币体量的不断 ...

  8. C++算法代码——和为给定数

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?cid=1376&pid=0 题目描述 给出若干个整数,询问其中是否有一对数的和等于给 ...

  9. 五分钟快速上手MyBatis

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. 可以通过简单的 XML 或注解来配置和映射,Ja ...

  10. 后端程序员之路 47、Hadoop hdfs

    Hadoop的核心是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase.Hive等,这些都是基于HDFS和MapReduce发 ...