比赛成绩
战队名称:UKFC
战队排名:第 77 名

Web
PyBlockly
用全角的符号(unicode 编码)绕过 blacklist_pattern 检测,首尾各加一个引号去闭合,my_audit_hook 处限制了 event_name 个数和 blacklist,用 __builtins__.len=lambda x:0 覆盖 len 为不大于 4 的数即可
ls 一下
|
|

直接 cat /flag 没权限,suid 提权
|
|

|
|

xiaohuanxiong
admin 路由下可以未授权访问和修改内容,直接写个一句话木马进去,根据源码可以找到这个是写到/config/payment.php 里面,可以访问


Snake
写一个脚本去拿到五十分,值得注意的是这里 xy 坐标颠倒,并且不带 cookie 的话最后一步会报 500 错误
snake.py
|
|
solve.py
|
|

爆出来路由/snake_win?username=,一眼注入,Sqli to SSTI

|
|

Proxy

Password Game
|
|
拿到源码
|
|
|
|

platform
爆破目录,发现 www.zip,解压之后拿到源代码。
对源代码进行分析之后,考虑利用点应该是 session 反序列化。
在 class.php 当中发现后门类

在本地调试,观察 session 序列化字符串的结构。

考虑,将 password 部分写入反序列化利用链,触发后门函数。
例如,在 password 当中输入。
“;password|s:74:”";password|O:15:“notouchitsclass”:1:{s:4:“data”;s:14:“echo whoami;”;}
这时,本地 session 将变成。
user|s:5:“admin”;session_key|s:35:“bnKNfuoXL233EOPFgJXs54nSzl4dkJNK754”;password|s:88:"";password|s:74:"";password|O:15:“notouchitsclass”:1:{s:4:“data”;s:14:“echo whoami;”;}";
要想写入的内容在反序列化时被触发,这要构造 username 当中的内容实现字符逃逸,将无关字符作为 username 当中的内容,而把后边的利用链逃逸出来。
![]()
无关内容,如上所示,然后计算无关内容的长度,借助函数当中过滤掉的关键词进行逃逸。
但是,在靶机当中会生成一个长度随机的 session_key 作为干扰,但是 session_key 的长度处于 1-50 之间,因此我们可以假定 session_key 的长度,而后进行爆破。
|
|


Reverse
bbox
14 张地图,先 ida dump 得到 map:
太多了,只贴第一张地图:
|
|
分析逻辑,通过 wsad 控制“2”的上下左右,“3”是箱子,“4”是目的地
题目只需要箱子的最短路格数,依次手推得到:
2,12,13,9,21,13,25,31,3
后四张图就是题目所说的四个字符即:qwb!
那么 flag:
flag{qwb!_fec2d316d20dbacbe0cdff8fb6ff07b9}
斯内克
新的附件很好看 稍微 patch 一下时间就可以手玩


魔改的 xtea
|
|
Pwn
expect_number
先看看保护,发现经典全开

放进 ida 卡看一下发现是 c++ ,并且有后门,查了一下发现是 c++ 的异常处理

看看功能函数,发现会执行 off_5010 指向的地址里的东西,在调试的过程中发现 off_5010 指向 0x5520 的位置


进入 continue 函数,传入的参数是 unk_5640,unk_5400,unk_5520。发现该函数能修改 0x5400 地址里的值,能进行 0x288。如果能持续输入 276 次就能覆盖到 0x5520 的位置,从而劫持执行流。但是只能输入 0,1,2,所以这个不好控制地址。但是这个函数实际能一次性覆盖两个字节,后一字节是能控制的。而且作为控制执行 /,*,+,- 的参数 filed_c 是个伪随机数,生成的顺序的固定的,因此我们能任意修改一个字节地址

在 0x5520 指向的地址中单修改一个字节去指向另一个函数从而劫持执行流,发现在 0x100 的范围内有好几个函数,通过多次尝试之后,找到了一个函数 0x2984

在这个函数中有一个栈溢出,输入长度超过 8 字节后就会执行接下来的处理异常的操作,正好能让我们去实现执行后门函数的操作。将返回地址改为后门函数上面的地址就能执行 system("/bin/sh")
第一次接触,正好搜到了 https://xz.aliyun.com/t/15461?time__1311=GqjxnDuAqYq05DK5YK0%3DYYxRDcAfaNT4D#toc-4

EXP:
|
|
Misc
ONIST

此三栋建筑较为明显,为地标建筑,进行百度识图查找

查询上海市内的所有百安居进行排查,最终找到地点经纬度:121.567488 , 31.210267



图中可以发现机场指挥塔,判断在机场附近,同时识图得到了一张照片

搜索附近相关地点可以得到

得到经纬度为<strong>103.964337 , 30.571911</strong>


根据图片可以定位到浙江省内

可以分辨出其为 IKEA,即宜家公司。搜索浙江的在高速公路旁的宜家

排查后得到地点 120.292715 , 30.346957


由特殊路杆和黄色出租车可以判断其在重庆市内

是一个大回环,且有多层交通,应当为立交大桥,,查询重庆市市公交路线与立交桥地点,同时分辨周围是否有此未完成的大楼

遍历排查后得到此地点为



一种很奇怪的灯笼,比较特殊,放到百度识图。得到

同时注意到有一高塔,应为寺庙所在底

问一下南京的朋友,确定为大报恩寺,根据视角推断为

得到坐标为<strong>118.783791 , 32.013237</strong>

搜索一下这个桥头堡,发现很多东西

看一下,可以马上确定这就是橘子洲头的桥,确定坐标为


一个很宽阔且地平线上几乎没有建筑物的大桥,首先可以判断为跨江大桥类型。

5 说明其为刚上大桥不远的地方,将长江和黄河的所有大桥都看一遍,得到 121.734641 , 31.412395

第九张图也是一座桥,但两岸建筑物较多,应为城市内的桥,截图进行搜索


https://wuhan.news.fang.com/open/30018405.html
在此文中发现其为天兴洲长江大桥,根据视角得到坐标 114.413348 , 30.659417


可以判断在浙江省内,且图中出现了五条铁路线,很密集,应该也是一个 hint

在杭州市内沿铁路线排查,得到

Givemesecret

发送以上内容,可以实现越狱,拿到 flag 之后,用 flag{}包起来直接提交。
Crypto
EasyRSA
参考:<u>https://f61d.github.io/crypto/RSA/huwangbei2019_Crypto1/</u>
根据文章中的介绍,先计算 a*b 和 a+b
已知 N 和 g,就可以计算 u 和 v:
h = (N-1)//(g)
u = h//(g)
v = h%(g)
找到一个大于 sqrt(C)的整数 D,并形成列表 b^0.b^D,b^2D,…b^{D^2}<strong>,b^u,b^{u-1},…b^{u-D}</strong> 对这些列表进行排序,并找到一个共同的值 b^rD ≡ b^uD mod N,并且 c 是 rD+s
|
|

将文章中的代码修改成 python3 之后,带入数据运行,大概 30 分钟之后,可以得到结果。