【?CTF】Week1-Web-Misc

?CTF-Week1

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

Web

Gitttttttt

image-20251010171057024

题目提示的很清楚了,就是git泄漏

使用githack工具

python GitHack.py http://challenge.ilovectf.cn:30120/.git/

记得后面一定要加上.git才行

image-20251010171525709

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

image-20251010171804332

flag{oH_I_n3Zv#r_13VE0_tI3_GBi7_4B64zn}

Ping??

image-20251010171925699

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

image-20251010172019654

这里用到命令拼接符:

命令拼接符&、&&、|、||等
命令拼接符:
|、||、&、&&的区别:
&:无论左边是false还是true,右边都执行
&&:具有短路效果,左边是false,右边不执行。
|:无论左边是false还是true,右边都会执行
||:具有短路效果,左边是true,右边不执行。
短路效果:逻辑运算符的短路效果逻辑运算符当能得到结果时,就不会再继续运算右边的代码,以节省空间以及一定的性能,称为短路效果

还有一个;
分号可以将前一条命令隔断,分号后面可以写入新的一条命令,比如
127.0.0.1;ls
会将前面的ping命令执行后,再执行ls
127.0.0.1;ls

image-20251010172724749

发现当前目录下有flag.txt

但是发现flag被过滤了

image-20251010172838747

直接使用*通配符绕过

127.0.0.1;cat f*

image-20251010173051507

得到flag

flag{aedce264-b42c-4203-8b87-ced6ee8ed44f}

from_http

image-20251010173226199

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

image-20251010173412168

发送到重放

image-20251010173614540

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

image-20251010173801791

  1. 要求GET传参,在GET后面斜杠后加上?welcome=to

    image-20251010174011593

  2. 这次要求用POST传一个the=?CTF,先将当前GET请求转为POST,右键修改即可

    image-20251010174201413

    修改之后发现welcome=to到了请求体里,重新写回POST后的斜杠后,再在请求体位置写入the=?CTF

    image-20251010174535713

  3. 需要设置cookie,在请求头里加上Cookie:wishu=happiness

    image-20251010174751329

  4. 只能从?CTF来,说明需要添加Referer头,表明来源:Referer:?CTF

    image-20251010174927354

  5. 只能从本地访问,就需要设置X-Forwarded-For头,本地即127.0.0.1:X-Forwarded-For:127.0.0.1

    image-20251010175058915

    得到flag

    flag{8489b849-3333-46ec-b2c8-f8192e82ee95}
    

secret-of-php

image-20251010175418793

下载得到几个php文件

image-20251010175520811

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

image-20251010175709010

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

image-20251010175804549

image-20251010175824512

一眼望去,全是md5,咱们一个一个来

  1. $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,成功绕过

    image-20251010180757382

  2.     $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’)的结果自然相同

    image-20251010181657308

    image-20251010181705611

    二者相等,所以绕过成功

    image-20251010181754431

  3. $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%C2
    
    a=%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%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%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
    

    image-20251010182127887

    得到flag

    flag{9fa1df49-bf21-49c9-b159-871fcd22c5c9}
    

game-前端小游戏

image-20251010182458471

image-20251010182514369

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

image-20251010182627340

出题人这个坏,30分也不给flag

发现疑似base64的字符串,直接拿去解密或者控制台运行atob函数:

atob('ZmxhZ3tmYjNiZTIyMy03MGM2LTQwMzYtYmJhNi1jMzVjZjg5ZjI4OWZ9');

image-20251010182952369

得到flag

flag{fb3be223-70c6-4036-bba6-c35cf89f289f}

还有一种解法:

可以发现如果分数小于0,就会输出flag,那我们直接修改源码,将score修改为-1

image-20251010183221733

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

得到flag

image-20251010183332614


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

image-20251010183908340

image-20251010183928834

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

image-20251010184041761

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

image-20251010184132616

在bp抓包

image-20251010184541892

既然不在该目录下,那估计在其他目录下,一般来说flag都在根目录,这时可以尝试一下目录遍历

即使用../回到上层目录

先右键将其发送到重放器

发现确实在根目录,得到flag

filename=../../../../../../flag.txt

image-20251010184835197

flag{82a86f28-e31a-4aad-b91a-84b5a012ddc0}

Misc

俱乐部之旅(1) - 邀请函

image-20251016184458927

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

image-20251016184552806

在最后发现了一串字符,这里我一开始也没看出来,以为这就是密码,但是行不通

最后终于发现,问号代表的是掩码

用ARCHPR的掩码功能爆破得到密码:c5im8467

image-20251016184822459

进入后发现该docx文档其实也没东西

直接用binwalk拆分文件

image-20251016190740185

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

image-20251016190808786

<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位二进制数,将以上二进制转码即可

image-20251016191021444

得到一半flag:flag{W0rd_5t3g_is_1z

接着找

找到另一半可疑内容,文件名:u_f0und_m3

image-20251016191402279

打开发现像是16进制

image-20251016191443301

16进制转一下字符

得到另一半:&Welc0me_t0_th3_c5im_C1ub}

完整flag如下:

flag{W0rd_5t3g_is_1z&Welc0me_t0_th3_c5im_C1ub}

《关于我穿越到CTF的异世界这档事:序》

image-20251016205633054

下载附件得到两个txt文本,alphabet是多行base64,base8看不出来

使用工具对alphabet内容进行处理,得到隐写内容:?CTFmisc

image-20251016205815108

又从文件名可知,应该是自定义的编码表,刚好又是8位,跟base8对上了

?0
C1
T2
F3
m4
i5
s6
c7

所以我们有了大概的思路:

  1. 文本 -> 八进制:将base8.txt中的每个字符根据我们上一步的编码表替换成对应的八进制数字。
  2. 八进制 -> 二进制:将得到的八进制数字串,每1位转换成3位二进制数(例如,2 -> 0107 -> 111)。
  3. 二进制 -> 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

image-20251016210142009

flag{Th3_Pr1nc1pl3_0f_Base_1s_S0_Ezz}

维吉尼亚朋友的来信

image-20251016213338230

由题可知跟维吉尼亚密码有关

附件是个wav音频,题目描述让用眼睛去听深处的声音

用audacity打开文件,没发现什么可疑点,打开频谱图

image-20251016213529070

发现KEY{deepsound}

因为维吉尼亚密码是需要key进行解密的,所以我们已经获得了密钥

但还缺密文

猜测可能隐写进了文件

同时key已经在提醒了,使用工具:deepsound

打开后发现确实藏了东西

image-20251016213721911

导出得到

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进行解码

image-20251016213843659

得到flag

flag{funny_letter_to_you}

布豪有黑客(一)

image-20251010185201705

下载解压得到一个流量包,wireshark打开

题目关键字:HTTPflag密码

直接搜索flag

image-20251010185349304

发现一个GET请求获取flag压缩包

右键追踪HTTP流

image-20251010185508096

得到flag压缩包

image-20251010185600932

但不知道为什么,将该压缩包提取出来后flag.txt是坏的

此时我们已经有压缩包了,但还缺解压密码,通过右下角的流进行切换查找

在流1找到password,为**?CTF2025**

image-20251010185823069

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

image-20251010185950455

再双击

image-20251010190012508

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

image-20251010190027618

image-20251010190111956

flag{Wireshark_1s_4wes0m3}

文化木的侦探委托(一)

image-20251010190156300

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

image-20251010190316752

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

image-20251010190409567

得到完整图片

提示隐写

image-20251010190430477

使用stegsolve工具

image-20251010190638050

根据提示选择通道

image-20251010190723022

得到flag

flag{Please_Find_ME}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值