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

NSSCTF [LitCTF 2025]test_your_nc

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

​​​​​​题目

题目:

给了一个python文件

#!/bin/python3
import osprint("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

相关文章:

  • 第二篇: 深入解析模型上下文协议(MCP):技术架构、核心组件与深远影响
  • 互联网c++开发岗位偏少,测开怎么样?
  • HertzBeat的安装和使用教程
  • es 的字段类型(text和keyword)
  • Axure-元件流程图
  • 湖北理元理律师事务所:法律视角下的债务优化与生活平衡之道
  • jenkins结合gitlab实现CI
  • hive聚合函数多行合并
  • Apache Doris 在数据仓库中的作用与应用实践
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • ASR技术(自动语音识别)深度解析
  • Ubuntu中TFTP服务器安装使用
  • Windows系统中服务和进程的区别
  • 基于Linux系统docker封装exe
  • 2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家
  • 数学复习笔记 24
  • 矩阵的偏导数
  • MongoDB数据库学习
  • Linux——初步认识Shell、深刻理解Linux权限
  • k8s的出现解决了java并发编程胡问题了
  • 网站建设的整体流程/百度快速收录提交工具
  • 文案策划的网站/网络推广平台都有哪些
  • 网络规划设计师和系统架构师哪个好考/龙岗seo优化
  • 毕业设计网站做几个/江苏网络推广公司
  • 网站里的动画效果图/2023年小学生简短小新闻
  • 柳州做网站的/手机百度seo快速排名