First AWD at ciscn2021
祭第一次国赛/第一次AWD
华东北太卷啦太卷啦
线上初赛
360搁这给我高考呢是不,一卷二卷三卷发来发去收来收去的,非要让人肝到凌晨三点
Crypto
classic
谜语人给爷死
- ADFGX密码
- 表
phqgmeaynofdxkrcvszwbutil
- key
classic
- 密文反过来
rsa
Level1e=3
,Level2exgcd
,Level3coppersmith
1 | from Crypto.Util.number import * |
imageencrypt
首先因为a^b=~a^~b
,用两个cipher和一个simple求出plain的前256位,接着再用一组对应的明文和密文求出key的可能配对还原出还原出bins之后去算xlist,接着算r,找到差距最小的基本上就是r的取值了由于精度损失,我们如果得到准确的x值较为困难,所以选择爆破x0,key1 key2 x0 r都已知,对cipher2再加密一次即可得到flag
1 | from Crypto.Util.number import * |
homo
拿312次随机数,就能还原states
,接着预判接下来的200次win
了之后即可decrypt
,由于系数不能完全相同,给其加上个模数即可
1 | from Crypto.Util.number import long_to_bytes |
move
根据题目有 $ex-yn=y(p+q+1)-z$,且发现 $e$ 和 $N$ 比较小那么就可以造格子进行格基规约,这样就能求出 $x$ 和 $y=ex//n$ 那么余数
$$
\begin{aligned}
k&=y(p+q+1)-z\\
&=ex-ynk \\
&= y(p+q+1)-z \\
&= y(p+q+1) - zbound - ((p + 1)(q + 1)y - zbound)\mod x \\
&= y(p+q+1) + int(\frac{((p-q)y\cdot round(n^{0.25}))}{(3(p + q))}) - ((p + 1)(q + 1)y - zbound)\mod x \\
&=y((p+q+1) + \frac{(p-q)\cdot round(n^{0.25}))}{(3(p + q))}
\end{aligned}
$$
所以 $k$ 整除 $y$ ,这里我们设 $K=\frac{k}{y}=\frac{(p+q+1) + ((p-q)\cdot round(n^{0.25}))}{(3*(p + q))}$ 我们设 $s=p+q$ ,则 $p-q=\frac{3s(K-1-s)}{round(n^{0.25})}$ ,根据 $(p+q)^2-(p-q)^2=4n$ ,二分即可找到 $s$ ,接着算出 $d$ ,在ECC上进行标量乘法即可
1 | from Crypto.Util.number import * |
Misc
robot
追踪TCP流找到坐标,画图即可
1 | import matplotlib.pyplot as plt |
华东北半决赛
攻防科技大学主办的,半决赛就发衣服,80个队的awd体验还不错(?
冥场面
虽然自己被打傻了,不过自己也打了个爽,全程看流量打人/修站(雾
cafecms
构造了这么几种payload
/wap/Common/show?templateFile=../../../../../../../flag
/wap/Common/show?templateFile=/flag
/wap/Common/show?templateFile=file:////flag
去找了一下调用的函数位置,检查一下templateFile如果有flag直接改空就防住了
D盾还扫出来个eval后门,只不过不会用也不会修,后来被打的连妈都不认识了w
eyou
刚开始没看这题,连上之后发现MySQL库被人删了,再后来直接被get shell了,又是一个被打的连妈都不认识的站w
在之后重启了一波,结果admin.php
给人写了rce,flag直接被挂首页w
cryptopark
awd里居然看见了密码题?拖进IDA看了两眼发现有好几个密码题,而且只要小小伪造一下就能\bin\sh
了,然后光速写了几个密码exp接着打全场(嘻嘻),后来师傅们也从堆用pwn的方法get shell了,接着拿去批量跑
lol
又是个任意读,不过这次我手速快,光速写exp打了一波全场 (嘻嘻)
大概这么几种姿势
/statics/1.php?file=file:///flag
/statics/1.php?file=/flag
/statics/1.php?file=../../../../../../../flag
修好之后发现还有人打,抓了一下流量看到这个payload
/index.php?g=Admin&m=Public&a=display&templateFile=../../../../../../../../../../../../../../flag
web小白根本看不太懂PHP,更别说代码审计了wAw,于是就现场看着PHP手册和原先写好的PHP源码现场极限学习
先看index.php
有这么段读参数的代码
1 | foreach (array("g", "m") as $v) { |
那既然这段payload要过index.php,而所传的变量名又已知,为了短期防御,那么就可以在这个地方把所有的变量都读进来,然后处理掉就行了
1 | foreach (array("g", "m", "a", "templateFile") as $v) { |
修好之后接着拿这几个payload去打别人了(
/index.php?g=Admin&m=Public&a=display&templateFile=../../../../../../../../../../../../../../flag
/index.php?g=Admin&m=Public&a=display&templateFile=/flag
/index.php?g=Admin&m=Public&a=display&templateFile=file://///flag
Summary
打到后面后台脚本把内存跑到16G,加上OBS和一堆乱七八糟的玩意中间炸过一次内存w,到最后的时候被打成筛子就只能检查自己的批量脚本有没有正常工作了,7个while 1的脚本同时跑着10+的payload,还有五六个打奇奇怪怪的混淆流量的脚本 (雾
各位师傅们的混淆也是tmd千奇百怪,我以为我防出去了啊,结果师傅们不讲武德,给我种🐎,打开流量我定睛一看,在一堆fmyy i love you
、xxxx yyds
还有奇奇怪怪的歌词里面,写的竟然全是.shell.php
!(雾
既然我们有🐎,那别人肯定也有,然后搭了几趟顺风车,不过web小白啥也不会,别人稍微藏起来之后就尬住了w
结果rk20
唉,还是太菜了,第一年也只能止步于此了(
Final
u1s1,平时都凭本事打进了W&M,结果校赛被分到3队有、不开心
初赛高考没啥好说的,crypto打了2k+的分把2队按在地上锤(雾
怎么说呢,第一次打awd的萌新算是打了个爽,线下前一天晚上还在和h3zh1
师傅学习怎么打awd,在现场用ha1c9on
师傅教过的一点web加被迫极限学习边打边修,可能从此就转路web了(?
我也要在别人机子上种🐎!我也要get shell!(逃
感谢师傅们对我这个fw的栽培和帮助,qaq明年继续加油吧