暑假训练Web

一、yi_ge_webshell

打开链接以后出现下面页面
在这里插入图片描述
代码要求:利用传入code构造getFlag()函数,长度在50以内,不包含字母、数字以及下划线。
找了很多资料发现有不包含数字和字母的webshell构造方法,异或。
两个字符串进行异或运算时,是对应Ascii码转化成二进制的运算,最终结果得到的还是字符串。所以,可以利用非字母数字字符串的异或来构造getFlag()函数。
用python跑一下脚本直接得到特殊字符的异或结果
在这里插入图片描述根据所得的异或结果构造出getFlag为
在这里插入图片描述但是直接放上payload超出限制:
在这里插入图片描述所以考虑字符串直接异或。另外,需要构造getFlag函数,涉及到如何绕过字母和数字调用函数,看了大佬文章发现可以用到中文字符
在这里插入图片描述拿到flag:SKCTF{yi_ge_sui_bian_xie_de_flag}

这里是参考文章

======================================================

二、ling_yi_ge_webshell

打开链接以后出现代码:
在这里插入图片描述和yi_ge_webshell那个题目相比,这道题在code的限制条件中多加了一个不能出现$。根据异或结果,要想异或出来这个符号有两种组合,一个是_异或{,另一个是{异或_。但是代码限制了下划线的出现,所以这种方法不行。还有一个提示点是:flag在根目录下,看了几位大佬的文章,发现考察的知识点是Linux通配符。

有关于通配符的参考资料1
有关于通配符的参考资料2
有关于通配符的参考资料3
在这里插入图片描述由于flag在根目录下,所以可以用通配符/???/???/来构造/bin/cat/根目录下的文件。把代码放进PHP标记,加上所以构造payload:?code=?><?=/???/??? /?>
然后就会得到一堆代码查找SKCTF拿到flag,但是这个构造格式没有太懂,为什么是?>呢
在这里插入图片描述
拿到flag:SKCTF{you_shi_yi_ge_sui_bian_xie_de_flag}

参考Wp以及牟大佬的文章。

========================================================

猜你喜欢

转载自blog.csdn.net/weixin_44236278/article/details/98310514