zoukankan      html  css  js  c++  java
  • 【RCTF-2015】bug

    信息:

    题目来源: RCTF-2015

    标签:PHPSQL注入

    解题过程

    访问网址,提示需要登陆:

    bug1

    使用admin用户名进行注册,提示:

    bug2

    对登陆页面与注册页面进行Fuzz,没有发现注入点。

    bug3

    登陆后页面如下:

    bug4

    Manage页面提示需要管理员权限,猜测需要获取管理员账号的密码。登陆页面提供了找回密码功能,对此功能进行测试:

    bug5

    修改用户名为:admin,成功修改管理员密码。

    使用管理员登陆,进入Manage选项时,提示IP Not allowed!,猜测需要使用127.0.0.1访问。

    bug6

    进入管理页面后,查看源代码获得提示:

    bug7

    do的参数没有给出,根据module=filemanage,猜测do的内容与文件操作有关。

    经过尝试()得到完整的url为:

    http://220.249.52.133:38165/index.php?module=filemanage&do=upload
    

    bug8

    猜测需要绕过文件类型检测。

    屏蔽js脚本进行尝试,发现不是前端验证。

    进行抓包测试:

    bug10

    application/octet-stream:只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)

    修改MIME为图片格式,还是识别出php脚本:

    bug9

    经过测试这里不仅对后缀进行了黑名单过滤,同时会检查文件的开头内容,所以不能以<?php<?开头。

    可以使用用<script language="php"></script>来进行绕过,后缀为php5或php4时可看到flag。

    bug13

    文件解析漏洞总结-Apache

    文件解析漏洞总结-Apache

    1.多后缀名

    Apache认为,一个文件可以有多个后缀,如:werner.txt.png.mp3。这一文件,放在Windows里,毫无疑问,就是个mp3文件。

    而在Apache中,则可能有所不同,如果有必要,Apache会从后(右)往前(左),一一辨别后缀。何时有必要?当Apache不认识某个后缀时,便有必要。

    如某文件名为:werner.mp3.html.qwe.arex,Apache在处理时,先读取最后一个后缀,为.arex,一看,这啥玩意啊,不认识,继续读取下一个后缀.qwe,一看,呀,这又是啥,还是不认识,继续读下一个后缀.html,一看,哦,这是个超文本标记语言文件,俗称网页文件,这回认识了,也就不继续读下一个后缀了。

    若是所有后缀都看完了没有一个认识怎么办?此时就会把该文件当做默认类型进行处理了,一般来说,默认类型是text/plain。

    那么aaa.php.xxx为何没有被作为php代码执行呢?我猜是这样的,当然只是我的猜测,实在是找不到相关资料,只好猜了。

    Apache看到文件aaa.php.xxx,按照多后缀名的解析规则,认为该文件是php程序文件,把该文件作为php程序文件处理。怎么处理呢?交给php解释器,Apache本身并不懂php。而php解释器却有着和Apache不同的后缀解析规则,可能只认最后一个后缀,故而认为aaa.php.xxx不是php程序文件,拒绝执行。

    在我的测试环境中,php以模块(module)的模式工作于Apache的领导下。这种模式下php接受到领导Apache分配的任务——aaa.php.xxx,一看,不是php程序文件,没法执行,但也没有报错,而是返回了文件内容本身。php还可以以FASTCGI的模式工作于Apache中,此种模式下php遇到类似aaa.php.xxx这种不是php程序的文件,会触发500错误。

    2.罕见后缀

    kali@kali:~$ cat /etc/mime.types | grep php
    #application/x-httpd-php                      phtml pht php
    #application/x-httpd-php-source               phps
    #application/x-httpd-php3                     php3
    #application/x-httpd-php3-preprocessed        php3p
    #application/x-httpd-php4                     php4
    #application/x-httpd-php5                     php5
    

    不仅php,就连phtml、pht、php3、php4和php5都是Apache和php认可的php程序的文件后缀。

    利用这些“罕见”的后缀名,也可能绕过安全检查,干些“坏事”。

    3.妙用.htaccess

    .htaccess是Apache的又一特色。一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件)。

    要想使.htaccess文件生效,需要两个条件,一是在Apache的配置文件中写上:

    AllowOverride All
    

    二是Apache要加载mod_Rewrite模块。加载该模块,需要在Apache的配置文件中写上:

    LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
    

    若是在Ubuntu中,可能还需要执行命令:

    sudo a2enmod rewrite
    

    配置完后需要重启Apache。

    需要注意Apache可能有多个配置文件,后加载的配置文件会覆盖先加载的配置文件中的配置。所以在某个配置文件中将AllowOverride设置成All,若是其后加载的某个配置文件中AllowOverride的设置是None,则也是没有用的。一般来说,先加载httpd.conf,再加载conf.d/中的配置文件,最后加载sites-enabled/中的配置文件。

    这意味着,.htaccess并不总是有效的。而且不幸的是,在我的测试环境中.htaccess默认无效。好吧,为了测试,我只好将它改为有效。以下讨论均在.htaccess有效的前提下进行。

    .htaccess文件可以配置很多事情,如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。但我们这里只关心.htaccess文件的一个作用——MIME类型修改。如在.htaccess文件中写入:

    AddType application/x-httpd-php xxx
    

    就成功地使该.htaccess文件所在目录及其子目录中的后缀为.xxx的文件被Apache当做php文件。另一种写法是:

    <FilesMatch "shell.jpg">
    	SetHandler application/x-httpd-php
    </FilesMatch>
    

    该语句会让Apache把shell.jpg文件解析为php文件。

  • 相关阅读:
    Standalone集群搭建和Spark应用监控
    日志信息和浏览器信息获取及数据过滤
    Spark词频前十的统计练习
    Spark-local本地环境搭建
    冒泡排序java
    java反编译
    修改系统环境变量 cmd命令
    java单元测试(Junit)
    spring改版官网下载jar包, 源代码和文档
    打开 chm 帮助文件显示空白及解决方法
  • 原文地址:https://www.cnblogs.com/chalan630/p/13258501.html
Copyright © 2011-2022 走看看