我感觉作为awdp来讲的话只要这个人够强1v3是没问题的.jpg,但是就我而言我是1 喂 3 so sad
总而言之还是先说说情况,就开局上来直接修的go的题,然后他妈的修不上,寄!,反复与主办方对线查日志,发现程序就启动不起来,后面说,然后比赛还出现了原题,nodejs的原题刚好电脑资料里面存了,所以也就顺利的成功拿下攻击,剩下就是茶歇区摸鱼了,糕点很好吃,下次继续。
go程序FIX
这次比赛的go程序还是非常好fix的,因为waf代码都给你写好了,只需要往里面加上一个flag再打包上去就可以完成了
如图所示,但是问题就在于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上直接爆路径错误,寄!
估摸着就这段话搞的鬼,应该是go对路径处理的一种特性?我不知道,希望师傅们可以帮我解答一下。
也是因为这个点迟迟修不上,当然这还是第一个坑
第二个坑就是如何解决现有的程序了,首先go web程序启动过程中如果有端口被占用的话是不会启动的,所以在patch前就需要把前一个进程给干掉,看了有的大佬用的kill+grep和ps的操作,我看不懂,然后打开了自带的linux文档就开翻命令
找到了一个,经测试确实只要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的操作,我这辈子都想不到
暂无评论内容