escape
收获:了解了python沙箱逃逸这种类型
getattr:对沙箱逃逸有很大作用
list(s)获得字符集,可以用来绕过引号限制
试了一下system
1 | banned= ["'", '"', '.', 'reload', 'open', 'input', 'file', 'if', 'else', 'eval', 'exit', 'import', 'quit', 'exec', 'code', 'const', 'vars', 'str', 'chr', 'ord', 'local', 'global', 'join', 'format', 'replace', 'translate', 'try', 'except', 'with', 'content', 'frame', 'back'] |
发现引号和点都被过滤了,不过提示说
1 | def hello(): |
说明是可以通过调用system来完成,接下来就是想办法得到system函数了
而引号被过滤可以用字符串s里的值来绕过
1 | #考虑这样来 |
1 | def get_str(string): |
flag{4EEAA88DA0B3207862D2E4876AF84A3D}
strange_ssid
这题是结束听别人讲的
所有的数据都是32个字符
所以猜测是md5加密
找出符合md5格式的数据
68dffd5a1be838b5326209714f7ea7a5
解密后提交flag{n3k0}失败
直接提交flag{68dffd5a1be838b5326209714f7ea7a5}试试
成功
ezphp
收获:知道了curl_exec 本地文件读取
1 |
|
curl_exec+反序列化
试了下本地文件读取
O:5:”Hello”:1:{s:1:”a”;s:27:”file://localhost/etc/passwd”;}
题目过滤flag字符
说明我们flag就在flag文件里
谷歌看了好久,后来看一道又curl_exec的题目,获得了url二次编码的思路
最后的payload:
http://47.97.253.115:10006/?z=O:5:%22Hello%22:1:{s:1:%22a%22;s:23:%22file://localhost/%2566lag%22;}
这里有一些坑就是:
你不知道flag文件在哪个文件夹,结果最后就在根目录。。
因为是二次编码所以要注意字符串的长度
onion’s_secret
下载得到一个压缩包,常规的检查走一遍
发现onion.jpg文件尾后还有数据
zip格式,get一个新的加密压缩包
密码在hint里有提示
接下来就是很普通的写python了
1 | import zipfile |
commom_encrypt
读代码就完事了
1 | def encrypt(data,groupnums): |