攻防世界 reverse leaked-license-64
mark一下,以后分析
原文:http://sibears.ru/labs/ASIS-CTF-Quals-2016-Leaked_License/
[ASIS CTF Quals 2016] - 泄露许可证[64]
, 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:
攻防世界 reverse leaked-license-64的更多相关文章
- 攻防世界 reverse 进阶 APK-逆向2
APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...
- 攻防世界 reverse 进阶 10 Reverse Box
攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...
- 攻防世界 reverse evil
这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...
- 攻防世界 reverse tt3441810
tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...
- 攻防世界 reverse parallel-comparator-200
parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...
- 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017
8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...
- 攻防世界 reverse Windows_Reverse2
Windows_Reverse2 2019_DDCTF 查壳: 寻找oep-->dump-->iat修复 便可成功脱壳 int __cdecl main(int argc, con ...
- 攻防世界 reverse seven
seven hctf2018 这是一个驱动文件 ida载入,查找字符串 根据字符串来到函数:sub_1400012F0 __int64 __fastcall sub_1400012F0(__int6 ...
- 攻防世界 reverse Replace
Replace 湖湘杯2018 查壳upx,手动脱壳,修复IAT,去掉重定向便可以运行. ida查看,流程清晰.关键函数check_E51090. int __cdecl main(int argc, ...
随机推荐
- shiro<1.2.4反序列化分析
0x01.环境搭建 下载地址:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 环境:Tomcat 8.5.27 + idea ...
- Pycharm+任务栏悬浮+docked mode
先点下所想改变模式的模块, 然后: Window -> Activate tool window -> docked mode.
- map & forEach
map & forEach let logs = `2018-05-23 20:24:09,876 [Timer-2] ERROR org.gil.sydb.server.table.sync ...
- why 2020 you should create a new modern website with web fullstack
why 2020 you should create a new modern website with web fullstack Full-Stack Web Development Front- ...
- 如何取消一个 Ajax 请求
如何取消一个 Ajax 请求 jQuery XMLHttpRequest.abort() https://stackoverflow.com/questions/446594/abort-ajax-r ...
- IM SDK & websocket & chart room
IM SDK & websocket & chart room IM SDK https://imsdk.com/ https://cloud.tencent.com/document ...
- moment.js 时间格式转换
moment.js 时间格式转换 moment.js 时间转化 bug 格式错误 bug 02:00 => 14:00 format HH 与 hh HH === 24 小时制 hh === 1 ...
- 「NGK每日快讯」11.28日NGK公链第25期官方快讯!
- 「NGK每日快讯」11.25日NGK公链第23期官方快讯!
- 「NGK每日快讯」12.4日NGK公链第31期官方快讯!