首页 > 其他分享 >2024 闽盾杯-黑盾赛道WP

2024 闽盾杯-黑盾赛道WP

时间:2024-10-08 09:11:21浏览次数:1  
标签:赛道 err 闽盾 2024 flag key print txt data

CRYPTO

签到题-学会SM

https://www.json.cn/encrypt/sm3在这里插入图片描述题目要求小写所以需要转换一下在这里插入图片描述或者脚本:import hashlib
message = "heidun2024"
hash_object = hashlib.new('sm3')hash_object.update(message.encode('utf-8'))hash_value = hash_object.hexdigest()
print(hash_value)

源码和数据都要保护

利用php在线解密工具解密php


得到php源代码

<?php function my_encode($str,$key) {  $re='';  $len=strlen($str);  for ($i=0;$i<$len;$i++) {    $c=substr($str,$i,1);    $k=substr($key,($i%strlen($key)),1);    $num=ord($c)+ord($k);    if($num>255) $num-=256;    $re.=chr($num);  }  return $re;}function my_decode($str,$key) {  return 'Something missed.';}$data=@$_GET['data'];$key=@$_GET['key'];if($key=='') $key='hdhd4321';if($data!='') {  $mi=my_encode($data,$key);  file_put_contents('data_encoded.txt',$mi);  echo 'Saved to data_encoded.txt';}?>

编写脚本后得到flag

<?php
 function my_encode($str,$key) {
  $re='';
  $len=strlen($str);
  for ($i=0;$i<$len;$i++) {
    $c=substr($str,$i,1);
    $k=substr($key,($i%strlen($key)),1);
    $num=ord($c)+ord($k);
    if($num>255) $num-=256;
    $re.=chr($num);
  }
  return $re;
}
function my_decode($str,$key) {
  return 'Something missed.';
}
$data=@$_GET['data'];
$key=@$_GET['key'];
if($key=='') $key='hdhd4321';
if($data!='') {
  $mi=my_encode($data,$key);
  file_put_contents('data_encoded.txt',$mi);
  echo 'Saved to data_encoded.txt';
}
?><?php
 function my_encode($str,$key) {
  $re='';
  $len=strlen($str);
  for ($i=0;$i<$len;$i++) {
    $c=substr($str,$i,1);
    $k=substr($key,($i%strlen($key)),1);
    $num=ord($c)+ord($k);
    if($num>255) $num-=256;
    $re.=chr($num);
  }
  return $re;
}
function my_decode($str,$key) {
  return 'Something missed.';
}
$data=@$_GET['data'];
$key=@$_GET['key'];
if($key=='') $key='hdhd4321';
if($data!='') {
  $mi=my_encode($data,$key);
  file_put_contents('data_encoded.txt',$mi);
  echo 'Saved to data_encoded.txt';
}
?>

我的进制我做主

题目给了数据

ergdgjboglfpgcbpbofmgafhfngpfoflfpfkgjgccndcfqfpgcgofofpdadadagr

题目提示是自定义进制,因此首先先查看字符串用到的符号,有如下17个符号。

大致为a到r的字母顺序,少了一个i。因此推测实际为18进制,a到r对应0-9\a-h,其中i未使用到。

最后经测试,为每个字母单独编码一个2位18进制,解得flag。

from Crypto.Util.number import *
with open("我的进制我做主.txt") as file:
    dat = file.readline()
print(dat.encode().hex())
print(dat)
print(len(dat))

co = 0
for i in [chr(i) for i in range(ord('a'), ord('z')+1)]:
    if i in dat:
        print(i, end='')
        co+=1
print()
print(co)

chls = 'abcdefghijklmnopqr'
myO  = '0123456789abcdefgh'
ct = dict(zip(chls,myO))
print(ct)
decDat = ''.join([str(ct[i]) for i in dat])

flag = ''
jinzhi = 18
for i in range(0, len(decDat),2):
    tmp = decDat[i: i+2]
    res = int(tmp, jinzhi)
    
    flag += chr(res)
    print(f'{tmp}, {res}, {chr(res)}')

print(decDat)
print(flag)


flag2 = int(decDat, jinzhi)
print(flag2)
print(long_to_bytes(flag2)) s


flag{heidun18jinzhi666}

源码和数据都要保护

题目描述:难懂的PHP,难懂的flag。

附件中的PHP文件经过加密,需要破解。可以用一些在线破解平台,如:http://www.zhaoyuanma.com/zym.html ,也可以自己搭建PHP环境,安装php-beast扩展模块,以debug模式把PHP源码还原出来。(模块用默认密钥即可)
源代码写了加密函数,没写解密函数:

要自己写出解密函数来对txt文件解密才能得到明文flag,参考解密代码:


MISC

一个Logo

考察的lsb隐写,直接zsteg梭哈了在这里插入图片描述用Stegsolve一样可以,b0通道在这里插入图片描述我变个样就不认识我题目是变样,我猜测还是lsb,用zsteg跑在这里插入图片描述发现是存在冗余数据看着这个直接能想到base64换表在这里插入图片描述
发现编码表不正确,可能是表不全的原因, 因为是xyz开头,所以补充上abcdefghijklmnopqrstuvw在这里插入图片描述

学会Office

看到是xls就知道是excel表格用wps打开看看,发现可以取消隐藏在这里插入图片描述看到了flag列,提示了宏加密,因为我的wps不能够进行宏操作,我就换了windows的office在视图中可以找到宏在这里插入图片描述但是看上去flag的字符顺序并不对利用筛选功能进行排序,筛选计算机成绩降序在这里插入图片描述提取flag字符image-20240622123941465

我不是二维码

在这里插入图片描述看着像二维码,然后还是0000000111111这种类型的,直接上Byxs20 b神的工具puzzlesolver,想购买工具的可以联系 企鹅97766819在这里插入图片描述在这里插入图片描述得到二维码在这里插入图片描述识别后得到密码,做了很久,猜测是aes解密文件名为密钥和偏移量,文件名做密钥也是老套路了在这里插入图片描述

我变个样就不认识我了

img查看图片尾部发现字符串xyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/W9i4WoeEJAy7Un/hV8u/WT870Tq2J6xjKEl=拼接成完整base64表解码得到flagxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/abcdefghijklmnopqrstuvw



出题人的上网流量

开始得到pcap文件,在中间段发现了SMTP协议,推测有内容,进行filter操作。


追踪SMTP



对邮件正文进行base64解码,得到正文信息,厨子保存成html输出。


下载附件,发现为加密的docx文档,密码为出题人QQ号。


通过页面提示吴某某比对,发现为交流群主,QQ号为217778

解密得到最终结果。

flag{baodaheidunchutiren}

gogogo

该题用go的github.com/tjfoc/gmsm/x509库加密flag并输出,公钥私钥均在源码中。


因此直接使用库中的解密函数进行解密。其中,ReadPrivateKeyFromPem函数需传入第二个参数pwd作为私钥密码,因为源码中给的私钥无加密,因此传入nil即可。


package main

import (
    "crypto/rand"
    _ "embed"

    "github.com/tjfoc/gmsm/x509"
)

type EncryptController struct {
}

func Encrypt(plainText []byte) []byte {

    publicKeyFromPem, err := x509.ReadPublicKeyFromPem(pub)
    if err != nil {
        panic(err)
    }
    cipherText, err := publicKeyFromPem.EncryptAsn1(plainText, rand.Reader)
    if err != nil {
        panic(err)
    }
    return cipherText
}

func Decrypt(plainText []byte) []byte {

    privateKeyFromPem, err := x509.ReadPrivateKeyFromPem(pri, nil)
    if err != nil {
        panic(err)
    }
    cipherText, err := privateKeyFromPem.DecryptAsn1(plainText)
    if err != nil {
        panic(err)
    }
    return cipherText
}

var pub = []byte(`
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE3xqu+AwSgmeQnsVflwUSDnjxPkjC
SiD+xllUCJ3UkfGmLII/LZ2FS3gJe4o6PGXZEWiIZz4eb4brd1xlXkrleQ==
-----END PUBLIC KEY-----
`)
var pri = []byte(`
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQglNntSZVhLqSWzuKw
Z2CwSfSCNI8lQm0sS0Kvh8dOxG+gCgYIKoEcz1UBgi2hRANCAATfGq74DBKCZ5Ce
xV+XBRIOePE+SMJKIP7GWVQIndSR8aYsgj8tnYVLeAl7ijo8ZdkRaIhnPh5vhut3
XGVeSuV5
-----END PRIVATE KEY-----
`)

func main() {
    cs := []byte{48, 125, 2, 33, 0, 238, 212, 154, 134, 255, 91, 109, 210, 231, 242, 184, 9, 103, 26, 30, 241, 93, 242, 68, 119, 148, 9, 21, 5, 241, 175, 203, 3, 152, 63, 85, 82, 2, 32, 2, 156, 154, 131, 146, 194, 242, 200, 19, 109, 209, 151, 90, 252, 165, 49, 247, 141, 208, 219, 117, 226, 91, 113, 225, 0, 33, 162, 19, 87, 49, 68, 4, 32, 213, 16, 18, 177, 119, 110, 74, 6, 147, 235, 85, 0, 61, 4, 1, 43, 107, 207, 249, 37, 195, 141, 141, 23, 244, 159, 235, 159, 169, 243, 160, 37, 4, 20, 179, 67, 236, 205, 121, 146, 216, 75, 168, 197, 214, 34, 63, 138, 237, 247, 166, 117, 246, 210}
    flag := Decrypt(cs)
    res := string(flag)
    println(res)
}

加上flag头,即可得到真实flag。

flag{this_is_a_plain_flag}


空白

题目描述:眼前一片白茫茫,脑袋也一片空白。

空白.jpg文件末尾有附加数据,是个rar压缩文件。可以用binwalk自动提取或用 winhex手动复制成新文件。


rar文件解压得到两个txt文件,一个只有空白字符,另一个有特殊字符:


看着有全角和半角符号,猜测为半角全角字符隐写,通过https://holloway.nz/steg/ 尝试解密,获得密码提示6hlowsn2a2nha,如图:


另一个空白字符文件,利用SNOW隐写工具(下载链接https://darkside.com.au/snow/),执行命令如下:
SNOW.EXE -C -p 6hlowsn2a2nha 看不见不一定没有.txt

得到flag:



WEB

你懂Fu22吗?

题目说懂Fu22吗,其实就是fuzz在这里插入图片描述根据提示可以发现是需要换请求方法改为post后在这里插入图片描述提示需要参数和值这里就直接使用arjun来爆破参数在这里插入图片描述能够发现参数为word,然后在bp中用字典爆破value在这里插入图片描述这里用的是arjun自带的一个large字典在这里插入图片描述爆破出value值为exec,得到新的线索在这里插入图片描述访问后发现是套娃,还是爆破,不过这次是get型的还是需要参数利用arjun再爆破一次在这里插入图片描述爆破出来key的值为key,本来还想爆破value的,试了一下ls发现成功执行了在这里插入图片描述看了是直接rce了,这里过滤了空格$IFS绕过一下就好了在这里插入图片描述这里在上层有一个假的flag,而上上层的flag.txt才是真的flag在这里插入图片描述

No characters

题目提示了是windows,所以肯定考察的是关于文件上传的windows特性在这里插入图片描述上传后缀处能够利用::$DATA来绕过检测除了校验后缀,内容中的数字与字母一样会被拦截,所以这里利用的无字母数字webshell在这里插入图片描述成功上传,执行一个phpinfo()看看在这里插入图片描述上去找了半天没找到flag,用findstr来匹配一下在这里插入图片描述发现flag在windows目录下,用type命令来读取在这里插入图片描述

PDF export


输入内容,导出PDF。
测试发现,过滤了file://协议,同时一些HTML标签也被拦截了。但可以用<svg和<script标签,还有<meta标签。所以,可以用js脚本读flag文件,使它输出到PDF文件中。
思路一:
提交<meta http-equiv="refresh" content="0;url=javascript:document.write(xxx)" />实现执行脚本或跳转URL。
思路二:
插入<script代码段读取flag.txt(也有人用脚本跳转flag.txt即可)

参考payload 1:


参考payload 2:

<meta http-equiv="refresh" content="0;url=javascript:eval(atob('dmFyIGh0dHA9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7aHR0cC5vcGVuKCJHRVQiLCJmaWxlOi8vLy9yb290Ly5iYXNoX2hpc3RvcnkiKTtodHRwLm9ubG9hZD1mdW5jdGlvbihlKXt2YXIgY29kZT10aGlzLnJlc3BvbnNlVGV4dDtkb2N1bWVudC53cml0ZShjb2RlKX07aHR0cC5zZW5kKCk7 '))" />

(这个其实是用XMLHttpRequest()读取file:////root/.bash_history文件,非预期解法)

参考payload 3:

<script>document.location="flag.txt"</script>



RE

你破解or我破解

img

40281D下断点nop跳转

img

确定之后会显示猜解flag

img

img

img

img

找到文本赋值地址0x402ACC下断点修改eax为999999

img

img

爆破得到520530

flag{heidun_crk_520530}


pwn

licensePWN

img

img

发现sub_4012F0存在溢出点

img

查看堆栈写入0x18+4字节可以修改ret

img

发现读取flag.txt函数

修改ret为0x401340得到flag

img

题目附件下载地址:链接: https://pan.baidu.com/s/1bV-nYcL_ICohin0SXTFnSQ 提取码: 6u75 

转载原文参考链接地址:https://blog.csdn.net/xaxt123/article/details/139899667https://blog.csdn.net/swordcloud_xm/article/details/140616151 https://blog.csdn.net/CLAY0011/article/details/140557348  https://mp.weixin.qq.com/s/CB62vYgf8rKbvcCCLiKjLAhttps://mp.weixin.qq.com/s/CB62vYgf8rKbvcCCLiKjLA  https://mp.weixin.qq.com/s/Pnr585YrQqnhhhiiCJHttA

标签:赛道,err,闽盾,2024,flag,key,print,txt,data
From: https://www.cnblogs.com/backlion/p/18450997

相关文章

  • 2024 第七届“巅峰极客”网络安全技能挑战赛初赛 wp
    WEBEncirclingGame题目描述:Asimplegame,enjoyitandgettheflagwhenyoucompleteit.开题,前端小游戏,红点出不去就行直接玩通关了看看如何不玩也能拿到flag,flag存储在后端php文件内,前端找不到。看一下游戏的请求包,里面记录了红点的最后位置和防火墙(黑点)的位置。那么我们伪......
  • ChatGPT国内中文版镜像网站整理合集(2024/10/06)
    一、GPT中文镜像站①https://tz.zhufushipinzhizuo.com/17.html#:~:text=2024%E5%B9%B410%E6%9C%88%E6%9C%80%E6%96%B0 支持GPT4、4o以及o11.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类......
  • 2024.10.7
    您提供的代码是用于管理token的一组函数,适用于使用uni-app开发的项目。以下是对每个函数的解释:代码分析constTokenKey='App-Token'//获取TokenexportfunctiongetToken(){returnuni.getStorageSync(TokenKey)//从本地存储中获取token}//设置Tokenexp......
  • 20222420 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1学习内容总结1.1.1初步了解缓冲区溢出漏洞首先学习了安全漏洞的相关概念,然后聚焦在其中的缓冲区溢出漏洞上。学习了缓冲区溢出漏洞相关的定义和发生的原因,并了解了缓冲区溢出发展历史上的经典攻击,如红色代码蠕虫、冲击波病毒、震荡波病毒、心脏出血、乌克兰断网......
  • 2024.9
    1.ARC130EIncreasingMinimum好莫名奇妙的题,不知道省选前为啥没做出来。直接变成分段问题:第\(i\)段的表示说这些元素在遍历到(没有做加法前)取值都为\(i\)。一个合法的分段方式需要满足:\(x\)在一个段里不重复出现。若\(x\)在第\(i\)段出现,则必须在\(j\gti\)段......
  • 2024 10.5&10.6 模拟赛总结
    202410.5&10.6模拟赛总结一句话总结:打的稀烂。10.6\(T1\)没什么好说的。\(T2\)是我不喜欢的类型。首先看到前\(K\)大马上就想到了二分和堆,但是想了半天也不知道堆怎么由一种状态推广到多种状态,并且要不重不漏、效率高,二分也没想出来怎么\(check\)。赛后听了评讲才发现堆......
  • 2024.10.05 刷题记录
    2024.10.05刷题记录P7597「EZEC-8」猜树加强版不难发现\(u\)的儿子的条件是在\(u\)的子树内且深度比\(u\)恰好大\(1\)。每次询问子树内的所有节点深度或许可以解决此题,但询问次数达到了\(n^2\)。在\(u\)的子树内,如果知道所属其他儿子的子树的节点,知道属于\(u\)......
  • 多校A层冲刺NOIP2024模拟赛03
    A.五彩斑斓没办法,不会统计四个点相同的,赛时没想到,写了一个神秘算法骗了80考虑倒着计算,总子矩阵有\(\frac{n(n+1)*m(m+1)}{4}\)个,减去四个角相同的矩阵数量就是答案,枚举矩阵的上下边界两条线再枚举每一列,会有两个交点,统计每种颜色的上下交点颜色一样的个数,就可以计算了点击......
  • 20241007
    sequence我们会发现,我们每次删的一定是长度最短的那个,所以我们可以最开始按照长的排一下序,然后用线段树维护每一个区间中还有几个数,每次加上答案后在两个端点打上标记即可#include<bits/stdc++.h>#define_1(__int128)1usingnamespacestd;usingll=longlong;vo......
  • 2024.10.7 鲜花
    【UNR#3】百鸽笼花の塔君が持ってきた漫画くれた知らない名前のお花今日はまだ来ないかな?初めての感情知ってしまった窓に飾った絵画をなぞってひとりで宇宙を旅してそれだけでいいはずだったのに君の手を握ってしまったら孤独を知らないこの街にはもう二度と帰ってく......