NSSCTF [LitCTF 2025]test_your_nc

 [复现]绕过学的还是太差了,多积累吧

​​​​​​题目

题目:

给了一个python文件

#!/bin/python3
import os

print("input your command")

blacklist = ['cat','ls',' ','cd','echo','<','${IFS}','sh','\\']

while True:
    command = input()
    for i in blacklist:
        if i in command:
            exit(0)
    os.system(command)

这里有一个输入点,并且禁用了catls空格cdecho<${IFS}sh\\
最后会用os.system执行我们输入的内容

思路:

这题对我们的输入存在多个限制,可以用''(空字符串)绕过对cat的限制,而空格这里学了一个新的绕过方法用$IFS


知识点:
$IFS 是 shell 环境变量,全称是 Internal Field Separator(内部字段分隔符),默认值为空格、制表符、换行符,用于分隔命令中的参数
$IFS 的默认值是空格、制表符(Tab)和换行符(Newline)
(部分场景下,$IFS 后必须跟一个数字,如 $IFS$1$IFS$9 等,才能正确替代空格)
这种写法常用于规避对空格的限制(如某些环境禁止使用空格,但允许使用变量替换)


所以最后通过这句获得flag

ca''t$IFS$5flag

注意点:

$后面跟数字1-9

0不可以是因为在特殊情况下0会被认为是sh或者是/bin/sh
 


这题是把$0认为了sh

($0和system的连接可以看这道题题目题解)
10开始不可以是因为,从10开始,需要这么写入${10},单写$10,会被识别成$1和0

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值