命令执行中多种文本查看绕过waf命令合集

文章介绍了在渗透测试或CTF挑战中,如何在存在WAF或其他过滤机制的目标环境中,通过未被过滤的命令如tac、more、less、head、tail、sort、sed、uniq、vi/vim、paste、diff、od、bzmore、nl和file来查看和利用文本内容。这些命令提供了分页显示、搜索、去重、排序、实时更新等多种功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当渗透测试或者打CTF时,目标环境中存在waf或者一些过滤不允许执行一些查看文本命令,可以通过如下其他的未过滤命令进行利用

1、倒叙显示全文本--tac

tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。

tac file

2、分页显示文本--more

cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。

1.显示内容

more file

之后,就可以使用按键来查看文本。常用按键如下:

回车 #向下n行,默认为1行
空格 #向下滚动一屏
b #向上滚动一屏
= #输出当前行号
:f #输出当前文件名和当前行号
q #退出

2.从指定行开始显示

more +10 file                    # 该命令从第10行开始显示file的内容。

3.从匹配的字符串行开始显示

more +/string file               # 该命令从有string的行的前两行开始file的内容。

3、任意浏览搜索文本--less

less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。

less file                     #浏览file
less -N file                  #浏览file,并且显示每行的行号
less -m file                  #浏览file,并显示百分比

常用按键如下:

f                            #向前滚动一屏
b                            #向后滚动一屏
回车或j                       #向前移动一行
k                            #向后移动一行
G                            #移动到最后一行
g                            #移动到第一行
/string                      #向下搜索string,n查看下一个,N查看上一个结果
?string                     #向上搜索string,n查看下一个,N查看上一个结果
q                            #退出

另外,less还能在多个文件间切换浏览:

less file1 file2 file3
:n                             #切换到下一个文件
:p                             #切换到上一个文件
:x                             #切换到第一个文件
:d                             #从当前列表移除文件

4、显示文本头部内容--head

head命令的作用就像它的名字一样,用于显示文件的开头部分文本。

head -n 100 file                     #显示file的前100行
head -n -100 file                    #显示file的除最后100行以外的内容。  

5、显示文本尾部内容--tail

和head命令类似,只不过tail命令用于读取文本尾部部分内容:

tail -100 file                      #显示file最后100行内容
tail -n +100 file                   #从第100行开始显示file内容   

tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:

tail -f logFile                # 对于更新的日志内容,会实时打印到终端上,方面查看实时日志。

6、指定顺序显示文本--sort

sort可用于对文本进行排序并显示,默认为字典升序。

例如有一段文本test.txt内容如下:

vim
count
fail
help
help
dead
apple

1.升序显示文本,使用命令:sort test.txt

apple
count
dead
fail
help
help
vim

2.降序显示,相关参数-r:使用命令:sort -r test.txt

vim
help
help
fail
dead
count
apple

3.去掉重复的行

我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:sort -u test.txt

apple
count
dead
fail
help
vim
  • 可以看到help行不再重复显示。

7、过滤显示文本--sed

sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。

1.显示匹配关键字行

有时候查看日志,可能只需要查看包含某些关键字的日志行:

sed -n "/string/p" logFile                # 表示打印包含string的行。

2.打印指定行

sed -n "1,5p" logFile                     #打印第1到5行
sed -n '3,5{=;p}' logFile                 #打印3到5行,并且打印行号
sed -n "10p" logFIle                      #打印第10行

8、去重显示文本--uniq

常见用法如下:

uniq file                                  #去除重复的行
uniq -c file                               #去除重复的行,并显示重复次数
uniq -d file                               #只显示重复的行
uniq -u file                               #只显示出现一次的行
uniq -i file                               #忽略大小写,去除重复的行
uniqe -w 10 file                           #认为前10个字符相同,即为重复

9、文本编辑查看--vi / vim

查看文件也很简单:

vi flag.txt
或者
vim flag.txt

10、合并文件的列--paste

Linux paste 命令用于合并文件的列。paste 指令会把每个文件以列对列的方式,一列列地加以合并。

paste flag.txt /etc/passwd

11、比较文件的差异--diff

diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。

diff flag.txt /etc/passwd

12、八进制字码呈现输出文件内容--od

od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。

od -a flag.txt

13、查看bzip2压缩过的文本文件--bzmore

bzmore命令用于查看bzip2压缩过的文本文件的内容,当下一屏显示不下时可以实现分屏显示。

bzmore flag.txt

14、输出行号查看--nl

查看文档的时候顺便输出行号

nl flag.txt

15、打开文件查看--file

通过file命令打开每一行的文件产生报错,从而查看了每一行的内容。

file -f flag.txt

### 文件上传安全问题及防护措施 文件上传功能是许多Web应用程序中的常见需求,但如果实现不当,则可能导致严重的安全隐患。以下是针对文件上传过程中可能出现的安全风险及其对应的防护措施。 #### 1. 风险分析 - **任意文件上传** 如果服务端代码未对客户端上传的文件进行严格验证和过滤,攻击者可能会上传恶意脚本文件(如 `.asp`、`.aspx`、`.php` 或 `.jsp`),进而执行远程命令或获取服务器控制权[^2]。 - **路径遍历攻击** 攻击者可以通过构造特殊字符(如 `../`)绕过目录限制,将文件保存到未经授权的位置。 - **大文件上传** 攻击者可能上传超大文件占用磁盘空间,导致拒绝服务(DoS)攻击。 - **MIME 类型伪造** 即使设置了 MIME 类型校验,攻击者仍可通过修改 HTTP 请求头伪装成合法文件类型。 --- #### 2. 防护措施 ##### (1) 后端文件类型验证 除了前端验证外,必须在后端实施严格的文件类型检查。推荐的方法如下: - 使用白名单机制限定允许上传的文件扩展名(如 `.jpg`、`.png`、`.pdf`)。 - 检查文件的实际内容而非依赖文件扩展名或 MIME 类型。例如,对于图片文件,可使用图像处理库加载并重新保存文件以确认其合法性[^1]。 ```python import imghdr def validate_image(file): allowed_types = ['jpeg', 'png'] file_type = imghdr.what(None, h=file.read()) if file_type not in allowed_types: raise ValueError("Invalid image type.") ``` ##### (2) 存储位置隔离 - 将用户上传的文件存储在专用目录下,并设置适当的权限,防止直接访问这些文件。 - 对敏感区域启用 Web 应用程序防火墙(WAF)或其他防护手段,阻止非法请求。 ##### (3) 文件重命名策略 为了避免因文件名冲突引发覆盖等问题,建议采用随机化方式生成新名称替代原始文件名。例如: ```python import os import uuid def save_file(upload_dir, uploaded_file): unique_filename = f"{uuid.uuid4().hex}{os.path.splitext(uploaded_file.filename)[1]}" destination_path = os.path.join(upload_dir, unique_filename) uploaded_file.save(destination_path) return unique_filename ``` ##### (4) 设置大小限制 定义合理的最大文件尺寸阈值,超出该范围则立即返回错误提示给用户。此操作可在框架层面完成配置或者手动编写逻辑实现。 ##### (5) 日志记录与监控 建立健全的日志体系用于追踪每一次文件上传行为,便于后续审计以及快速定位潜在威胁源[^3]。 --- ### 结论 综上所述,为了保障文件上传环节的安全性,开发人员应当综合运用多种技术和管理手段构建多层次防御屏障。这不仅涉及具体的编码技巧调整,还需要定期开展员工培训提升整体团队的安全意识水平[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thunderclap_

点赞、关注加收藏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值