Web安全基础 - LFI Labs
Web安全基础 - LFI Labs本实验来自于https://github.com/paralax/lfi-labs
做到一半了才发现BUUCTF上有,可以参考本篇做一下更有成就感
CMD
CMD-1
该关卡直接执行Get方法cmd对应的命令
https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125222254133-22053178.png
CMD-2
和上题相似,接收参数方式换成POST请求
https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125223405962-1001256975.png
CMD-3
本实验应该在LNIUX环境下运行,我们要修改/usr/bin/whois为作用相近的nslookup
补充一些常用的绕过方法
cmd1|cmd2:不论cmd1是否为真,cmd2都会被执行;
cmd1;cmd2:不论cmd1是否为真,cmd2都会被执行;
cmd1||cmd2:如果cmd1为假,则执行cmd2;
cmd1&&cmd2:如果cmd1为真,则执行cmd2;
https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125224910243-1264250768.png
CMD-4
Windows同样没有whois改代码可以用Docker创建。
在实验目录下运行docker-compose up记得开启Docker-Desktop来启动守护进程。
https://img2022.cnblogs.com/blog/2860856/202211/2860856-20221125231706523-945162028.png
CMD-5
本关先对域名进行解析,然后传参进入whois -h
根据hint,不是所有的参数都要在文本框输入,我们可以通过控制server来进行RCE
http://localhost:8080/CMD-5/?domain=facebook.com&server=127.0.0.1|whoami||
LFI部分
我们重点学习LFI的相关绕过
基础知识
文件包含漏洞就是利用文件包含函数,来实现信息泄露或代码注入等恶意操作。
文件包含的条件:
[*]allow_url_fopen=On (默认为 On) 规定是否允许从远程服务器或者网站检索数据
[*]allow_url_include=On (php5.2 之后默认为 Off) 规定是否允许 include/require 远程文件
两个配置选项均需要为On,才能远程包含文件(RFI)成功,由于危害较大,所以常见的是LFI。
LFI-1
最简单的文件包含,基本原理是include会将文件作为php文件来解释。
在docker里面创建要包含的文件
root@lfiweb:/var/www/html# cat payload.php直接get请求包含即可http://localhost:8080/LFI-1/?page=../payload.php
LFI-2
我的环境下LFI-2没有includes文件夹,创建后按照上一题的思路构造
http://localhost:8080/LFI-2/?library=../../payload
这里涉及到了file://协议
file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。在很多情况下是脚本所在的目录,除非被修改了。使用 CLI 的时候,目录默认是脚本被调用时所在的目录。在某些函数里,例如 fopen() 和 file_get_contents(),include_path 会可选地搜索,也作为相对的路径。
LFI-3
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的方法。
这里补充下其他常见的文件包含利用点
include():程序执行到才包含,遇到错误生成警告,继续执行脚本
require():程序运行起来立刻包含,遇到错误生成致命错误,脚本继续
include_once():如果文件已包含,则不再进行包含
require()_once():如果文件已包含,则不再进行包含
fopen(),file_get_contents()等:文件读取函数
根据源码,这里的后四位不能是.php
我学到的几种绕过方法如下,但是都是基于windows文件系统特性的绕过,docker搭建的环境下还是不会绕,又用回去phpstudy了(对不起我是废物)
<blockquote>
大小写绕过:php->PHp
空格绕过:php->php,这个得抓包后在hex中修改
加点饶工:php->php.
特殊字符绕过:php->php::$DATA
使用'.ph
页:
[1]