1-1:niscc-[SWPUCTF 2021 新生赛]nc签到
题目:ls cat等关键词的过滤
打开ubuntu进行nc连接
指令形式 nc ip 端口号 nc 域名 端口号
附件内容:字符过滤
解释
这段Python代码实现了一个简单的命令行shell,但加入了黑名单功能,禁止执行某些命令。 首先,通过import os导入操作系统模块。 定义了一个多行字符串art,用于显示shell的欢迎界面。 使用print()函数分别输出欢迎界面和"ProVersion"。 创建一个名为blacklist的列表,其中包含了一些禁止执行的命令。 使用while True创建一个无限循环,不断接收用户输入的命令。 使用input()函数获取用户输入的命令,并将其存储在变量command中。 使用for循环遍历黑名单列表blacklist。 如果黑名单中的任何一个词语在用户输入的命令中出现,则通过exit(0)退出程序。 如果用户输入的命令不在黑名单中,则使用os.system(command)执行该命令
import os art = ''' (( "####@@!!$$ )) `#####@@!$$` )) (( '####@!!$: (( ,####@!!$: )) .###@!!$: `##@@!$: `#@!!$ !@# `#@!$: @#$ #$ `#@!$: !@! '@!$: '`\ "!$: /`' '\ '!: /' "\ : /" -."-/\\\-."//.-"/:`\."-.JrS"."-=_\\ " -."-.\\"-."//.-".`-."_\\-.".-\".-//''' print(art) print("My_shell_ProVersion") blacklist = ['cat','ls',' ','cd','echo','<','${IFS}'] while True: command = input() for i in blacklist: if i in command: exit(0) os.system(command)
所以,我们连接上以后,输入ls的查看命令是不行的
使用l\s,执行时l\s=ls,但在字符串判断时肯定不是相同的。
我们使用cat指令,读取文件(回头看一下,cat也被过滤了,没事,再加条\,变成c\at flag)
空格也是被过滤了,使用$IFS$9可以代替空格执行
c\at$IFS$9flag //$IFS$9可以替换空格