ISctf-web

发布于:2025-03-09 ⋅ 阅读:(42) ⋅ 点赞:(0)

2,ISCTF2024-1z_php

定义了一个数组禁用了,cat,tac,head,nl,more,less,tail,vi,sed,od,不区分大小写,绕过这些命令进行查看

先通过ls /查找到flag,下一步我们通过反斜杠,或者两个单引号或者双引号进行一个绕过

在PHP中,ca\t会被解析为cat,因为反斜杠会转义后续的字符。当system($call)执行时,实际执行的命令是cat,从而绕过了过滤逻辑。

空值绕过

在许多Unix/Linux命令中,字符串中的双引号(")或单引号(')用于包裹参数,以便正确解析包含空格或其他特殊字符的字符串。然而,当引号中为空(如""或' ')时,这些引号会被命令解析器忽略,而不会影响命令的实际执行。

3,ISCTF2024-25时晓山瑞希生日会

这种情况先抓包,然后更改一下ua头试试, ua头是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。

它让我们是Project Sekai客户端请求才能加入,试试更改ua头,因为它要识别我们是不是Project Sekai客户端,大概率是通过ua头来识别

让我们从本地过去,这时候能想到xff头

它被各大 HTTP 代理、负载均衡等转发服务广泛使用

如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0 , 服务端最终会收到以下信息 X-Forwarded-For: IP0, IP1, IP2

我们通过伪造xff头,让服务器以为请求来自本地绕过安全限制

时间不对,我们找一下能伪造时间的参数

找到了一个Date,它是一个标准的HTTP头部字段,用于记录请求或响应的生成时间。它通常由服务器在响应中设置,也可以由客户端在请求中设置。

4,ISCTF-UP!UPloader

遇到上传先上传一个文件抓个包

没有返回路径,但给了个目录,访问一下

一个文件包含,直接包含文件发现不行,试试包含upload.php

包含发现没有返回,试试伪协议读取

解密

if (move_uploaded_file($file['tmp_name'], $upload_dir . md5($dir_name) . '.' . $ext))

上传到了./uploads目录下,文件名重命名成md5加密+后缀

需要更改后缀重新上传

然后找到文件进行访问执行命令,得到flag

5,ISCTF-ezSSTI

我对这个ssti模板注入不太了解先学习一下

简单来说就是服务端接收攻击者的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了攻击者插入的可以破坏模板的语句,从而达到攻击者的目的。

模板渲染函数

这里主要有两种模板渲染函数,render_template_string()与render_template(),其中render_template是用来渲染一个指定文件的。render_template_string()则是用来渲染字符串的。而渲染函数在渲染的时候,往往对用户输入的变量不做渲染,即:{{}}在Jinja2中作为变量包裹标识符,Jinja2在渲染的时候会把{{}}包裹的内容当做变量解析替换。比如{{2*2}}会被解析成4。因此才有了现在的模板注入漏洞。往往变量我们使用{{恶意代码}}。正因为{{}}包裹的东西会被解析,因此我们就可以实现类似于SQL注入的漏洞

存在模板注入,我们直接使用fenjing工具

pip install fenjing -i https://pypi.tuna.tsinghua.edu.cn/simple 安装

python -m fenjing 查看安装成功了没

python -m fenjing webui 实现界面

会弹出这种页面

分析完成之后,执行命令获取flag

6,ISCTF-ezrce

虽然过滤了多数函数,但还有passthru可以用, passthru 是 PHP 中用于执行外部命令并直接输出结果的函数。

通过点的拼接绕过限制,用${IFS}代替空格,用单引号将${IFS}和/组合起来

?是一个通配符,表示匹配任意单个字符,绕过限制,*表示全部,绕过限制

7,Isctf-小蓝鲨的临时存储室

访问发现是一个文件上传,先上传一个木马

连接成功访问flag,发现没权限

在根目录发现一个文件,可以将 uplods 目录下所有 php 后缀的文件删除

定时任务有 root 权限,利用定时任务将根目录下的 flag 读取到 /tmp/1.txt,等待一会即可得到 flag

8,Isctf-小蓝鲨的冒险

第一层:考察 md5 弱比较和 parse_str 函数

0e开头后面全为数字,弱类型比较都等于0,用 s878926199a 绕过

parse_str 把字符串 a[0] 当成变量解析,从而赋值

第二层: num 中不能有字母,还不能等 2024,,同时还要绕过 intval 函数

使用进制转化绕过,八进制中不含字母,可以使用0 3750 绕过

第三层:直接写个 flag 就绕过了

9,ISctf-ezserialize

构造

$payload = new User('hacker');
$payload->isAdmin = true;
echo serialize($payload);