第11关
第一步:查看源码
这是一个白名单,里面限制了只可以提供它所规定文件jpg,png,gif。
这段 PHP 代码主要实现了文件上传的功能,并进行了一些条件判断和处理:
首先,定义了两个变量
$is_upload
并初始化为false
,$msg
初始化为null
。然后,检查是否通过
POST
方法提交了表单中的submit
按钮。接着,定义了一个允许上传的文件扩展名数组
$ext_arr
,包含jpg
、png
和gif
。获取上传文件的扩展名,并使用
in_array
函数检查扩展名是否在允许的数组中。如果扩展名合法:
- 获取临时文件的路径
$temp_file
。- 生成保存文件的路径
$img_path
,路径包括通过$_GET['save_path']
获取的保存位置、随机数、当前时间和文件扩展名。- 如果文件移动成功(使用
move_uploaded_file
函数),将$is_upload
设为true
;否则,将$msg
设为'上传失败!'
。如果扩展名不合法,将
$msg
设为'只允许上传.jpg|.png|.gif 类型文件!'
。例如,如果用户上传了一个扩展名为
jpg
的文件,并且文件移动成功,那么$is_upload
会变为true
,表示上传成功。如果用户上传了一个扩展名为$msg
会被设置为'只允许上传.jpg|.png|.gif 类型文件!'
,提示用户上传的文件类型不被允许。
由代码可以得知,文件的路径是可控的,所以save_path是一个可控的变量,后面还有一个后缀名需要绕过,这个时候需要使用%00截断。
第二步:修改php版本,和修改php配置文件内容
修改php版本
修改配置文件内容
修改内容为如图magic_quote_gpc = Off
第三步:burpsuite抓包修改文件路径
第四步:查看访问上传的文件即可
第12关:
第一步:查看源码
看着和第11关差不多,但是这里换成了post
第二步:抓包看一下
思路就和第十一关一样,但是post方式不会自行解码,所以要对%00进行urldecode编码。
选中%00右键Convert selection进行url编码后放包。
第三步:查看访问muma.php文件
第13关:
第一步:查看源码
第二步:上传图片马
首先,上传一个png图片,在该png图片当中写入我们的php代码,上传成功后,使用文件包含漏洞去调用即可,
别忘了把引用文件的地址写对.其他类型的图片均可以按照此模式进行
需要有一个include.php配合使用
将include.php放在www\upload-labs目录下
include的 内容如下
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
include $file;
}else{
show_source(__file__);
}
?>
第三步:查看访问、成功 例如:http://192.168.1.10/upload-labs/include.php?file=upload/1220240728232019.gif
第14关:
第一步:查看源码
关键函数是getimagesize
第二步:修改图片马的内容
getimagesize函数会对目标的十六进制的前几个字符串进行读取。比如GIF的文件头问GIF89a,png的文件头为塒NG。所以这关和第十三关一样,我们只需要用notepad打开图片马,在前面加上GIF89A,保存为22.gif
第三步:访问地址,例如我的是
http://192.168.1.10/upload-labs/include.php?file=upload/9520240728233114.gif
第15关:
第一步 :查看源码
第二步:开启 PHP 的 exif 扩展
要开启 PHP 的 exif 扩展,需要对 PHP 的配置文件(php.ini)进行相应的修改。以下是在 Linux 服务器上开启 exif 扩展的一般步骤:
-
找到 PHP 的配置文件,通常在
/etc/php/7.x/apache2/php.ini
或者/etc/php/7.x/cli/php.ini
中(其中7.x
表示 PHP 的具体版本号,你需要根据实际情况进行调整)。 -
打开配置文件后,搜索关键词
exif
,找到以下行:;extension=exif
-
去掉前面的分号,将其改为:
extension=exif
-
同时,确保满足 exif 扩展的依赖条件。通常需要启用
php_mbstring.dll
扩展,并且确保它在php_exif.dll
之前被加载。如果php.ini
文件中php_mbstring.dll
扩展被注释掉(前面有分号),则去掉分号。另外,建议将包含php_mbstring.dll
的行移动到extension=php_exif.dll
之前。例如:extension=php_mbstring.dll
extension=php_exif.dll
-
保存修改后的 php.ini 文件。
-
最后,重启 apache 服务器或者 php-fpm 服务,以使配置生效。
完成上述步骤后,就成功开启了 PHP 的 exif 扩展。
第三步:访问地址,例如我的是
http://192.168.1.10/upload-labs/include.php?file=upload/2920240728234554.gif