?CTF-Week1
励志成为CTF糕手的CTF低手
粗略记录一下,如果有错误还请各位师傅指出,欢迎交流讨论
Web
Gitttttttt

题目提示的很清楚了,就是git泄漏
使用githack工具
python GitHack.py http://challenge.ilovectf.cn:30120/.git/
记得后面一定要加上.git才行

进入文件夹,点击txt文件,得到flag

flag{oH_I_n3Zv#r_13VE0_tI3_GBi7_4B64zn}
Ping??

进入网站,由题目和网页内容可知,可能存在命令执行漏洞

这里用到命令拼接符:
命令拼接符&、&&、|、||等
命令拼接符:
|、||、&、&&的区别:
&:无论左边是false还是true,右边都执行
&&:具有短路效果,左边是false,右边不执行。
|:无论左边是false还是true,右边都会执行
||:具有短路效果,左边是true,右边不执行。
短路效果:逻辑运算符的短路效果逻辑运算符当能得到结果时,就不会再继续运算右边的代码,以节省空间以及一定的性能,称为短路效果
还有一个;
分号可以将前一条命令隔断,分号后面可以写入新的一条命令,比如
127.0.0.1;ls
会将前面的ping命令执行后,再执行ls
127.0.0.1;ls

发现当前目录下有flag.txt
但是发现flag被过滤了

直接使用*通配符绕过
127.0.0.1;cat f*

得到flag
flag{aedce264-b42c-4203-8b87-ced6ee8ed44f}
from_http

一道http的题,需要掌握请求包的修改以及传参,直接打开bp抓包

发送到重放

要求用**?CTFBrowser**浏览器访问,就是将UA头修改为该串即可,然后点击发送

-
要求GET传参,在GET后面斜杠后加上
?welcome=to
-
这次要求用POST传一个
the=?CTF,先将当前GET请求转为POST,右键修改即可
修改之后发现welcome=to到了请求体里,重新写回POST后的斜杠后,再在请求体位置写入
the=?CTF
-
需要设置cookie,在请求头里加上
Cookie:wishu=happiness
-
只能从?CTF来,说明需要添加Referer头,表明来源:
Referer:?CTF
-
只能从本地访问,就需要设置X-Forwarded-For头,本地即127.0.0.1:
X-Forwarded-For:127.0.0.1
得到flag
flag{8489b849-3333-46ec-b2c8-f8192e82ee95}
secret-of-php

下载得到几个php文件

可以发现index.php包含了flag.php

flag.php里是个路径,所以我们可以直接拼接到url里,绕过index.php


一眼望去,全是md5,咱们一个一个来
-
$a = $_POST['a']; $b = $_POST['b']; if (isset($a) && isset($b)){ if ($a !== $b && md5($a) == md5($b)){ echo "<br>yes<br>"; } else { die("no"); }需要POST传入a和b,并且a不强等于b,但md5弱类型相等
所以我们只需要传入:
a=s1885207154a&b=s1836677006a因为
md5(“s1885207154a”) => 0e509367213418206700842008763514
md5(“s1836677006a”) => 0e481036490867661113260034900752
二者都是0e开头,在php中0e会被当做科学计数法,就算后面有字母,其结果也是0,所以上面的if判断结果使true,成功绕过
-
$a = $_REQUEST['aa']; $b = $_REQUEST['bb']; if ($a !== $b && md5((string)$a) === md5((string)$b)){ echo "yes yes<br>"; } else { die("no no"); }$_REQUEST即GET和POST传参均可
需要满足两者不相等,且将其强制转为字符串的md5相等
我们可以用数组进行绕过
aa[]=1&bb[]=2因为在PHP中,数组被转换为字符串时,都会转换成字符串"Array",因此md5(‘Array’)的结果自然相同


二者相等,所以绕过成功

-
$a = $_REQUEST['aaa']; $b = $_REQUEST['bbb']; if ((string)$a !== (string)$b && md5((string)$a) === md5((string)$b)){ echo "yes yes yes<br>"; echo "Congratulations! You have passed the second level, the flag is ".$flag."<br>"; } else { die("no no no"); }最后一个就不能用常规办法了,需要进行md5强碰撞,即二者确实不相同,但二者的md5完全相同
以下是一些常用的md5强碰撞值:
psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%24%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%82%7D%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%84%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEcC%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%BC%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%99%B59%F9%FF%C2 与 psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%A4%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%02%7E%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%04%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEc%C3%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%3C%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%9959%F9%FF%C2a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2 与 b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2 与 M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
得到flag
flag{9fa1df49-bf21-49c9-b159-871fcd22c5c9}
game-前端小游戏


题目说是前端小游戏,那直接F12查看一下js源码

出题人这个坏,30分也不给flag
发现疑似base64的字符串,直接拿去解密或者控制台运行atob函数:
atob('ZmxhZ3tmYjNiZTIyMy03MGM2LTQwMzYtYmJhNi1jMzVjZjg5ZjI4OWZ9');

得到flag
flag{fb3be223-70c6-4036-bba6-c35cf89f289f}
还有一种解法:
可以发现如果分数小于0,就会输出flag,那我们直接修改源码,将score修改为-1

修改startGame函数的score为负数,timeLeft也可以修改为1,毕竟不想等60秒
得到flag

food-包含不明东西的食物?!


查看源码,发现flag在flag.txt中,并且提示include,那这题应该就是文件包含了

直接输入flag.txt显示不存在,很大可能是不在该目录下

在bp抓包

既然不在该目录下,那估计在其他目录下,一般来说flag都在根目录,这时可以尝试一下目录遍历
即使用../回到上层目录
先右键将其发送到重放器
发现确实在根目录,得到flag
filename=../../../../../../flag.txt

flag{82a86f28-e31a-4aad-b91a-84b5a012ddc0}
Misc
俱乐部之旅(1) - 邀请函

下载zip,发现加密了,爆破也爆破不出来,丢到010里面看一下

在最后发现了一串字符,这里我一开始也没看出来,以为这就是密码,但是行不通
最后终于发现,问号代表的是掩码
用ARCHPR的掩码功能爆破得到密码:c5im8467

进入后发现该docx文档其实也没东西
直接用binwalk拆分文件

在core.xml中发现可疑信息和提示

<dc:description>11001101101100110000111001111111011101011101100001110010110010010111110110101111010001100111100111101111111010011110011101111101100011111010</dc:description>
<cp:keywords>do u know cyberchef?</cp:keywords>
<cp:lastModifiedBy>炙恕qwq</cp:lastModifiedBy>
<dcterms:modified xsi:type="dcterms:W3CDTF">2025-08-13T09:59:15Z</dcterms:modified>
<dc:title>标准ASCII码使用7位二进制数表示字符</dc:title>
根据提示可知,使用cyberchef,设置7位二进制数,将以上二进制转码即可

得到一半flag:flag{W0rd_5t3g_is_1z
接着找
找到另一半可疑内容,文件名:u_f0und_m3

打开发现像是16进制

16进制转一下字符
得到另一半:&Welc0me_t0_th3_c5im_C1ub}
完整flag如下:
flag{W0rd_5t3g_is_1z&Welc0me_t0_th3_c5im_C1ub}
《关于我穿越到CTF的异世界这档事:序》

下载附件得到两个txt文本,alphabet是多行base64,base8看不出来
使用工具对alphabet内容进行处理,得到隐写内容:?CTFmisc

又从文件名可知,应该是自定义的编码表,刚好又是8位,跟base8对上了
? | 0 |
|---|---|
C | 1 |
T | 2 |
F | 3 |
m | 4 |
i | 5 |
s | 6 |
c | 7 |
所以我们有了大概的思路:
- 文本 -> 八进制:将
base8.txt中的每个字符根据我们上一步的编码表替换成对应的八进制数字。 - 八进制 -> 二进制:将得到的八进制数字串,每1位转换成3位二进制数(例如,
2->010,7->111)。 - 二进制 -> ASCII:将二进制串每8位(1字节)分组,转换成对应的ASCII字符。
手动处理起来可能有点麻烦,编写脚本:
# 自定义的base8编码表
import base64
custom_alphabet = "?CTFmisc"
# Tsmssic?FT?ii?sFFi?iTimCTC?mcCmsTiTmmCCCFs?sCCiiTFTcmCmFTCscFicTTs?ciC?TFFTim?s?TTmsmCmFCmmiFCmsTFTimCCsFCmiTicTT?msFCTTTs?c??ssFCmi?mciCcT=====
# base8.txt中的内容 (去掉末尾的填充符)
encoded_str = "Tsmssic?FT?ii?sFFi?iTimCTC?mcCmsTiTmmCCCFs?sCCiiTFTcmCmFTCscFicTTs?ciC?TFFTim?s?TTmsmCmFCmmiFCmsTFTimCCsFCmiTicTT?msFCTTTs?c??ssFCmi?mciCcT"
# 1. 建立字符到八进制数字的映射
char_to_octal = {char: i for i, char in enumerate(custom_alphabet)}
# 2. 将编码字符串转换为八进制字符串
octal_str = "".join([str(char_to_octal[c]) for c in encoded_str])
# 3. 将八进制字符串转换为二进制字符串
binary_str = ""
for oct_digit in octal_str:
binary_str += format(int(oct_digit), '03b') # 格式化为3位二进制,不足补0
# 4. 将二进制字符串每8位分组并转换为ASCII字符
decoded_base64 = ""
for i in range(0, len(binary_str), 8):
byte = binary_str[i:i+8]
if len(byte) == 8:
decoded_base64 += chr(int(byte, 2))
print("第一层解码结果 (Base64):")
print(decoded_base64)
print("base64解码结果:")
print(base64.b64decode(decoded_base64).decode())
得到flag

flag{Th3_Pr1nc1pl3_0f_Base_1s_S0_Ezz}
维吉尼亚朋友的来信

由题可知跟维吉尼亚密码有关
附件是个wav音频,题目描述让用眼睛去听,深处的声音
用audacity打开文件,没发现什么可疑点,打开频谱图

发现KEY{deepsound}
因为维吉尼亚密码是需要key进行解密的,所以我们已经获得了密钥
但还缺密文
猜测可能隐写进了文件
同时key已经在提醒了,使用工具:deepsound
打开后发现确实藏了东西

导出得到
Gieg fsq sulirs,
Osfprpi xd lvy gkumpaaba jruph dx QNS!Wkmw xkb’n wxvx e vsay—vw’v e tasmaerxrh lzslr fxvmdkwnl phixh uvuyohrkt, ovyeh hzigq zcah rj gdvs, yihuc lxvrya foyi, pfr yihuc tjrnfr krphh s gypuhx apahcaj ws ft mbwbyhvis. Zslr, bry’pa khlrwfl cdmf gvqg, pipjb nb vhi tplhyeqv mr rzoif, dqh xjjb "C qrq’x ocgk" cawr "M jxyilrg lx sjl."
Ria’w zsvgq wz gklrkh xsyy ryivlzsfzlqk ei xwlfw. Zi’zt szf ohhr xwwfy—fwdvmcy on n susfawa, mpudxgwaba bxu lipvg, qbqgivxfu quhui xd khuew. Eyx izon’f wki qpyww bi lx: ikwfs zlvxezw wm n ohwwdf, sprub wqpdz qvq d vyhz. Ohq bry’vt fcn norri. Izwm prpqycahs gkumztk ch propeqgfuglrr, sc kvuelqk mswom, nqg pmulwht hdgl dlvye xs.
Ws sajy vq. Hbtagfy. Rasivxeshg. Dvo ujwgnvrqw. Gtdsvedwi xww hcab ymgigfcrv, drh sgb’n shdv xww gnhpepih. Lvy PWI asgdr cf eumkwlsl jlwl cdm wh vw, drh lw qua’w zemi lc mrh zligw mihu msygfss gdniw ngi.
Zydj mw "umbhl ohxxtj hi lrx". Vibwavru zvee lvy sodk gdfhyaw lr jasu{} uag xwi jfryeolri‘_' ig fycodgi hhowr fkevpuhye' '.
Ehwx lagbrv!
使用key进行解码

得到flag
flag{funny_letter_to_you}
布豪有黑客(一)

下载解压得到一个流量包,wireshark打开
题目关键字:HTTP、flag、密码
直接搜索flag

发现一个GET请求获取flag压缩包
右键追踪HTTP流

得到flag压缩包

但不知道为什么,将该压缩包提取出来后flag.txt是坏的
此时我们已经有压缩包了,但还缺解压密码,通过右下角的流进行切换查找
在流1找到password,为**?CTF2025**

此时直接打开原7z压缩包

再双击

再双击,输入密码即可得到flag


flag{Wireshark_1s_4wes0m3}
文化木的侦探委托(一)

下载下来后,用工具发现图片CRC校验不对

可能是图片宽高被修改了,使用工具一键修复

得到完整图片
提示隐写

使用stegsolve工具

根据提示选择通道

得到flag
flag{Please_Find_ME}
2014

被折叠的 条评论
为什么被折叠?



