本文最后更新于 2309 天前,其中的信息可能已经有所发展或是发生改变。
一、eval() 函数用来执行一个字符串表达式,并返回表达式的值
二、nc 重定向 nc -e ./【】.py 202.38.95.46 12009
#!/usr/bin/env python3
import sys
input()
while True:
expr = input()
print(expr, file=sys.stderr)#将输入的信息输出到stderr管道中
ans = eval(expr)
print(ans, file=sys.stderr)#将输入信息求值后输出到stderr管道中
print(ans)
三、replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
语法 str.replace(old, new[, max])
#!/usr/bin/env python3
import sys
tricks=[
"__import__('os').system('find ~')",
"__import__('time').sleep(100)",
r"print('\x1b\x5b\x33\x3b\x4a\x1b\x5b\x48\x1b\x5b\x32\x4a')",
'exit()'
]
def removetricks(s): #应传入字符串str
for t in tricks:
s = s.replace(t,'None') #将列表中的匹配项换为None
return s
input()
for i in range(100):
print(i, file=sys.stderr)
expr = input()
print(expr, file=sys.stderr)
ans = eval(removetricks(expr)) #调用eval()时需要把没有返回值的表达式剔除
print(ans, file=sys.stderr)
print(ans)
print(input(), file=sys.stderr)
writeup地址 : https://github.com/ustclug/hackergame2018-writeups