HBCTF第二场WP-转载

HBCTF第二场WP

https://blog.ctftools.com/2017/05/post153

发表于2017年5月23日

Misc

中非共和国-签到题

题作者:Dr3@m WriteUp作者:Dr3@m

\u0068\u0062\u0063\u0074\u0066\u007b\u7b7e\u5230\u9898\u007d

HBCTF第二场WP-转载_第1张图片

Unicode编码,解码即可,如下图

HBCTF第二场WP-转载_第2张图片

埃塞俄比亚-隐写术

题作者:Dr3@m WriteUp作者:Dr3@m

原题下载:http://hbctf-1252906577.costj.myqcloud.com/misc/color.png

HBCTF第二场WP-转载_第3张图片

用Stegsolve打开图片并左右翻页得到如图:

HBCTF第二场WP-转载_第4张图片

使用binwalk提取或者直接将文件后缀改为.zip解压打开得到如图:

HBCTF第二场WP-转载_第5张图片

连起来就是flag。

坦桑尼亚-知己知彼

题作者:Dr3@m WriteUp作者:Dr3@m

原题下载:http://hbctf-1252906577.costj.myqcloud.com/misc/2-1.zip资源库:https://www.ctftools.com/down/

HBCTF第二场WP-转载_第6张图片

下载附件打开看到BurpLoader.jar,如图:

HBCTF第二场WP-转载_第7张图片

想到burpsuite,猜想是明文攻击,题目给了提示去看资源库,于是到资源库下载并解压出BurpLoader.jar,如图:

顺便把明文攻击工具AZPR下载下来,在暴力破解一栏中。将BurpLoader.jar用好压压缩。安装并打开AZPR,可以点击Option把语言改为简体中文。将待解密压缩包放到“加密的ZIP文件”,攻击类型选择文本攻击(就是明文攻击),点击下方文本,将刚刚压缩的BurpLoader.zip放到“文本文件路径”,如图操作:

HBCTF第二场WP-转载_第8张图片
HBCTF第二场WP-转载_第9张图片

点击上方开始,一会之后即可得到如图:

HBCTF第二场WP-转载_第10张图片

出题时为了防止暴力破解,使用了一个md5作为压缩密码,所以上边显示没有找到密码,如果密码位数较短就可以找到,不过这不影响我们做题,点击确定后即可得到如图:

HBCTF第二场WP-转载_第11张图片
HBCTF第二场WP-转载_第12张图片

解压解密后的压缩包即可获得flag:

HBCTF第二场WP-转载_第13张图片

Crypto

马达加斯加-MIX大礼包

题作者:pcat WriteUp作者:pcat

原题下载:http://hbctf-1252906577.costj.myqcloud.com/crypto/MIX%E5%A4%A7%E7%A4%BC%E5%8C%85.py

HBCTF第二场WP-转载_第14张图片

这题的py脚本里面其实涉及了伪随机数,只要种子一样,之后的随机值都相同,关键点在于不同的操作系统,在题目里已经标明使用windows系统,而且为了不让新手陷入困惑,我都加上了assert来判断。解密的脚本直接把输出当输入,然后修改中间的运算

Python

# -*- coding:utf8 -*-# 使用windows系统fromrandomimport*defdemix():en_flag='SACBK8AEJCAOW52YL9ANBO7PQ0YvrEajcxnu7784704595388694801'seed("www.ChaMd5.org")out=''assertrandrange(0,100)==78forcinen_flag:ifc.islower():out+=chr((ord(c)-0x61-randrange(0,26))%26+0x61)elifc.isupper():out+=chr((ord(c)-0x41-randrange(0,26))%26+0x41)elifc.isdigit():out+=chr((ord(c)-0x30-randrange(0,10))%10+0x30)else:out+=cprintout#得到mixed_flag为 NBRGG5DGPNRGC43FL5XGSY3FX2FueGlhbmdf8316025876259956605passif__name__=='__main__':demix()

这题得到NBRGG5DGPNRGC43FL5XGSY3FX2FueGlhbmdf8316025876259956605,这才是真正要考查的地方,也许第一眼看起来会很懵逼。

本题的提示“MIX大礼包”,能否联想起类似的“BASE全家桶”,这题就是base32+base64+base16拼接起来,做题的突破口在于先拿去base64解码,直接解码是会报padding错,只要末尾加个=即可,然后看起来虽然是乱码,但中间你可以看到”_anxiang_”,

而”_anxiang_”的b64编码是X2FueGlhbmdf,从而把前后给分开,前面是NBRGG5DGPNRGC43FL5XGSY3F,字符集为[A-Z2-7],就很大可能是base32,解码为”hbctf{base_nice”,而后面8316025876259956605是十进制的表示,改为十六进制为0x73687579696e677d,十六进制变字符就是”shuying}”

所以flag是hbctf{base_nice_anxiang_shuying}

刚果(金)-DoYouKnowRSA

题作者:pcat WriteUp作者:pcat

原题下载:http://hbctf-1252906577.costj.myqcloud.com/crypto/DoYouKnowRSA.txt

HBCTF第二场WP-转载_第15张图片

这题纯属是给新手入门RSA(我的e值设置偏小,而且n值可以直接在factor.com上分解到,以前那网站上还没那条记录),题目里给出了c、n、dp、dq。可能比较陌生的是dp和dq,但只要搜索一下,找找资料的还是可以做的啦。

以下提供脚本即可,在脚本里你就会找到你想要的。

Python

# -*- coding:utf8 -*-__author__='pcat'__blog__='http://pcat.cnblogs.com'try:importgmpy2exceptImportError:print("Error: you must install the gmpy2")print("http://pcat.cnblogs.com/p/5746821.html")exit()deffoo():#已知n=0x27335d21ca51432fa000ddf9e81f630314a0ef2e35d81a839584c5a7356b94934630ebfc2ef9c55b111e8c373f2db66ca3be0c0818b1d4eda7d53c1bd0067f66a12897099b5e322d85a8da45b72b828813af23c=0x258f85f5d08a95a909a4d9a4c66bf4249fba21091ddfe9fcfcd33c9f4cf285af9eb99c77f839a1a7ee7791c1e98f023adf3b02561a8c45e651f1984852b9a0280e24bee7bd4fc95d217b874f135e693f748d7bdp=0x40dadac6db130c9b1a33bab328dc7335220e0e1ec26cc03bf405211013cdb500a70d1a619565f2c0aafdq=0x2f1af91dc6ae2abba0a0b7cb4bf1a6361157f39b06bb3b17c2ce6b208aa0b5be634922a7ccfcfc586c5#由factordb.com可计算p和q,建议先转10进制#或者用yafu来分解np=3423616853305296708261404925903697485956036650315221001507285374258954087994492532947084586412780871q=3423616853305296708261404925903697485956036650315221001507285374258954087994492532947084586412780869'''

d=gmpy2.invert(e,(p-1)*(q-1))

dp=d%(p-1)

dq=d%(q-1)

'''#解法InvQ=gmpy2.invert(q,p)mp=pow(c,dp,p)mq=pow(c,dq,q)m=(((mp-mq)*InvQ)%p)*q+mqprint'{:x}'.format(m).decode('hex')passif__name__=='__main__':foo()print'ok''''

#由于本题是面对新手的,e值弄个很小的,所以事实上你估计e值后也可以过关

e=0x10001

d=0x23ba51b0a167ed1733fa7655f5f4dd560a701f6e7b8ea9a3b21b9fd5a4ff971b9f86a91e60662f34afdb40f5f5551aebd489f39dff6c7b8c58852ccd3c2d07403b73ee83a859558b3318c279c26438e6e0c549

m='hbctf{RSA_15_C001_BEST_WISHES_TO_YOU_pcat}'

'''

Crypto

肯尼亚-creakme

题作者:逍遥自在 WriteUp作者:Fourele(点击访问原文)

原题下载:http://hbctf-1252906577.costj.myqcloud.com/reverse/creakme.exe

HBCTF第二场WP-转载_第16张图片

首先在ida中查看,从main函数可以看出程序大致流程是先读入一个字符串,然后经过encrypt处理,最后在check中与一个数组进行比较。

先看看check中的比较:


HBCTF第二场WP-转载_第17张图片

虽然用了rand函数,但是由于随机数种子已经给出,所以这个数组是相当于是已知的。

再来看encrypt中对输入的处理,就是将每个数和0x14异或,所以应输入的字符串可以由下面的程序生成:

Markup

#include

#include

int main()

{

    srand(12);

    for(int i=0; i<=13; i++)

    putchar((rand()%10+48)^0x14);

    return 0;

}

然后应该就是这道题的坑了吧,注意到在两个函数中都用到了flag这个全局变量,当此变量值为1的时候才执行输出flag的操作,于是在OD中先将这个变量修改为1,再输入刚刚生成的字符串,便得到flag了

下次比赛时间待定,感谢参赛。HBCTF官方群(点击加入):595176019

在博客中遇到的问题可以联系[email protected]

本文由Dr3@m原创发布,转载请注明来自HBCTF BLOG,转载代码(点击全选,请按"Ctrl"+"C"复制):

此项目被张贴在HBCTF。书签的permalink

你可能感兴趣的:(HBCTF第二场WP-转载)