网站转移空间备案是不是就没有了,网站数据接口怎么做,做音乐网站要多少钱,自己开发小程序要多少钱第一关#xff08;JS绕过#xff09;
1.1使用bp进行绕过
先将要上传的php文件的后缀改为png#xff0c;然后在上传时抓包#xff0c;将png后缀再改为php#xff0c;发包#xff0c;此时上传成功
1.2使用js进行绕过
打开浏览器的检查#xff0c;将其中的checkFile函数…第一关JS绕过
1.1使用bp进行绕过
先将要上传的php文件的后缀改为png然后在上传时抓包将png后缀再改为php发包此时上传成功
1.2使用js进行绕过
打开浏览器的检查将其中的checkFile函数直接删除即可上传php文件 第二关mime类型
常见的MIME类型(通用型)
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtmlxml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream分析源代码发现这里只是将content-type做了校验我们可以在上传时抓取数据包然后更改content-type进行绕过
选择一个php后缀的文件然后进行抓包更改content-type改为image/png 靶场中显示这样子的界面即为上传成功 第三关黑名单绕过
查看源代码发现这里对上传文件的后缀进行了限制php等一些文件都上传不了我们可以尝试绕过黑名单例如php3 php4 php5 phtml的文件进行上传
只需将想上传的php后缀的文件改为php3 php4 php5 phtml中的任意一个即可然后直接上传就能成功
第四关黑名单绕过 .htaccess
补充知识
.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法 即在一个特定的文档目录中放置一个包含一个或多个指令的文件 以作用于此目录及其所有子目录。作为用户所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
概述来说htaccess文件是Apache服务器中的一个配置文件它负责相关目录下的网页配置。通过htaccess文件可以帮我们实现网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
启用.htaccess需要修改httpd.conf启用AllowOverride并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名可以用AccessFileName指令来改变。例如需要使用.config 则可以在服务器配置文件中按以下方法配置AccessFileName .config 。
笼统地说.htaccess可以帮我们实现包括文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表以及使用其他文件作为index文件等一些功能。
.htaccess文件可以在网站目录树的任何一个目录中只对该文件所在目录中的文件和子目录有效。
注意子目录中的指令会笼盖更高级目录或者主器配置中的指令。.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录即子目录中的指令会覆盖父目录或者主配置文件中的指令。所以本关可以先上传一个.htaccess文件文件内容如下
SetHandler application/x-httpd-php将所有的文件以php解析随后上传php文件将后缀改为png或者jpg格式上传即可然后会被解析为php
第五关大小写混合绕过
查看源码发现“file_ext strtolower($file_ext); //转换为小写”这一句没有了所以可以使用大小写进行绕过例如1.php改为1.phP
第六关空格和点配合绕过
利用Windows系统的文件名特性。文件名最后增加空格和点写成1.php .这个需要用burpsuite抓包修改上传后保存在Windows系统上的文件名最后的一个.会被去掉实际上保存的文件名就是1.php
第七关空格和点配合绕过
跟第六关一样
第八关基于文件流特性::$DATA来绕过
本关少了“file_ext str_ireplace(::DATA, , file_ext);//去除字符串::DATA”这一句我们可以采用Windows文件流特性绕过文件名改为1.php::$DATA , 上传成功后保存的文件名其实是1.php
第九关点空格点绕过
上传文件名后加上点空格点改为
1.php. . 第十关双写绕过
由于 file_name str_ireplace(deny_ext,, $file_name); 只对文件后缀名进行一次过滤这样的话双写文件名绕过文件名改成1.pphphp
第十一关(%00截断)
这个属于白名单绕过这是php语言自身的问题php低版本存在的漏洞。
漏洞的利用条件php版本5.3.4并且magic_quotes_gpc关闭。
分析代码这是以时间戳的方式对上传文件进行命名使用上传路径名%00截断绕过不过这需要对文
件有足够的权限比如说创建文件夹上传的文件名写成1.jpg, save_path改成../upload/1.php%00 (1.php%00.jpg经过url转码后会变为1.php\000.jpg)最后保存下来的文件就是1.php 第十二关0x00绕过
跟11关原理相同只是12关改为了POST传参抓包将%00选中在对其编码即可 第十三关文件头检查
绕过文件头检查添加GIF图片的文件头GIF89a绕过GIF图片检查。
或者我们使用命令copy 1.jpg /b shell.php /a webshell.jpg将php一句话追加到jpg图片末尾代码
不全的话人工补充完整。形成一个包含Webshell代码的新jpg图片然后直接上传即可。但是我们没
有办法拿到shell应为我们上传的图片马无法被解析成php形式通常图片马配合%00或者0x00截断上
传或者配合解析漏洞
本关存在文件包含漏洞 打开此链接后可以检查图片马是否正常
第十四关文件内容检测-getimagesize()绕过
补充知识
getimagesize() 函数用于获取图像尺寸 索引 2 给出的是图像的类型返回的是数字其中1 GIF2 JPG3 PNG4 SWF5 PSD6 BMP7 TIFF(intel byte order)8 TIFF(motorola byte
order)9 JPC10 JP211 JPX12 JB213 SWC14 IFF15 WBMP16 XBMimage_type_to_extension() 函数用于获取图片后缀
方法与13关相同
第十五关文件内容检测-exif_imagetype()绕过
exif_imagetype() 此函数是php内置函数用来获取图片类型
方法与13关相同
第十六关二次渲染
较难
二次渲染原理将用户上传过来的文件数据重新读取保存到另外一个文件中那么在读取写入的过程中将特
殊的数据剔除掉了
为了方便大家测试这里提供一张网上某个大佬提供的GIF图片当时我也找了很久大家可以保存一下
https://wwe.lanzoui.com/iFSwwn53jaf
第十七关时间竞争
本关是能将php文件上传到服务器中的但是会被服务器迅速删掉所以我们可以利用条件竞争删除文件时间差绕过。
第一步抓取上传文件的包清除变量 第二步 第三步这个地方的线程可以调高一点 随后点击开始攻击这样页面就会不断上传1.php文件
然后我们写一个python脚本
import requests
url http://xxx.xxx.xxx.xxx/upload-labs/upload/1.php
while True:html requests.get(url)if html.status_code 200:print(OK)break这个脚本是不断请求服务器中的1.php文件我们可以在kali中使用此脚本访问成功会提示OK并退出脚本
第十八关时间竞争
本关不能再上传php文件了需要上传图片马
且本关靶场有点问题需要自己手动修改一下 后续操作和17关相同python脚本需要改一下
import requests
url http://xxx.xxx.xxx.xx/upload-labs/include.php?fileupload/pass19.png
while True:html requests.get(url)if ( Warning not in str(html.text)):print(ok)break第十九关
与前面的11和12关类似
move_uploaded_file()还有这么一个特性会忽略掉文件末尾的 /.
所以在上传的位置改为upload-19.php/.
第二十关
本关来源于ctf比较绕参考别的大佬的解题方法
文件命名规则$file_name reset($file) . . . $file[count($file) - 1];
reset():将内部指针指向数组中的第一个元素并输出。
end():将内部指针指向数组中的最后一个元素并输出。
$file empty($_POST[save_name]) ? $_FILES[upload_file][name] :
$_POST[save_name];如果save_name不为空则file为save_name,否则file为filename
if (!is_array($file))判断如果file不是数组则以’.’分组
文件名命名规则$file_name reset($file) . . . $file[count($file) - 1];
我们POST传入一个save_name列表[info20.php, , jpg],此时
empty($_POST[save_name]) 为假则file为save_name所以由$ext end($file);为jpg可以通
过后缀名判断判断结束后最后一个元素jpg弹出并且最终文件名组装为upload20.php.