BUU2暑期

[BJDCTF2020]EasySearch

在这里插入图片描述

  这道题,就很郁闷,找了半天的源代码,始终找不到,各种可能出现的后缀和名字都用脚本扫描了没有线索。然后想了以下又继续用disreasch扫描,我还给过过滤掉不是200的返回码。尝试了git和svn泄露,放弃了,看了看WP,结果发现出现的目录居然在429返回码为index.php.swp里。吐血,这都可以,这真没办法。

<?php
	ob_start();
	function get_hash(){
		$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
		$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times,随机选取五个字符
		$content = uniqid().$random;
		return sha1($content); 散列
	}
    header("Content-Type: text/html;charset=utf-8");
	***
    if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {//如果passwd中进行md5加密的前六位等于admin的值,继续往下执行
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");写的方式打开
            $text = '
            ***
            ***
            <h1>Hello,'.$_POST['username'].'</h1>
            ***
			***';
            fwrite($shtml,$text);写入内容
            fclose($shtml);关闭文件
            ***
			echo "[!] Header  error ...";
        } else {
            echo "<script>alert('[!] Failed')</script>";
            
    }else
    {
	***
    }
	***
?>

通过python脚本进行碰撞找到这个字符,进行下一步的传参。
在这里插入图片描述

按照题目意思,修改报文传入参数发现有一个URL。
在这里插入图片描述

进入这个给出提示的网页
在这里插入图片描述

把用户名修改发现这里也随着改变,这里就是SSI的执行漏洞,我们如何利用这个漏洞呢?我查了一下shtml,这是一种可以通过语句快速度为网页修改内容的一种服务,即使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。)Web 服务器在处理网页的同时处理 SSI 指令。当 Web 服务器遇到 SSI 指令时,直接将包含文件的内容插入 HTML 网页。如果“包含文件”中包含 SSI 指令,则同时插入此文件。除了用于包含文件的基本指令之外,还可以使用 SSI 指令插入文件的相关信息

它的基本语句格式如下:

<!-- 指令名称="指令参数">

例如产生以下的情景,我感觉有这种远程命令执行就非常的危险
在这里插入图片描述

比如我们即将用到的:<!–#exec cmd=“ls”>
在这里插入图片描述

构造的值为:username=<!–#exec cmd=“ls”>&password=2305004
在这里插入图片描述


返回上一个目录,传入的参数为:username=<!–#exec cmd=“ls …/”>&password=2305004,查看上一级的目录内容。
在这里插入图片描述

传入:username=<!–#exec cmd=“cat …/flag_990c66bf85a09c664f0b6741840499b2”>&password=2305004,再访问一下网页拿到flag。
在这里插入图片描述
  总结: 学习到新的知识感觉不错,就做了一些WEB题,感觉知识点挺多,不知道什么时候自己能独立解决一道新的知识点题目。

CISCN2019 华东南赛区Web11

打开题目所给网址
在这里插入图片描述
模板技术,将php和html分开的技术。常用的模板引擎,smarty、template、fxl template、dwoo,其中,smarty是功能最强大,最常用的。Smarty是一个php的模板引擎技术,提供让程序逻辑与页面显示代码分开的功能。特点,速度快,编译型,缓存技术,插件技术,强大的表现逻辑。

看了一会发现没有太多信息直接抓包在这里插入图片描述

看到了这个响应报文,发现这个IP居然是我真机的IP,根据题目提醒那估计是通过XFF实现,添加XFF头并且进行修改,验证了我的想法。
在这里插入图片描述

既然如此这个IP受我们的XFF头报文控制,我尝试着修改一下这里面的内容,存在SSTI漏洞,可以通过基于模板的注入,实现命令执行。
在这里插入图片描述

打开当前目录
在这里插入图片描述

发现有flag文件,直接cat读取
在这里插入图片描述

Smarty模板的常用注入语句
{if phpinfo()}{/if}  查看配置
{if system('ls')}{/if} 当前目录有哪些文件
{ readfile('/flag') }	读取lfag文件
{if show_source('/flag')}{/if}	读取lfag文件
{if system('cat ../../../flag')}{/if}  跨目录读取flag文件

总结: 学习到了基于Smarty模板的注入,对于此学习了一篇扩展相关知识点的博客,受益匪浅。博客地址: PHP的模板注入(Smarty模板).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值