0x00 前言

上周参加了第二届BJD CTF,本Web dog太垃圾,就做出两道Web。不过还好MISC和Crypto做的还行。那就先总结复现一下。标*表示未作出的

0x01 MISC

这个做的还行,不过有三道未做出(其中一道是mikutap。听,然后找按键盘进行对应,这个就算了,不想做),好了开始复现

最简单的misc-y1ng

就是简单的文件头填充。

看到IHDR,很明显想到png图片。添加文件头89504E47,改后缀,得到16进制
16进制转字符串即可得到flag

A_Beautiful_Picture

改图片高度即可

EasyBaBa

这个就比较有趣了,直接用winrar打开得到里面都是出题人.jpg,进行格式分析发现是avi视频文件,改后缀播放,发现有东西,扔到Pr逐帧分析得到四张二维码。扫描得到4串十六进制
6167696E5F6C
6F76655F59
424A447B696D
316E677D
Hex->ASCII排序即可。

小姐姐-y1ng

winhex搜索BJD即可

*Real_EasyBaBa

这个当时没做出来。看了官方wp发现最后一步去除所有0没有想到。。。。
png文件用winhex打开,搜索504B,将FFFF改为0304(可以先用binwalk分析下发现有zip,因为之前我做过类似的,所以就直接改),直接winrar打开

解压hint文件。打开是二维码,扫描得到命令od -vtx1 ./draw.png | head -56 | tail -28
linux之od命令
然后执行od -vtx1 ./ezbb_r.png | head -56 | tail -28这个命令,得到

然后就是我没想到的地方:把00字节去掉,得到图案即是flag

*圣火昭昭

这个找新佛语解密网站找了好久,以前都是佛语。。。。
下载图片查看属性,得到新佛曰:,以前要么没有这仨字,要么是佛曰:

所以找到新佛语解密网站,解密得到(hint说key去掉com,key应该就是gemlove)

试了下不是flag,应该是某种隐写的密码。然后没思路了,于是看看题目描述和群里管理员“

发现“猜“这个字很魔性。然后我没见过类似的隐写,然后就断这里了。。
看了一眼官方wp发现是outguess 隐写 ,没听说过。查了下,发现直接用一个工具即可。
outguess的安装

git clone https://github.com/crorvick/outguess 进行下载
下载完成后进入outguess文件夹,右击打开终端,执行命令:
./configure && make && make install 进行编译及安装。

outguess的常见使用

对图片信息进行破解:
outguess -r /root/qwzf.jpg hidden.txt
带key的:
加密:outguess -k "abcd" -d hidden.txt demo.jpg out.jpg
解密:outguess -k "abcd" -r out.jpg hidden.txt

好了,我直接执行

执行成功,打开qwzf.txt得到flag

*TARGZ-y1ng

.tar.gz文件直接用winrar解压发现需要输入密码,并不是伪加密,也爆破不出来。于是看看题目描述

tar zxvf,即tar -zxvf 压缩文件名。还好linux学过,是.gz格式的解压缩并解打包。
试下linux解压缩并并解打包命令,然后发现依旧需要密码。密码在哪呢?
试试文件名。果然是解压密码。一直解一直解。好吧,我自闭了,不做了。
看官方wp写个脚本挺省事。但官方脚本有时候会报错(有关系统操作的脚本我还没学过怎么写,抽时间补下相关知识,然后再改下)。
decompress.py

import os
import filetype
import timewhile 1:aa = os.popen('ls')filename = aa.read().replace('decompress.py','').replace('\n', '')a = filename.replace('.tar.gz', '')kind = filetype.guess(filename)if kind.extension is 'zip':os.system("mv {} {}.zip|unzip -P {} {}.zip".format(filename, a, a, a))os.system("rm *.zip")time.sleep(0.1)else:print('解压完成')break

执行脚本,得到flag文件。

0x02 Crypto

*老文盲了

主要就是生僻汉字拼音,找个在线汉字转拼音即可

然后发现拼音再转换成汉字是BJD{这就是flag直接交了吧},我交,不对。。。问了下群管理员,让我考虑下"这”还可能是什么?emmmm,试了好多不对。。
看官方wp说花括号{}里的汉字再与之前的生僻字对应,也就是BJD{淛匶襫黼瀬鎶軄鶛驕鳓哵}
确定这是Crypto,感受到一丝MISC的味道。。

cat_flag


这个呢,就比较简单了。每行8张小图片,有吃的无吃的。很明显可能就是二进制嘛,8bit一个字节,刚刚好。手工转换下,得到

01000010010010100100010001111011010011010010000101100001001100000111111001111101

然后二进制转ASCII,得到flag。还是感觉这道题也有MISC的感觉。

灵能精通


说实话,没见过,感觉是猪圈变种,但是搜不到。经别人提醒,知道是圣堂武士密码

对照着解密就ok了。。emmmmm,突然发现上边这解密图上的水印似乎是我的某位学长??!!!
于是好奇的搜了下,发现一篇总结很全面的好文章:
CTF中Crypty(密码类)入门必看

燕言燕语

题目:
79616E7A69205A4A517B78696C7A765F6971737375686F635F73757A6A677D20
hex->ascii

yanzi应该是密钥,后边的是密文。于是开始尝试,由于最近刚看过维吉尼亚密码,所以尝试。果然是维吉尼亚密码加密,解密即可。
维吉尼亚密码加解密原理及其实现

*Y1nglish-y1ng

Nkbaslk ds sef aslckdqdqst. Sef aslckdqdqst qo lzqtbw usf ufkoplkt zth oscpslsfko. Dpkfk zfk uqjk dwcko su dscqao qt dpqo aslckdqdqst, kzap su npqap qo jkfw mzoqa. Qu wse zfk qtdkfkodkh qt tkdnsfw okaefqdw, nkbaslk ds czfdqaqczdk. Bkd lk dkbb wse z odsfw.
Q nzo pzjqtv hqttkf zd z fkodzefztd npkt Pzffw Odkkbk azlk qt, pk qo z Izcztkok ufsl Izczt med tsn pk qo tsd bqjqtv qt Izczt, lzwmk Pzffw qot'd z Izcztkok tzlk med pk qo fkzbbw z Izcztkok. Pzffw nsfwkh qt z bznwkf'o suuqak wkzfo zvs, med pk qo tsn nsfwqtv zd z mztw. Pk vkdo z vssh ozbzfw, med pk zbnzwo msffsno lstkw ufsl pqo ufqktho zth tkjkf czwo qd mzaw. Pzffw ozn lk zth azlk zthozdzd dpk ozlk dzmbk. Pk pzo tkjkf msffsnkh lstkw ufsl lk. Npqbk pk nzo kzdqtv, Q zowkh pql ds bkth lk &2. Ds lw oefcfqok, pk vzjk lk dpk lstkw qllkhqzdkbw. 'Q pzjk tkjkf msfffsnkh ztw lstkw ufsl wse,' Pzffw ozqh,'os tsn wse azt czw usf lw hqttkf!' Tsn q nqbb vqjk wse npzd wse nztd.
MIH{cwdp0t_Mfed3_u0fa3_sF_geqcgeqc_ZQ_Af4aw}

最近大致看了单表替换密码,然后尝试一下,发现不对,emmmm。。。
题目说是英语改过来的,然后就断了。现在看了眼wp:
直接找个在线的 cryptogram solver 即可解密,比如quipqiup

最后一单词是错误的,hint 也告知有个地方需要自己修正。 可以看上面那段话也可以发现 worying at a bany,应该是 working at a bank,还有 networy,很明显应该是 network,y 要改成 k;直接读也发现 cracy 这个单词不对劲,应该和暴力破解是同类型的词,所以改成 Cr4ck

rsa0

这个和下一个RSA题确实不难,比较基础。然而我自己写的脚本没一点问题,但就是跑不出来flag。。。

e=14136631
p+q=20394044353540319344698711597000763057241436261142332048783203085936171963637690670301311997609844966417898713277046255478343038988123359477656058456834000
p-q=5522449249920590241682007593262770686168725602600804308006991053304611393109338497750661863149475602135542274713290715541748813086358892129600142665008034
c=57564160274404219264177459450448019183275693200768416051436640755522202963653292172391840912536831571152913328785130833906878324669454383965866712212130750436153700289781965212722910455077455251018758850662752081666673050509850478470173282957056988779851401898604824247631281201497321682899672172658697366350
flag=??????

今天又试了下发现把除号/改为//就行了。。。吐血了。。。
我写的脚本如下:

import gmpy2
#import binascii
from Crypto.Util import numberx = 20394044353540319344698711597000763057241436261142332048783203085936171963637690670301311997609844966417898713277046255478343038988123359477656058456834000
y = 5522449249920590241682007593262770686168725602600804308006991053304611393109338497750661863149475602135542274713290715541748813086358892129600142665008034
c = 57564160274404219264177459450448019183275693200768416051436640755522202963653292172391840912536831571152913328785130833906878324669454383965866712212130750436153700289781965212722910455077455251018758850662752081666673050509850478470173282957056988779851401898604824247631281201497321682899672172658697366350
p=(x+y)//2
q=(x-y)//2
e=14136631n=p*q
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e,phi_n)
m = pow(c, d, n)
print(m)
print(number.long_to_bytes(m))
#print(binascii.a2b_hex(hex(m)[2:]).decode("utf8"))

rsa1

已知p^2+q^2p-q,联立方程组可解出p,q
测试发现每访问一次,e和c都会变,但是p^2+q^2p-q不变,于是考虑共模攻击:

import binascii
from gmpy2 import invertdef egcd(a, b):if a == 0:return (b, 0, 1)else:g, y, x = egcd(b % a, a)return (g, x - (b // a) * y, y)c1 = 51340645986680648867413444434228304851992739277782547454342697741865877392900511274202106134898112876825772319229557002425095759674232201185218757524610933637451782604059178975836061950941713112330334086056402131414410255457797205808339596344991620684466195920786350418186691414221753199930658493206062216077
e1 = 13718357c2 = 34673873418492679189315841898257302722111171466584326793277718057977399831177294654520064866789128963244103911480691778143395640764793556758948086326518018815868320324938115520510369322851130777577637015710892435333961186906032753770892938649842321721053439688427769081850637260323730777408718564295395146991
e2 = 13103833A = 120799346838375010895229335442462202865240248511497399986136417952902545991062894320724425829562051895373363854631133655790120865759504895601823054884863801257685969042479894585894024020955762745984438766369627115385495533880991887182178078779931382196022613790869270179113382812710158113446233023928865487250
B = -1733107409224230289530192248905424424390530237061955853090172443573881253991888010586951250583196318203113989146388752129146692980400782011939285226398736n = (A-B**2)//2s = egcd(e1, e2)
s1 = s[1]
s2 = s[2]
if s1<0:s1 = - s1c1 = invert(c1, n)
elif s2<0:s2 = - s2c2 = invert(c2, n)m = pow(c1,s1,n)*pow(c2,s2,n) % n
print(binascii.a2b_hex(hex(m)[2:]).decode("utf8"))

0x03 后记

随便写写就那么多字了。。。算了,Web复现再另起一篇进行记录。做题和复现BJD MISC和Crypto,我又收获一波新知识:新佛语解密outguess隐写多次输入密码解压压缩包脚本圣堂武士密码在线的cryptogram solver(quipqiup),似乎就收获那么多。。。

第二届BJD CTF做题总结与题目复现-MISCCrypto相关推荐

  1. CTF做题总结第五周

    文章目录 BUUCTF Alice与Bob 信息化时代的步伐 [BJDCTF 2nd]灵能精通-y1ng 权限获得第一步 萌萌哒的八戒 Wireshark BUUCTF Alice与Bob 按照题意, ...

  2. 攻防世界-leaking-(详细操作)做题过程

    如有不对的地方,还请各位大佬指正.下面开始做题: 进入题目以后是一串代码,又是代码审计,很烦啊......哎.下面是需要了解的php函数含义: require()是php的内置函数,作用是引入或者包含 ...

  3. python自学做题记录之查找单词

    今天做题做到一个题目,题目是英文就大概说一下题目意思 输入一个列表,里面都是由句子组成,例如 doc_list = ["The Learn Python Challenge Casino.& ...

  4. 攻防世界ctf题目easyupload做题笔记。

    刚刷完upload-labs靶场,做做ctf题目,发现自己掌握的知识并不牢固.做了半天没有解出来,最后还是看别人的题解做出来的.写下做题过程,也就是wp吧.为了方便以后复习巩固. 本题的主要考点为利用 ...

  5. 2021第十二届蓝桥杯B组省赛C/C++做题过程与反思

    2021第十二届蓝桥杯B组省赛C/C++做题过程与反思 ​ 鄙人大一,第一次有幸参加蓝桥杯b组c.以下是本人的做题全过程,注意了!!!!不一定是正确答案!! 如果有误,还请大佬们指点指点. 试题 A: ...

  6. ctf新手总结--web做题

    文章目录 后台目录文件 御剑扫后台目录 dirsearch扫后台文件 Git泄露 bp抓包 Wireshark 后门,菜刀,蚁剑 PHP代码审计 正则表达式 序列化和反序列化 相关函数 相关魔术方法 ...

  7. ctf xor题_从一道CTF题目谈PHP中的命令执行

    原创 Xenny 合天智汇 快睡的时候,打开B站发现有位用户留言,大意就是让我帮忙看一道题,正好当时有空,于是就打开了他发的链接,代码如下 很明显是一道PHP代码审计的题目,而且只需要绕过第三行的if ...

  8. 一道简单的CTF登录题题解

    一.解题感受 这道题50分,在实验吧练习场算比较高分,而且通过率只有14%,比较低的水平. 看到这两个数据,一开始就心生惬意,实在不应该呀! 也是因为心态原因,在发现test.php之后,自以为在SQ ...

  9. 蓝桥杯嵌入式第十二届省赛真题

    第十二届蓝桥杯嵌入式-停车计费 文章目录 第十二届蓝桥杯嵌入式-停车计费 1.题目分析 2.项目结构 2.1停车部分整体流程 2.2串口数据解析流程 2.3细节部分 3.代码结构 3.1停车部分 3. ...

最新文章

  1. Java常用分析工具Jps、Jstat、Jinfo、Jstack以及Jconsole的简单介绍和使用
  2. 两人团队项目-石家庄地铁查询系统(web版)
  3. Python账号密码登陆判断(三次机会)
  4. 机器学习实验中的编程技术(part2)--numpy
  5. JAVA数据库连接池实现
  6. cognos 样例 oracle,cognos10.2 sample(ORACLE学样例)
  7. 2 Linux基本命令复习2
  8. vi编辑器复制删除常用命令
  9. 2020中科院信工所夏令营面试
  10. JUCE 中的音频编解码
  11. STAR、6W1H、SMART、PDCA、MKASH原则在精准招聘中的应用
  12. CSS基础常识问答(二)
  13. js怎么模拟点击网页元素
  14. (五)图片压缩 —— 优化图片文件、内存
  15. Clion注册码与注册机
  16. Octotree在GitHub中出错(已解决)
  17. 苹果手机二手最新价格
  18. 安卓APP抓包解决方案(教程)
  19. ffmpeg 硬件加速视频转码指南
  20. 最新西门子224/226PLC源码/V8.9西门子PLC源码 C v8.9运行源代码,本人已修改好剩余的bug

热门文章

  1. HuffmanTree
  2. JavaScript的三级联动
  3. 软件工程基于场景建模 习题
  4. 比较全的Struts介绍04
  5. 创业者不能盲目的跟风,不然结局很凄凉
  6. 使用PreListener与InteractionListener的一个小发现
  7. mysql数据库击穿_缓存穿透、击穿、雪崩区别和解决方案
  8. 生物信息学仿真软件SInC的初步使用教程
  9. android socket上传视频教程,android socket视频流方案
  10. 传智播客创始人张孝祥因病去世(转)