2021湖湘杯final 单兵作战小总结

我感觉作为awdp来讲的话只要这个人够强1v3是没问题的.jpg,但是就我而言我是1 喂 3 so sad

总而言之还是先说说情况,就开局上来直接修的go的题,然后他妈的修不上,寄!,反复与主办方对线查日志,发现程序就启动不起来,后面说,然后比赛还出现了原题,nodejs的原题刚好电脑资料里面存了,所以也就顺利的成功拿下攻击,剩下就是茶歇区摸鱼了,糕点很好吃,下次继续。

go程序FIX

这次比赛的go程序还是非常好fix的,因为waf代码都给你写好了,只需要往里面加上一个flag再打包上去就可以完成了

图片[1]-2021湖湘杯final 单兵作战小总结-魔法少女雪殇

如图所示,但是问题就在于go的环境还是比较的恶心人,在比赛前为了减少电脑压力特地写了个windows编译linux go的批处理

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
echo now the CGO_ENABLED:
 go env CGO_ENABLED

echo now the GOOS:
 go env GOOS

echo now the GOARCH:
 go env GOARCH
go build main.go 

SET CGO_ENABLED=1
SET GOOS=windows
SET GOARCH=amd64


echo now the CGO_ENABLED:
 go env CGO_ENABLED

echo now the GOOS:
 go env GOOS

echo now the GOARCH:
 go env GOARCH

确实可以,但是仅限常规应用,这道题目如果这么编译的话,在linux上直接爆路径错误,寄!

图片[2]-2021湖湘杯final 单兵作战小总结-魔法少女雪殇

估摸着就这段话搞的鬼,应该是go对路径处理的一种特性?我不知道,希望师傅们可以帮我解答一下。

图片[3]-2021湖湘杯final 单兵作战小总结-魔法少女雪殇

也是因为这个点迟迟修不上,当然这还是第一个坑

第二个坑就是如何解决现有的程序了,首先go web程序启动过程中如果有端口被占用的话是不会启动的,所以在patch前就需要把前一个进程给干掉,看了有的大佬用的kill+grep和ps的操作,我看不懂,然后打开了自带的linux文档就开翻命令

图片[4]-2021湖湘杯final 单兵作战小总结-魔法少女雪殇

找到了一个,经测试确实只要pkill sever,就可以把所需要干掉的那个服务给关了。所以这也是另一点关键。

前面提到直接把本地生成的程序上传过去运行会报错,那么就得在远程进行程序的编译+运行。

这里也有个玄学问题就是编译路径的问题。如果按照他给的dockerfile扒go build的话会报错找不到GOROOT路径。。。

所以这里的编译我就直接这么写了,虽然会爆warning,但是不影响

update.sh

#!/bin/sh
pkill server
pkill web
cp -r ./ /code
cd /code

go build -o bin/web web/main.go 
go build -o bin/server server/main.go

./start.sh

start.sh(路径全改成绝对就不报错了)

su - web -c "/code/bin/web 2>&1  >/code/logs/web.log &"

/code/bin/server 2>&1  >/code/logs/server.log &

当然直接写成一个也行。。。主要是方便调试就写了两个,都一样。

总之,记住pkill,就行了,还有vote那个node的重启也可以用pkill直接一键杀。

题目solve

直接参考ha1湖湘杯2021 MultistageAgency 解题思路 – Ha1c9on

和guoke湖湘杯线下Writeup | (guokeya.github.io)

两位👴的wp得了,我就不写了,只能说用环境变量写入恶意so的操作,我这辈子都想不到

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情