前言 tips: *如果我们在使用蚁剑发现了返回值为空说明一句话木马语法错误,如果我们发现返回值是一串乱码 则是链接地址填写错误*
目录
一、前端js验证
二、mime类型绕过
三、黑名单绕过
四、.htaccess文件配置文件漏洞,无过滤
五、PHP的.user.ini文件(. 空格 .)
六、大小写
七、trim()去空操作
八、winous特性,以.结尾无效
九、::$data
十、一次过滤没有循环
十一、这一关进行了过滤php字符串
十二、%00截断:url 的终止符
十三、post %00截断
十四、文件包含漏洞+图片马上传(只对图片的文件头进行了检测,可以只保留文件头)
十五、文件包含漏洞+图片马上传
十六、文件包含漏洞+图片马上传
十七、二次渲染
十八、逻辑漏洞+文件竞争
十九、图片马和文件包含漏洞
二十、截取数据包
二十一、数组和文件上传检测的结合
先上传php文件尝试一下,提示只能上传\jpgpng\gif的文件,并且是在前端过滤。
做一个图片马
burp抓包改包,修改为php
上传成功
1、JS前端绕过修改后缀也是可行的 2、修改mime类型
Content-Type: application/octet-stream修改为image/jpeg
上传成功
首先要在httpd.conf中配置 因为默认是未启用的
随便上传一个文件查看提示不允许上传asp.aspx.php.jsp
有很多类型可以绕过这几种 php3 php4 php5 phtml PHphpp
适用条件 php版本 5.6一下 未开启nts htaccess”文件或者称为分布式配置文件,它是 Apache 服务器中的配置文件,提供了针对每个目录设置不同的配置的方法。有些服务器在上传认证时没有拦截 .htaccess 文件上传,就会造成恶意用户利用上传 .htaccess 文件解析漏洞,来绕过验证进行上传 WEBShell,从而达到控制网站服务器的目的。
将其进行上传,因为 .htaccess 是 apache 服务器中的一个配置文件,不在上传的文件的黑名单之内,所以 .htaccess 文件是可以上传成功。
再上传图片马,由于 .htaccess 文件上传之后就生效了,此时所有的 png 文件都会以 php 文件的形式被解析,即可进行连接。
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的INI文件,此类文件仅被 CGI/FastCGI SAPI 处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描INI文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录。 使用 user.ini 文件进行文件上传时,需要服务器脚本语言为 PHP,对应目录下面有可执行的php文件,且服务器使用 CGI/FastCGI 模式。.user.ini.它比 .htaccess 用的更广,不管是nginx/apache/IIS,只要是以 fastcgi 运行的 php 都可以用这个方法。(user.ini文件利用还没搞明白 我再研究一下)
直接上传shell文件,修改为shell.php. .
上传成功
此方法只适用于windous,而linux是区分大小写的,不能正常执行
.php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini"
pHP \PHP \Php \pHP3 \PHP3 \Php3 种类比较多 自行发挥
上传shell.php后加空格绕过
上传shell.php后加.
::$data的作用是将webshell.php当做字符流处理,所以对其后缀名检测不成功。
. .绕过
phphpp\Phphpp等等 自行发挥
本题考查%00截断,相当于复现CVE-2006-7243,所以需将php版本设置为PHP 5.3.4以下, 并关闭`magic_quotes_gpc`选项。
php.ini
可见保存的路径也可以由用户所控制,GET类型的传参。因此在保存路径中修改为:
save_path=../upload/test.php%00
解码以后变成不可见字符
刚开始图片一直上传不上去,一直报识别不了图片格式,到最后才发现是图片的问题 ,前几关就没有那么严格,没检测出来
创建图片马后直接上传
直接上传图片马,拿到图片路径名字-----../upload/7020220721113955.jpg
因为本关卡还提示需要通过文件包含来读取jpg里面的小马代码拿shell,所以需要建立一个包含代码的文件,我这里就定义名称为in.php,内容如下:
然后直接利用文件包含拿shell
和上边类同 前提条件:要开启一个php.ini的配置 黑屏的情况下重启[phpstudy](https://so.csdn.net/so/search?q=phpstudy&spm=1001.2101.3001.7020),删除upload再新建一个upload 删掉分号
原理 **在我们上传文件后,网站会对图片进行二次处理(格式、尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片(标准化)并放到网站对应的标签进行显示。
上传图片马以后一句话木马不见了
对比上传后和上传前木马文件
发现一句话木马被过滤,对比不检测修改的的地方加入进去
再次上传,发现并没有被过滤
没看到一句话木马应该是被转化格式了
另外两种方式转载分享
https://blog.csdn.net/weixin_45588247/article/details/119177948?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165871609416781818770412%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165871609416781818770412&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-119177948-null-null.142^v33^new_blog_pos_by_title,185^v2^control&utm_term=%E4%BA%8C%E6%AC%A1%E6%B8%B2%E6%9F%93%E7%BB%95%E8%BF%87&spm=1018.2226.3001.4187
上传木马文件
');?>
设置多线程并发,
先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除 这就在文件的处理顺序上出现了问题,不管文件类型是否合格就上传至服务器,之后再对其类型进行判断,这样的处理顺序导致了在多线程的情况下,有可能对于不合格的文件还没来得及删除就已经被访问,导致不合格的文件绕过了限制 因此我们可以打个时间差:上传木马,只需要在它删除之前访问即可
#用来请求fopen.php import requests url = "http://172.16.1.148/upload-labs-master/upload/fopen.php" url_2 = "http://172.16.1.148/upload-labs-master/upload/shell.php" while True: html = requests.get(url) html_2 = requests.get(url_2) if html_2.status_code == 200: #判断shell.php是否写入成功 print("OK") break
生成shell.php成功
连接成功
#跟18是一样的,附上脚本
import requests
url = "http://www.bj.com/upload-labs/upload/include.php?page=./../shell.png"
while True:
html = requests.get(url)
if ( 'Warning' not in str(html.text)):
print('ok')
break
有一个更改上传后名称的功能点
正常的绕过也都是可以的
代码审计看别人写的吧 我不会 参考链接 https://baynk.blog.csdn.net/article/details/102917199?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-102917199-blog-110919368.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-102917199-blog-110919368.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2
抓包修改上传