- 博客(44)
- 收藏
- 关注
原创 ctf show web入门81
我们可以看到代码将输入的php data :都经行了字符串替换为?对 php 和 data 伪协议进行了过滤,这封死了直接通过 php://filter 或 data:// 获取 Web Shell 的路径。发现是nginx文件并且日志内容存在与?file=/var/log/nginx/access.log目录下。发现了存在两个文件fl0g.php和 index.php我们尝试访问fl0g.php 文件。在尝试访问日志目录下的文件内容。
2026-05-13 11:22:14
155
原创 ctf show web 入门80
这是一道非常经典的 文件包含漏洞(LFI) 结合 日志注入(Log Injection) 的 Web 题目。我们可以看到代码对 php 和 data 伪协议进行了过滤,这封死了直接通过 php://filter 或 data:// 获取 Web Shell 的路径。原因:URL 中的特殊字符(如 < >)会被浏览器或服务器进行 URL 编码,编码后的内容包含在日志里不会被 PHP 执行。在post method 中输入:1=system(‘tac fl0g.php’);步骤二:注入木马(关键点)
2026-05-13 09:54:17
209
原创 CTF SHOW WEB入门79
资源部分 (resource=flag.PHP):这里你写的是 .PHP (大写)。协议部分 (PHP://filter):PHP 解释器能够识别并将其处理为 php://filter,这部分你绕过了 str_replace 的限制,是正确的。代码执行:因为 include 函数会解析并执行 PHP 标签内的内容,服务器便乖乖地执行了 cat flag.php 命令,把 flag 发送到了你的浏览器。协议头 (data://):告诉 PHP 这是一个“数据流”协议,而不是一个真实存在的文件。
2026-05-13 08:51:18
633
原创 ctf show web入门55
由于题目中的正则允许数字和某些特殊字符(如反斜杠 \ 在正则中被过滤了,但我们可以尝试用 URL 编码绕过,或者利用 Shell 的特性),我们可以构造纯数字的 Payload。在 Linux 系统中,当字母被限制时,我们可以利用 Shell 的通配符 (Wildcards) 和 PHP 上传临时文件 的特性来执行命令。在被正则过滤了所有字母(大小写)的情况下,使用数字编码(通常指八进制或十六进制)是 Linux Shell 绕过的一种高级技巧。由于我们要执行的是临时文件,构造后的命令形如:. /?
2026-05-13 08:51:01
319
原创 ctf show web入门78
所以下一步我们要尝试得到flag.php中的内容构造payload为:?简单来说,这段 Payload 的作用是:强迫 PHP 在读取文件时,先经过一个“过滤器(Filter)”,将文件内容转码后再输出,从而绕过服务器对 PHP 代码的自动解析。data://:这是 PHP 的一种伪协议(数据流封装器)。所以这个payload本质上是利用了PHP伪协议的转码功能,将本会被服务器执行的动态脚本变成了可以被读取的静态文本。,:这是协议的分隔符,逗号后面紧跟着的就是实际的数据内容。>:PHP 代码标识符。
2026-05-13 08:50:30
206
原创 ctf show web入门54
被拦截的命令包括:cat, flag, more, wget, less, head, sort, tail, sed, cut, tac, awk, strings, od, curl, nl, scp, rm。虽然看起来过滤非常严密,但只要理清了它的过滤规则,就能找到生存空间。(分号), ` (反引号), %, * (通配符), <, > (重定向), & (\x26), \t (\x09)。cat, tac, nl, more, less, tail, head 全被过滤了。但本题过滤了分号;
2026-05-12 17:28:16
362
原创 ctf show web入门48
(分号), | (管道符), & (后台运行/与), (空格), $ (变量符号), \ (转义), * (通配符), [0-9] (数字), ’ (单引号), " (双引号), ` (反引号)。命令类:cat, flag, more, less, head, sort, tail, sed, cut, awk, strings, od, curl。黑洞重定向:>/dev/null 2>&1 会将命令的标准输出和错误输出全部丢弃,这意味着你无法直接在页面上看到命令执行的结果(无回显)。
2026-05-12 16:45:05
182
原创 ctf show web入门47
出题人的意图是让你绕过正则表达式的过滤,读取服务器上的 flag 文件。注意:这里有个坑,你的命令执行结果会被重定向到 /dev/null(黑洞),这意味着页面不会直接显示命令回显。cat, flag, more, less, head, sort, tail:读取文件的常用命令和关键字。结合以上思路,我们需要构造一个既能绕过正则、又能绕过重定向、还能读取文件的 Payload。常用截断符:%0a (换行符)、|| (逻辑或)、&& (逻辑与)。(空格):空格被过滤,需要找替代符。
2026-05-12 10:42:27
176
原创 ctf show web 入门46
由于不能使用 *,我们可以使用?tac, nl, more, less, head, tail, sort, uniq 等。这道题目是上一题的升级版,过滤条件变得更加苛刻了。我们来分析一下新增的限制以及应对方案。既然数字、$ 和 * 都被封死了,我们需要寻找更原始的 Shell 特性。flag.php 可以写成 fla?.php 或 fl?B. 绕过关键词 flag (禁止 *)A. 绕过空格 (禁止 $ 和数字)%09:URL 编码的 Tab 键。<:输入重定向(最推荐)。
2026-05-12 10:08:53
459
原创 CTF show web入门45
cat|flag| /i:这表示如果你的输入中包含 分号 (😉、关键词 cat、关键词 flag 或 空格,正则匹配就会成功(返回 true)。注意:这里有一个重定向 >/dev/null 2>&1,这意味着你的命令执行结果会被丢弃,页面上不会直接显示回显内容。使用 %0a (换行):在 URL 编码中代表换行符,可以开启新的一行命令,从而让后面的重定向失效。由于命令后面接了重定向,我们需要截断掉后面的内容,或者让命令在后台执行。表示取反,即:如果你不包含这些字符,才会执行 system() 函数。
2026-05-12 09:43:09
677
原创 ctf show web 入门43
(空格):你不能直接在命令中使用空格(例如 ls -l 或 cat flag 都会失败)。cat:读取文件的常用命令被禁用了。发现了当前目录下包含的文件flag.php,所以我们尝试构造payload来读取该文件。我们可以尝试使用换行符%0a强制换行,让重定向的内容在下一行不再影响上一行的内容。/ (正斜杠):你不能使用路径符号(例如 /flag 这种绝对路径会被拦截)。vi / vim:虽然是编辑器,但在某些 system 调用中也能读取。我们先尝试查看当前目录下有什么文件构造flag为:?
2026-05-11 17:01:58
24
原创 ctf show web 入门42
0a之所以可以成功是因为在Linux终端中,换行符等同于按下回车键当代码执行 system($c." >/dev/null 2>&1");所以当执行cat flag.php后这一行就已经结束了,他会直接把输出结果输出到屏幕,后面的重定向限制根本管不到第一行的输出。我们可以尝试使用换行符%0a强制换行,让重定向的内容在下一行不再影响上一行的内容。/dev/null:将标准输出重定向到“黑洞”,即你看不到命令执行的结果。2>&1:将标准错误也重定向到标准输出,导致也看不到命令执行结果。payload为:?
2026-05-11 12:13:53
41
原创 ctf show web入门 40
由于 pos(localeconv()) 输出了 .,所以这里等价于 scandir(‘.’),它会返回当前目录下所有文件的数组。在 ctf.show 的题目环境中,flag.php 通常在目录的倒数位置,反转后它会排在数组的前面。最后的payload如下:show_source(next(array_reverse(scandir(pos(localeconv())))));在 PHP 中,localeconv() 的第一个元素固定是 点号 .。此时它的参数就是 next() 选中的 flag.php。
2026-05-11 10:55:38
41
原创 ctf show web 入门39
.php”)PHP解析器在遇到?>后会停止解析代码,,后面的".php"会被当成普通的字符串直接输出,不会导致语法错误最后得到flag。强制后缀:后端会自动加上 .php(include($c".php"))。如果我们尝试读取非 PHP 文件,或者使用某些伪协议,必须考虑这个后缀的影响。这是漏洞的核心,程序会将你传入的内容拼接上 .php 后缀后进行包含。关键字过滤:提示说 flag 在 flag.php 里,但我们不能直接传 c=flag。绕过原理:使用f*统配符绕过了对flag字符串的正则匹配。
2026-05-11 08:17:37
155
原创 ctf show web入门37
c=://filter/read=convert.base64-encode/resource=flag.php,代码执行成功但是并没有返回flag是因为。目标提示://flag in flag.php —— 明确告诉了你 Flag 藏在 flag.php 文件里。preg_match(“/flag/i”, $c)) —— 这里使用正则表达式检查。输入点:$c = $_GET[‘c’];data://text/plain:告诉PHP处理器,接下来的数据是纯文本格式。
2026-05-10 22:31:55
719
原创 ctf show web入门31
我们可以考虑构造一个无字母数字(或无特定关键字)RCE 技巧,利用 PHP 的内部函数嵌套来一步步定位并读取文件,完全避开 system、cat、flag、点号和空格等所有黑名单限制。payload如:show_source(next(array_reverse(scandir(pos(localeconv())))));flag | system | php | cat | sort | shell | . (点) | (空格) | ’ (单引号) | " (双引号)都被过滤了。
2026-05-09 16:58:55
367
原创 ctf show web入门 33
这个正则表达式非常严格,过滤了括号 (,这意味着你无法直接调用任何 PHP 函数(如 system(), passthru() 等)。代码的核心逻辑是接收一个 GET 参数 c,在经过正则过滤后,将其放入 eval() 函数中执行。特殊符号:. (点), (空格), ’ (单引号), ` (反引号),;(分号), ( (左括号), / (斜杠),“(双引号)利用 PHP 的 include 包含:include 是一个语句而非函数,可以不加括号使用:include $_GET[1]。
2026-05-08 21:16:12
180
原创 ctf show web 入门32
这个正则表达式非常严格,过滤了括号 (,这意味着你无法直接调用任何 PHP 函数(如 system(), passthru() 等)。代码的核心逻辑是接收一个 GET 参数 c,在经过正则过滤后,将其放入 eval() 函数中执行。利用 PHP 的 include 包含:include 是一个语句而非函数,可以不加括号使用:include $_GET[1]。特殊符号:. (点), (空格), ’ (单引号), ` (反引号),;(分号), ( (左括号), / (斜杠)特性:PHP的闭合标签?
2026-05-08 20:43:44
401
原创 ctf show web入门28
例如:/0/1/2.txt 修改为 /{§0§}/{§1§}/2.txt。Payload 1(第一个数字):设置类型为 Numbers,范围通常是 0-100,步长为 1。Payload 2(第二个数字):设置类型为 Numbers,范围通常是 0-100,步长为 1。在 Web 28 中,常见的模式是爆破路径中的两个数字位置。拦截请求:使用 Burp Suite 拦截访问 /0/1/2.txt 的请求。因为0 是第一层目录,1是第二层目录,爆破两个层级是为了遍历所以存放文件的可能性。
2026-05-08 12:38:37
19
原创 ctf show web入门27
发现当payload为19900201时返回了一个success,并且后面跟着{"0":"success","msg":"\u606d\u559c\u60a8\uff0c\u60a8\u5df2\u88ab\u6211\u6821\u5f55\u53d6\uff0c\u4f60\u7684\u5b66\u53f7\u4e3a02015237 \u521d\u59cb\u5bc6\u7801\u4e3a\u8eab\u4efd\u8bc1\u53f7\u7801"}发现有录取名单点击后自动下载。
2026-05-08 12:38:19
33
原创 ctf show web入门26
找到flag为ctfshow{99d5d859-2d16-4a7f-abc5-2c5ded23a095}"}点击同意协议开始安装后按照要求填写,然后打开bp进行抓包。抓到包后对密码进行爆破。
2026-05-07 12:57:02
343
原创 ctf show web入门24
原理:PHP 的 mt_rand() 函数是“伪随机”的。这意味着如果种子(Seed)固定,那么第 1 次生成的随机数、第 2 次生成的随机数……虽然看起来像是在考运气,但实际上在计算机世界里,只要“随机种子”固定了,生成的随机数序列就是完全可以预测的。既然种子 372619038 已经直接写在代码里了,我们只需要在自己的本地环境跑一遍一模一样的代码,看看生成的第一个随机数是多少即可。让后我们在原网站 后加上/?我们可以在一个在线PHP运行网站运行一下该PHP代码,mt_rand():生成一个伪随机数。
2026-05-07 08:31:36
28
原创 ctf show web入门23
并且2. 数学公式的“逻辑绕过”条件这是最关键的一步,代码中有一个数学表达式:\frac{intval(x) + intval(x) + x}{x} === intval(last\_char)(其中 x 是上述位置 1、14、17 的字符, last\_char 是位置 31 的字符)print(f"验证:index[1, 14, 17] 都是 '{c1}',index[31] 是 '{c31}'")# 5. 检查第二层数学条件:(x + x + x) / x 是否等于最后一位。在页面url后输入/?
2026-05-06 22:30:53
1098
原创 ctf show web入门21
编码规则: 协议明确规定,这里的 <credentials> 必须是将 用户名:密码 组合后,进行 Base64 编码得到的结果),发现这就是我们输入的用户名与密码,并且格式为:用户名:密码。将Author i zation 后的放到bp自带的解码模块去解码(网站使用了 HTTP Basic Authentication(HTTP 基本认证) 协议。打开靶场要我们经行登录,由题目可知我们这题考察的是爆破,并且题目给了我们一个字典。开始爆破发现有一个状态码为200的说明爆破成功。
2026-05-06 22:09:42
144
原创 ctf show web(命令执行) 30
虽然 system() 被禁用了,但 PHP 中能执行系统命令的函数有很多。发现有flag.php 所以flag大概率就在这里面了但是flag跟php都被禁用了。打开靶场发现跟29题差不多不过限制条件更加严格,不仅限制了flag,i还限制了。popen() / proc_open():更底层,通常不需要用到这么复杂。exec():执行命令,但只返回最后一行结果(需要 echo)。反引号 `:这是 shell_exec() 的快捷方式。shell_exec():执行命令并返回完整输出。
2026-04-27 21:36:49
26
原创 ctf show web 31
这是 ${IFS} 的变体。$9 是当前 Shell 的第 9 个参数(通常为空)。加上它后,可以有效防止 ${IFS} 后面直接连字母时产生的解析混淆。在 Linux 中,cat<flag.php 和 cat flag.php 的效果是一样的。它是 HTTP 协议传输时的编码,到后端会被解析成制表符。发现flag.php文件,但是cat flag . php 空格都被限制了。示例:cat<f* (注意:这只适用于读取类命令)vi / vim: 虽然是编辑器,但也能读。示例:cat$IFS$9f*
2026-04-27 21:36:35
332
原创 ctf show web(命令执行) 29
因为你输入的是 fla*,里面没有完整的 flag,所以 preg_match 觉得你是安全的,放你通过了。如果你输入 cat fla*:Shell 会匹配到 flag.php 和 flame.txt,最终执行 cat flag.php flame.txt。替换命令:如果目录下只有 flag.php 符合条件,Shell 会在后台默默地把你的命令从 cat fla* 替换成 cat flag.php。Linux 系统的视角:它拿到 fla* 后,通过通配符机制将其“还原”成了 flag.php。
2026-04-26 18:00:10
910
原创 CTF SHOW WEB 入门14
其实这篇题解是我在看完别的大佬的wp后写的对其中有一些还不了解比如:第一为什么提示源码里面有editor这个重要信息但是不是查看源代码找editor而是在url输入editor,第二为什么flag的路径为var/www/html/nothinghere/fl000g.txt但是最后只要访问url/nothinghere/fl000g.txt。服务器物理路径:这是文件在硬盘上的真实位置,即 $ /var/www/html/nothinghere/fl000g.txt $。下面是我对这些问题的找到的答案。
2026-04-26 17:59:44
498
原创 ctf show web 入门19
将趴桌子word后面的该为上一张图片中&p的值,因为后端的php代码它校验的是&p后端并没有进行解码操作,而是直接对比,这意味着只要我们发给后端的pazzword字段正好等于那串密文就可以了但是,如果你直接在输入框填入 a599ac...,前端的 JS 脚本会再次对这串密文进行加密,导致发给后端的数据变样。发现了密钥但是这个密码似乎是加密后的并且我不知道是哪种加密方式所以打开bp。用户名先填上admin密码随便填一个挂上代理开启抓包。最后放包回到靶场flag就出来了。并且提示告诉我们密钥就在前端。
2026-04-25 14:16:31
109
原创 ctf show web入门18
结合第一个提示说我们到101分就给我们flag可知道只要满足score>100这个js条件我们就可以得到flag但是这个看起来像是被编码后的内容所以我们把这串拿去解码试试看。提示2告诉我们这是Unicode编码。并且题目给的提示似乎也是没有用的。那我们根据提示先去查看js文件。打开靶场发现是一个小游戏。但是还有另一个提示给我们。
2026-04-25 14:16:20
325
原创 ctf show web 入门 20
这类题目的核心考点通常在于 Access 数据库文件(.mdb 或 .asp)可以直接被下载,以及 Access 数据库没有系统表,只能靠字典爆破表名。IIS 6.0 解析漏洞: * 如果目录名以 .asp 结尾(如 /folder.asp/1.jpg),那么 1.jpg 会被当做 ASP 执行。操作建议: 使用目录扫描工具(如 Dirsearch 或 御剑),字典重点关注 .mdb 和 .asp 后缀。后缀名: .mdb, .asp, .asa (ASP 环境下为了防下载,常把数据库改名为 .asp)。
2026-04-24 12:51:55
244
原创 ctf show web入门17
管理员在备份数据库时,往往会使用一些固定的名称或后缀。这意味着我们需要通过目录扫描或者猜解来寻找被管理员遗留在服务器上的数据库备份文件。然后我们逐一尝试在原来的url加上backup.sql后自动下载了一个文件。打开靶场看到这个页面既没有有用信息看起来也没有登录页。ctfshow.sql (结合题目平台名)db.sql.swp (Vim 临时文件)shop.sql (结合“商城”的主题)打开该文件后仔细查找,最后发现flag。1. 常见的 SQL 备份文件名。也可以CTRL加F快速查找。
2026-04-24 12:51:36
26
原创 ctf show web入门15
说明这题的解题方法有一个重要步骤是看邮箱造成的信息泄露,但是还是不知道该怎么开始那就用目录扫描工具扫一下看看有没有什么别的页面。给的这个QQ邮箱看起来像QQ好我们在QQ中输入并且访问主页就可以看到地址为西安,那我们先尝试填写西安。这里给了我们重置后的密码,那我们的用户名尝试用admin试一试。成功登录后台获得管理员权限得到flag。发现了一个/admin,我们访问一下。问我们所在城市,此时想到题目给的提示。打开靶场又是一个网页没有头绪就看题。有个忘记密码我们尝试一下。
2026-04-23 07:46:48
22
原创 ctf show 入门16
在 CTF 题目中,如果你发现了一个 PHP 探针(比如 tz.php 或 phpinfo.php),Flag 通常不会像在 index.html 那样直接写在注释里。简单来说,它是一个单文件的 PHP 脚本(通常命名为 tz.php、phpinfo.php 或 prober.php),通过调用大量的 PHP 系统函数,将服务器的实时信息以网页的形式展示出来。> 的文件时,它会生成一个极其详细的网页,列出当前 PHP 解释器的所有配置、环境变量、已加载的模块以及版本信息。它是你第一个要看的文件。
2026-04-23 07:46:26
762
原创 ctf show web入门12
因为管理员账号密码常为admin并且前面也提到admin所以推测用户名为admin。我们对该网站进行敏感文件扫描,在该页面的url后加上robots.txt回车访问。可以知道密码在网站上于是我们就把看起来像密码的一个个试,最后发现密码在页面最下面。给出了一个disallow:/admin/最后登录成功,这道题的flag也出来了。所以我们接下来去访问admin。打开靶场是一个购物页面。发现要输入用户名跟密码。
2026-04-22 00:03:54
199
原创 ctf show web 入门10
点击cookie发现有类似flag格式的乱码这是由于浏览器在处理cookie时会自动进行url编码,你需要把那些十六进制的占位符还原就能得到flag。所以这道题考察了我们关于cookie的考点我们可以先打开开发者工具,或者使用浏览器的开发者工具-网络-就可以查看到响应头中的Cookie。打开靶场没有有用信息但是题目给了我们提示。
2026-04-22 00:02:19
286
原创 ctf show web入门7 8题
在做 Web 题时,如果页面看起来空无一物,或者给出了一个非常简单的交互界面,第一时间尝试访问 /robots.txt、/.git/ 或常见的 .bak 文件,往往会有意想不到的收获。压缩包备份:常见的如 web.zip, code.tar.gz, www.zip, backup.sql, 1.tar.gz 等。手动备份:index.php.bak, index.php.txt, index.php.old。Vim:.index.php.swp(或 .swp, .swo, .swn)。
2026-04-21 16:23:01
1048
原创 CTF SHOW WEB6
打开靶场依旧是使用我们还是跟前面几道题目一样使用我们继续尝试F12查看源代码和查看网络标签页查看右侧的HEADERS里的ResponseHeaders发现没有线索,接下来尝试检查常规敏感文件比如:robots.php index.php.bak index.php.swp index.phps 发现没有线索,这时想到代码泄露中还有一个压缩包泄露的考点,与是我们在url后加上www.zip查看是否存在压缩包泄露漏洞,发现确实存在于是打开这个压缩包文件发现有 两个文档逐一查看。
2026-04-20 10:29:03
572
原创 CTF SHOW WEB5
使用我们继续尝试F12查看源代码和查看网络标签页查看右侧的HEADERS里的ResponseHeaders发现没有线索,接下来尝试检查常规敏感文件比如:robots.php index.php.bak index.php.swp,虽然这道题考察的确实是检查常规敏感文件但是这道题中的flag并不在这里面而是在 index.phps中。或者也可以在原来的地方先检查源代码让后在查看源代码的地方输入index.phps。在url中输入.index.phps后会下载一个文件将其打开就可以得到flag。
2026-04-20 10:28:30
40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅