NSSCTF中的web

目录

[[第五空间 2021]WebFTP](#[第五空间 2021]WebFTP)

[[LitCTF 2023]PHP是世界上最好的语言!!](#[LitCTF 2023]PHP是世界上最好的语言!!)

[[SWPUCTF 2021 新生赛]PseudoProtocols](#[SWPUCTF 2021 新生赛]PseudoProtocols)

[[LitCTF 2023]导弹迷踪](#[LitCTF 2023]导弹迷踪)

[[NISACTF 2022]easyssrf](#[NISACTF 2022]easyssrf)


[第五空间 2021]WebFTP

1.进入页面,发现是登录页面,想到

弱口令;

sql万能密码;

webftp2011的漏洞;

扫目录;

看前端源代码有没有泄露些内容;

2.经过尝试,最后使用disearch来扫描,发现.git文件和phpinfo.php

3.访问phpinfo.php找到flag

[LitCTF 2023]PHP是世界上最好的语言!!

1.根据题目提示,flag在根目录下,所以在右边边框执行php代码,并且查看根目录

2.找到flag,使用cat命令得到flag

[SWPUCTF 2021 新生赛]PseudoProtocols

1.根据题目提示,需要用到php伪协议,构造payload+php://filter/read=convert.base64-encode/resource=hint.php,来读取文件

2.很明显是一串base64编码,解码可得test的php文件

3.访问这个文件,得到php代码

复制代码
代码可翻译为:
 <?php
ini_set("max_execution_time", "180"); //脚本的最大执行时间为 180 秒。
show_source(__FILE__); //使用 show_source 函数显示当前文件的源代码。
include('flag.php'); //使用 include 语句包含另一个 PHP 文件 flag.php
$a= $_GET["a"];//从 GET 请求中获取名为 "a" 的参数,并将其值赋给变量 $a。
if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){ //使用 isset 函数检查 $a 是否被设置,即它是否有一个值。使用 file_get_contents 函数读取由 $a 指定的文件的内容。如果文件的内容是 "I want flag",则条件为真。
    echo "success\n";
    echo $flag;
}
?> 

4.分析可得与文件包含有关,有两种解法

解法一:php://input

----可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。

php://input是php语言中一个只读的数据流;通过"php://input",可以读取从Http客户端以POST方式提交、请求头"Content-Type"值非"multipart/form-data​"的所有数据;

"php://input"一般用来读取POST上来,除已被处理以外的剩余数据。

说白了就是当遇到正则匹配时GET传参不能出现的敏感字符,可以通过php://input在POST上传最后绕过了检测。

解法二:data://

示例用法:

1、data://text/plain,

http://127.0.0.1/include.php?file=data://text/plain,\<?php%20phpinfo();?>

2、data://text/plain;base64,

http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2B
知识点:

file://伪协议 (读取文件内容)

通过file协议可以访问本地文件系统,读取到文件的内容

data://(读取文件)和php伪协议的input类似,碰到file_get_contents()来用

data:// 数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行

php://input(任意代码执行)

遇到file_get_contents()要想到用php://input绕过。

php://input 可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

[LitCTF 2023]导弹迷踪

通过这道题,学到了新的解题思路,查看源代码时应该注意js文件(game.js)

1.通过查看js文件,找到flag

[NISACTF 2022]easyssrf

1.题目提示了使用 curl 连接输入的网站并返回响应包,想到使用php伪协议,使用file://伪协议 (读取文件内容)用法:

复制代码
file://[文件的绝对路径和文件名]

了解什么是curl命令:curl是一个利用 URL 语法在命令行下工作的文件传输工具,该工具支持以下多种类型的传输方式,这当中包含多种协议,最常使用的有FILE、FTP、HTTP、HTTPS等协议。

资料参考:Linux curl命令最全详解-CSDN博客

强大的curl命令的介绍和一般用法_curl命令参数-CSDN博客

2.根据提示,查看/fl4g文件

3.访问这个php文件,得到代码

stristr()函数的介绍:

复制代码
 <?php

highlight_file(__FILE__);
error_reporting(0);

$file = $_GET["file"]; //从 GET 请求中获取名为 "file" 的参数,并将其值赋给 $file 变量
if (stristr($file, "file")){  //使用 stristr 函数检查 $file 变量中是否包含 "file" 字符串。
  die("你败了.");
}

//flag in /flag
echo file_get_contents($file);  //使用 file_get_contents 函数读取 $file 变量指定的文件内容。

4.使用php伪协议,构造payload:url+?file=php://filter/write=convert.base64-encode/resource=/flag

或者进行依次的查找flag

相关推荐
噢,我明白了38 分钟前
JavaScript 中处理时间格式的核心方式
前端·javascript
纸上的彩虹2 小时前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
be or not to be2 小时前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied2 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞2 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_23333 小时前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
GIS之路3 小时前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL4 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
天天扭码4 小时前
以浏览器多进程的角度解构页面渲染的整个流程
前端·面试·浏览器
你们瞎搞4 小时前
Cesium加载20GB航测影像.tif
前端·cesium·gdal·地图切片