文章目录
Basectf比赛wp
MISC
[Week1] 签到!DK 盾!
关注公众号得到flag。
[Week1] Base
考点:base编码
下载附件得到一串base编码,解密得到flag。
[Week1] 正着看还是反着看呢?
考点:文件逆序,文件分离
附件压缩包解压发现一个名为flag的未知文件,用010editor打开发现文件逆序了
使用脚本将文件顺序调换回来,得到一张jpg图片。
用010editor打开,发现藏了一个隐藏文件flag。
提取出来得到flag.
[Week1] 海上遇到了鲨鱼
考点:流量分析
打开是个pcapng文件,用wireshark打开。
检索关键词flag,用tcp流打开,查看流,最后找到flag。
[Week1] 人生苦短,我用Python
考点:代码审计,搜索引擎
打开程序,一段超长python代码
import base64
import hashlib
def abort(id):
print('You failed test %d. Try again!' % id)
exit(1)
print('Hello, Python!')
flag = input('Enter your flag: ')
if len(flag) != 38:
abort(1)
if not flag.startswith('BaseCTF{'):
abort(2)
if flag.find('Mp') != 10:
abort(3)
if flag[-3:] * 8 != '3x}3x}3x}3x}3x}3x}3x}3x}':
abort(4)
if ord(flag[-1]) != 125:
abort(5)
if flag.count('_') // 2 != 2:
abort(6)
if list(map(len, flag.split('_'))) != [14, 2, 6, 4, 8]:
abort(7)
if flag[12:32:4] != 'lsT_n':
abort(8)
if '😺'.join([c.upper() for c in flag[:9]]) != 'B😺A😺S😺E😺C😺T😺F😺{😺S':
abort(9)
if not flag[-11].isnumeric() or int(flag[-11]) ** 5 != 1024:
abort(10)
if base64.b64encode(flag[-7:-3].encode()) != b'MG1QbA==':
abort(11)
if flag[::-7].encode().hex() != '7d4372733173':
abort(12)
if set(flag[12::11]) != {'l', 'r'}:
abort(13)
if flag[21:27].encode() != bytes([116, 51, 114, 95, 84, 104]):
abort(14)
if sum(ord(c) * 2024_08_15 ** idx for idx, c in enumerate(flag[17:20])) != 41378751114180610:
abort(15)
if not all([flag[0].isalpha(), flag[8].islower(), flag[13].isdigit()]):
abort(16)
if '{whats} {up}'.format(whats=flag[13], up=flag[15]).replace('3', 'bro') != 'bro 1':
abort(17)
if hashlib.sha1(flag.encode()).hexdigest() != 'e40075055f34f88993f47efb3429bd0e44a7f479':
abort(18)
print('🎉 You are right!')
import this
进行代码分析一步一步来就能做出来。
[Week1] 倒计时?海报!
考点:图片隐写
群里的海报,有十张,每张都潜藏flag的一部分,需要使用ps或者其他调色软件进行调色后寻找,大概就是像下面的图一样
找齐后按10-1的顺序拼接在一起就是flag。
[Week1] 你也喜欢圣物吗
考点:图片隐写,压缩包伪加密
打开文件,进行解压缩,发现一个png图片和一个压缩包。
解压需要密码。
刚开始觉得是伪加密,放进010editor查看了一下
表面上看确实是,但根据后来题目提示发现,里面的另一个压缩包才是伪加密,这个是真有密码。
那就需要从图片入手。刚开始以为是高度,放进010editor里修改,发现没有用。
然后就用stegsolve打开,发现了信息。
解码这段编码,得到提示
就是简单的LSB。找到key。
解压过后得到里面的另一个压缩包
这个压缩包也需要密码,但是却是伪加密,放进010editor修改过后就能解压,拿到里面的flag。
这里的flag有两个,上面那个是假的,最后那个才是真的。
[Week1] 根本进不去啊!
考点:域名解析
根据题目提示,进行域名解析,发现flag。
[Week1] 捂住X只耳
考点:Audacity的使用
此解法非官方预期,需要官方解法请看官方wp。
直接人声分离,得到下图
用摩斯密码解码
flag就是BaseCTF{FOLLOWYOURHEART}
web
[Week1] HTTP 是什么呀
考点:http基础知识
打开容器,就是普通的http知识
按照提示抓包传入就行。
爆出flag。
解码得到。
[Week1] 喵喵喵´•ﻌ•`
考点:eval()漏洞利用,指令利用
打开容器,是一个简单的传参利用eval()漏洞问题
[Week1] md5绕过欸
考点:MD5绕过(可以查看我往期博客查阅相关知识)
打开容器,要求get传参name和name2,post传参password和password2。
分析代码,发现name和password的md5进行弱相等,直接用现成的例子。
name2和password2的md5值强相等,可以使用数组绕过。
[Week1] A Dark Room
考点:查看源代码
打开容器是个小游戏,但是其实考点是查看源代码。
[Week1] upload
考点:文件上传漏洞,一句话木马,webshell连接工具(蚁剑)
打开容器发现是文件上传。
先进行准备,用记事本写上一句话木马,因为要上传图片文件,所以后缀改成.jpg
进行文件上传,用bp抓包,修改.jpg为.php
上传完了后找到该php文件路径
然后用蚁剑连接就行。
进入文件管理找到flag就行
[Week1] Aura 酱的礼物
考点:代码审计,伪协议,SSRF
<?php
highlight_file(__FILE__);
// Aura 酱,欢迎回家~
// 这里有一份礼物,请你签收一下哟~
$pen = $_POST['pen'];
if (file_get_contents($pen) !== 'Aura')
{
die('这是 Aura 的礼物,你不是 Aura!');
}
// 礼物收到啦,接下来要去博客里面写下感想哦~
$challenge = $_POST['challenge'];
if (strpos($challenge, 'http://jasmineaura.github.io') !== 0)
{
die('这不是 Aura 的博客!');
}
$blog_content = file_get_contents($challenge);
if (strpos($blog_content, '已经收到Kengwang的礼物啦') === false)
{
die('请去博客里面写下感想哦~');
}
// 嘿嘿,接下来要拆开礼物啦,悄悄告诉你,礼物在 flag.php 里面哦~
$gift = $_POST['gift'];
include($gift);
分析代码,有三个变量,全是post方法传参。
第一个需要使用data协议绕过file_get_concents()函数。构造payload
pen=data://text/plain;base64,QXVyYQ==
第二个就涉及到SSTR漏洞(见往期博客)。构造payload
challenge=http://jasmineaura.github.io@challenge.basectf.fun:34667
第三个就是文件包含漏洞,需要filter协议绕过。构造payload
gift=php://filter/convert.base64-encode/resource=flag.php
解码得到flag。