不知不觉中,0xGame也迎来了最后一周。本来,我打完第一周,就没有打算再打下面三个阶段了,但听说本周有一道Misc题,做出来的人只有一个学长,而哪个新生能第一个做出来,会有奖励,所以我去试了一下(然而还是晚了一步,拿了新生中的二血QwQ)
本题很有意思。题目先是给你了个机器人,这个机器人你可以让她执行print()这一python指令,其本质是print(eval()),但避免有熊孩子捣乱,所以所有者对其进行一些关键词屏蔽(避免服务器被日)
可以看出,她的WAF很细,不是按顺序匹配并滤掉某个关键词那么简单,而是寻找有无这些关键字母,宁可错杀一万,也不可放过一个。
但是,Hex酱似乎没有屏蔽os或import等关键词,那么我们就要思考如何绕过某些字符串了。
我的想法是,既然字母会被滤掉,换成八进制数字不就好了吗?c++代码如下:
#include<iostream> using namespace std; int main(){ char a[1000]; int b=0; while((a[b]=getchar())!='\n'){ b++; } for(int j=0;j<b;j++){ printf("'\\%o'",a[j]); if(j!=(b-1)) printf("+"); } }
然而以上只能绕过字符串,不能绕过函数,所以我们要找的一个比较巧妙的函数—-既能执行cmd命令,又能将结果输出来。
然而这个函数爷找了一天多时间,就是这个崽种:
__import__('os').popen().read()
行了那就这样:
另外这里还有一个坎,靶机桌面文件太多了,而qq私聊的字符长度有限,所以你得在read()里加点东西:
大功告成!
tql
🐮🐸
Dead written subject matter, appreciate it for information . Ashien Stephan Micki
Hello. This post was really motivating, particularly because I was looking for thoughts on this matter last Tuesday. Berti Miller Desi
really? 😆