web 注入,,sql 笔记
模板注入,,首先是因为客户端的输入是高效地运行网站的服务,不可缺少的,所以有时候就会出现这样的问题,客户端的输入再服务器上面不能过滤,或执行了一些不够规范的输入,这其中就会出现问题,例如开源脚本文件php的执行,有时候可以获得服务器端的webshell也不奇怪,这也是相当我们我们所说的 rce漏洞问题,
在一些客户端输入的窗口没有做好输入处理,使得攻击者能够在远处对服务器植入攻击代码,,,rce就是remote command excute (远端控制运行);这也是php超文本语言工作的方式,只是服务端的处理的系统模块不一样,
在这道题目里面通过在url输入{{name}} :index.php{{3+3}}
观察返回的网页是否已经执行了打括号里面的计算,这样的话就可以判断出是否具有sstl漏洞,基于这一点上面,就可以构造出符合python3语法的payload,执行返回flag
那么现在的话问题就是怎么构造payload:
哈哈哈,说着玩的,不是这样做的,首先要查看当前目录(),构造payload1查看当前的目录,,在目录里发现一个fl4g的文件,之后构造payload2打开fl4g文件
具体做法:
{{[].__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].listdir('.')}} //global是全球的全面的意思,,os表示操作系统模块,
不过在这里好像是一个文件夹或者是字符串,变量(。。。)
具体的payload我还不会写,这里的是在网上找到的。只要知道返回的网页会执行{{}}里面的指令就行了,不用在意后面的网页显示not found.
发现 fl4g文件之后执行:
{{[].__class__.__base__.__subclasses__()[40]('fl4g').read()}}
这句payload还是很好理解的 ,通过上面的对比大概可以知道前面的一段代码是打开路径的(我猜的,不懂),然后后面的一串是对文件'fl4g'执行read方法,,,刚学的python用上了。。。。。。。。。以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。
以下为建立路径所使用的几个特殊符号,及其所代表的意义。
"./" 代表目前所在的目录。
"../" 代表上一层目录。
"/" 代表根目录。
我想当前路径很可能就是找出当前目录的方法,,大概吧,网上也没找到具体清楚的说法