NSS刷题

1、SWPUCTF 2021 新生赛gift_f12

打开题目后查看源码无发现,用f12发现flag

2、GDOUCTF 2023hate eat snake

打开链接是一个贪吃蛇小游戏,f12找到js文件中有一个speed++的语句,该语句的作用是使速度增加,因此,将该语句删除后运行等待6即可通关。

将其注释掉后得到flag

3、FSCTF 2023是兄弟,就来传你の🐎!

页面是一个文件上传,上传正常的一句话木马,显示不被允许,尝试修改MIME类型和文件名

修改后上传显示 get out hacker!!!

说明题目对eval()或者php存在过滤,将eval替换成request后再次上传,发现没有效果再对php进行替换,

显示太长,想到php短标签

php短标签

<? echo '123';?> #前提是开启配置参数short_open_tags=on

<?=(表达式)?> 等价于 <?php echo (表达式)?> #不需要开启参数设置

<% echo '123';%> #开启配置参数asp_tags=on,并且只能在7.0以下版本使用

<script language="php">echo '123'; </script> #不需要修改参数开关,但是只能在7.0以下可用。

PHP 中的反引号

PHP中,反引号可以直接命令执行系统命令,但是如果想要输出执行结果还需要使用 echo 等函数:

|---|------------------------------------|
| | <?php echo `ls /`;?> // Linux |
| | <?php echo `dir`;?> // Windows |

因为限制了长度,所以使用php短标签,短标签不闭合也能执行,尽可能缩短内容长度,把GIF89A也写成BM。

BM<? `cat /`;?>

上传成功,直接访问路径得到flag(注意语句闭合!!!)

4、SWPUCTF 2022 新生赛ez_ez_php

打开题目是个文件包含的题目,通过get传参传入参数file,用substr函数处理刚刚传入的file函数

substr

(PHP 4, PHP 5, PHP 7, PHP 8)

substr --- 返回字符串的子串

说明

substr (string $string, int $offset, ?int $length = null ): string

返回字符串 string 由 offset 和 length 参数指定的子字符串。

例:

<?php
echo substr('abcdef', 1); // bcdef
echo substr("abcdef", 1, null); // bcdef; 在 PHP 8.0.0 之前,返回空字符串
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f

这题是文件包含,想到php伪协议,根据代码意思,应该以php开头

构造payload

file=php://filter/read=convert.base64-encode/resource=flag.php

base64解码

发现提示了flag的位置,再次构造payload:

file=php://filter/read=convert.base64-encode/resource=flag

再次base64解码得到flag

5、SWPUCTF 2022 新生赛webdog1__start

查看源码得到一段php代码,要求是get传参,传入变量web,将web的值赋给first,MD5加密后的值要与初始值相等。了解到0e215962017这个值加密之后还是0e开头,因此构造

?web=0e215962017

出现了许多链接,尝试后只有第一个可以打开,打开后是一个网页,没有找到有关信息f12查看后发现了一个start.php,里面有一个hint,,提示了先查看f14g.php

打开后发现没有可用信息,但是又指向了一个F1l1l1l1l1lag.php

再次尝试查看,发现了一段php代码

strstr()

strstr() 函数是 PHP 中用于在字符串中查找 子字符串 的函数,该函数返回在字符串中 第一次出现的子字符串 及 其后面的所有内容。

strstr(string haystack, string needle, bool $before_needle = false): string|false

第一个判断语句尝试判断访问本页面时是否正确传递 get 查询字符串参数。若有,则将 get 查询字符串参数的值传递给 变量 get。第二个判断语句尝试判断 get 变量的值中是否存在 空格。若存在,则立即终止程序并向终端或页面输出 nonono。若不存在,则将 get 变量中的 flag 子文本(不区分大小写)替换为包含单个空格的字符串。第三个判断语句尝试判断 get 变量的值所占据的内存空间是否大于 18 字节。若是,则终止程序并向终端或页面输出 This is too long.。若不是,则通过 eval() 函数将 get 变量中值作为 PHP 代码进行执行。

构造payload:

?get=system('cat%09/*');

得到flag

相关推荐
YB13759 小时前
Jetpack Compose 动画rememberInfiniteTransition
android
baidu_2474386112 小时前
Android 自定义竖直的虚线
android
传奇开心果编程13 小时前
【Jetpack Compose娓娓道来】 第25课:ViewModel就是UI界面的大脑
android·kotlin·移动开发·jetpack compose·编程语言理论·编程框架·声明式ui
马立杰13 小时前
PHP 未授权 RCE 应急响应:CVE-2026-109618 CVE-2026-109619 排查与加固实战
android·开发语言·php
NamoAmitabha12813 小时前
安装“编译器环境”(Android Studio)--deepseek--Cocos --Creator3.8.8
android·ide·android studio
聚美智数14 小时前
文档转换 API‑文档转 PDF‑PDF 转文档‑异步文档处理‑文件格式迁移‑转换结果回调推送 API 接口介绍
android·java·pdf
booboosui15 小时前
Android 上的无人回合:只放开 2 类工具,宁可空手
android
事圆则缓17 小时前
Android 性能排查实战:怎么看内存抖动、CPU 占用和 FPS
android
mmsx17 小时前
Android 三类「看着无关」的故障:大事务、UI 阻塞与 ViewModel 作用域
android·ui
换元不配限17 小时前
Android 休眠与唤醒完全指南:从手机到 IoT 设备的实战解析
android·物联网·智能手机·alarmmanager·wakelock·workmanager·休眠和唤醒