2022 unctf wp
web
我太喜欢 bilibili 大学啦–中北大学
打开就一个 phpinfo
直接搜 flag 直出
虽然我是中北大学的,但这不是我们实验室出的题
略感离谱
签到-吉林警察学院
打开有行注释
以为拿来当用户名密码登录就完了来
结果只有个登录成功
假签到题
尝试使用其他用户名(规律:用户名=密码)
发现学号改一下会出现字符
再试试还有
开始爆破
burp 先设置最后一位为变量从 1 爆到 9
然后再设置两位为变量从 10 开始往后爆
最后手打的 flag
懒得写脚本了(为了个签到题写脚本不太划算)
easy_upload-云南警官学院
传个一句话 mua 写的图片 🐎
进去发现不行
试了半天
把 ContentType 改成 png
传进去了
然后 🐜🗡 连一下
找 flag
在/home/ctf/flag
302 与深大-深圳大学
进去提示 302 重定向
burp 抓包
然后让 get 和 post 传参进去
最后改cookie: admin=true
flag get√
我太喜欢 bilibili 大学啦修复版-中北大学
打开又是 phpinfo
看题目描述找 hint
于是搜索 hint
发现指向 admin_unctf.php
看源码发现注释
再抓包,发现 hint2
get 用户名密码 unctf2022
审源码
注入点为 cookie 的 rcecmd=127.0.0.1|cat /flag
得到个网址
指向 B 站用户界面,flag 出现在个签里
babyphp-中国人民公安大学
先是弱类型 0e1 直接过
的二个弱类型比较 sha1 值
拿出收集的 sha1 值为 0exxxx 的字符组个 payload post 上去:a=0e1&key1=aaroZmOk&key2=aaK1STfY
当然用数组绕过也可以a=0e1&key1[1]=1&key2[1]=2
发现回显有手就行
说明到最后一步了找了半天姿势
print env 出了?code=print_r(exec("env"));
ezgame-浙江师范大学
进入游戏发现 999 滴血比 10 滴血
于是直接定位血量,搜索 10 和 999
发现 10 有一对 110 干扰,不好定位
于是从 999 下手
把 mainjs 放到本地
把代码缩起来方便看
发现 999(5149 行)在 120 里面定义
往前找 new 的 r 发现定位到 146(5104)
去看 146
发现个 life 和 maxlife
选择 maxlife 下手
先下个断点
运行后调用来生成各个属性,一开始给的是 10 即自己的血量
再继续运行直到 t=999
再修改右侧作用域里的 t 为 0
继续运行 flag 弹出
给你一刀-西南科技大学
放个 tp5.0 的页面在主页
指向性太明显了
直接搜 tp5.0 漏洞
当然以 rce 为主
只看了前几个网址
共有两种 payload
试了之后有一种成功?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][0]=env
听说 php 有一个 xxe-西南科技大学
拿出 xxe 最简单的 payload(做 buuctf 某 xxe 题时 payload 留的)
用 raw 格式发包
1 |
|
快乐三消-河南理工大学
做 ctfshow 的黑盒题做多了这种题就好说了
先扫目录扫到 admin 和.git
githack 直接 down 下来
发现没多少东西
转去看 admin
也没注释啥的
开始猜密码
没猜到
放了一段时间回来看想到 admin 目录下还可能有备份泄露
之前光跑的主目录下的
跑 admin 下发现个 login.php.bak
有注释 admin/unctf
进入后台
本来又想 upload 的时候
直觉告诉我应该不是
转去看源码
发现 fi.php?filename=index.php
到这里后发现刚才扫目录的时候也扫到 fi 了
但是当时不知到咋用
fi 应该是 file 吧
学会了,下会遇见就接?filename=
定位到那个按钮发现是个网站套网站,应该能读 flag/admin/fi.php?filename=/flag
读到
题本身不难
但是误导性太强了
出题师傅 tql
ezunseri-西华大学
destruct->get->toString->invoke->绕过 wakeup
1 |
|
得到O:5:"Login":3:{s:4:"name";N;s:4:"code";s:9:"3.1415926";s:3:"key";O:4:"Exec":1:{s:7:"content";O:4:"Test":2:{s:4:"test";O:4:"Exec":1:{s:7:"content";s:19:"system('cat /fl*');";}s:3:"key";N;}}}
将 Exec 的成员数改为 2(两个任意一个即可)
绕过 wakeupO:5:"Login":3:{s:4:"name";N;s:4:"code";s:9:"3.1415926";s:3:"key";O:4:"Exec":1:{s:7:"content";O:4:"Test":2:{s:4:"test";O:4:"Exec":2:{s:7:"content";s:19:"system('cat /fl*');";}s:3:"key";N;}}}
poppop-中国人民公安大学
1 |
|
babynode-云南大学
看题目描述
原型链污染
直接套
ps:感觉见过类似的题好像是 ctfshow?
json 格式传
1 | {"__proto__":{"id":"unctf"}} |
easy ssti-金陵科技学院
jinjia2
ssti 常用 payload 随便上一个
过滤 class
各种操作掩护一下 class
都不行
class 查的很严啊
别骂了别骂了
换方法:{{x.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()")}}
成功输出
改下 payload 读 flag.txtNM
给你点祝福了你还骗我
nnd
想到这个比赛藏 flag 基本都在 env 里有无代打出题人服务
读 env
成功
easy_rce-西南科技大学
提示 rce 的布尔盲注
发现><
被过滤 不乐
写脚本直接爆
1 | import requests |
EZ-2048
按下 f12
发现程序监听等候在 game.js
然后想到输入邀请码错误后返回 error
在 game.js 搜索 error
然后一直往上查到 checkInvited()
仔细阅读后发现
加密方式在这里
分奇偶数进行两种异或
由于环境中 f12 自动卡在 debuger
所以只能 down 到本地运行
本地起了个环境
删掉 game.js 的第一行
使得可以本地调试
由于需要得到这几组数据
需要转成正常 10 进制
尝试打个断点
看下数据
可以在 debug 中
点击 buf 后面的跳转到内存检查器
16 转 10 后得到正常数据
写脚本逆回去
由于偶数列与 invite 的 i+1 相关即 invite 的奇数项
所以需要先将 invite 的奇数项全部生成
先把奇数项逆回去
1 | view = [ |
然后将本地的 game.js 中 addRandomTile()
生成的随机方块改为固定的
即将 223 行改为const value = 1024;
通关条件检测的是 1024 碰撞生成 2018 的过程
此处若改为 2048
则无该过程
所以最快只能改为 1024
我感觉该题貌似也可以通过逆向 wasm 来直接获取 flag
不过那估计就不是 web 题了 乐
本来这题就是个密码学题 不乐
随便注-云南警官学院
过滤了 or and select use(是 use 不是 user?怪哦)双写可绕过
尝试了几下没啥手感
转去偷懒用 sqlmap
先是读库,表,行都正常
记得有个 haha 表 笑话我是吧
然后还有个 ctftranning -> FLAG_TABLE -> FLAG_COLUMN 读的时候没回显貌似是空的
但是读 ctftranning 里的 news 里面说就在这个库里,但不在这
人傻了
在那个库里疯狂找
甚至怀疑 FLAG_COLUMN 里的读不到是有过滤导致的
还在那想咋绕过啥的
最后死活出不来
于是去尝试 sql 注入的文件操作
sqlmap --os-shell
没成功?
但是--file-read "/flag"
成功带回
Sqlsql-中国人民公安大学
审源码发现
多处都有 addslashes_deep 过滤
有想到时 addslash 旧版本有绕过
跟进之后发现该函数过滤挺严格的
于是放弃该方法
转向逻辑性漏洞
最后发现 index.php 里
qxxx 都没有经过 addslashes_deep 过滤直接 insert 进去了
尝试从这里注进去
由于本体的重点应该是使用 admin 用户去查询
所以考虑能 insert 一个 admin 用户的方法
不需要查数据所以也就不需要回显');insert into users values (NULL,'admin','2105044235');#
在 index.php 的做题界面随便选
burp 截包将上面 payload 加在 post 的答案后面重发
然后登出
用 admin 登录
查询成绩
这里查询任何一位存在的用户都可以 get flag
PWN
welcomeUNCTF2022-云南警官学院
石头剪刀布-西华大学
伪随机数
伪代码中 seed=0xA
然后 pwn
1 | from pwn import * |
re
whereisyourkey-广东海洋大学
先看 main
建了个数组
经过 ooooo 处理
即为 flag
1 |
|
ezzzzre-广东海洋大学
直接根据他的处理 flag = 2 * aHelloctf[i] - 69;
1 |
|
crypto
dddd-西南科技大学
就 0 和 1 转成.-
/转成空格
莫斯解
赛博厨子构造一手一把梭
md5-1-西南科技大学及 misc 小心海最后一步脚本
1 | from hashlib import md5 |
md5-2-西南科技大学
1 | from hashlib import md5 |
caesar-西南科技大学
凯撒换表 base
1 | ## B6vAy{dhd_AOiZ_KiMyLYLUa_JlL/HY} |
Single table-西南科技大学
paymfairx 密码修改
对称加密的流密码
根据 key 和 table 对应关系
列出新 table 如下图左侧
根据交叉对应关系得到右侧第三行
(第四行是我转小写尝试,还忘了个 T)
发现前面完美对应
后面却出现错误
看 koqw 像 know
know 啥哪
paymfairx 密码吗
略作改动:
UNCTF{GOD_YOU_KNOW_PLAYFAIR}
也不知道是故意需要修改的还是
我有那个细节错了
反正能做出来不管了
Multi table-西南科技大学
略修改加密算法
使其输出table,base_table.index(flag[i])
来得到其他无关随机数的固定数据
可得出 UNCTF 加密得到的 SDCG
分别在table[?、?、?、?][9、14、5、16]
由此可根据前四位密文逆推出key = [9, 15, 23, 16]
这样解密所需的全部数据得到
编写解密脚本
加密:
1 | flowchart LR |
1 | flowchart LR |
1 | from string import ascii_uppercase |
以后找时间学学密码吧
之前一直想学一直没找到时间
靠着从 misc 那学的古典密码啥的,写了前几题的脚本
还有积累的脚本工具走到这
rsa 好多解应该是基础的 rsa,想拿工具试试来,苦于不咋会用于是 rsa 作罢
比完赛一定找大佬学学
MISC
magic_word-西南科技大学
提示都送到嘴边了
直接零宽一把梭
syslog-浙江师范大学
打开是个系统日志文件
寻找敏感信息例如
发现能搜索到 password
解 base 得到压缩包密码
秒出
In_the_Morse_Garden-陆军工程大学
pdf 发现隐藏字符
赛博厨子构造一手
芝麻开门-广东海洋大学
txt 下面有段 base
a2V5MQ==
拿他当 lsb 密码,一把梭
找得到我吗-闽南师范大学
docx,隐藏字符,零宽都试过了
以为触及知识盲区了
放了发现已经很多解了
然后鼓起勇气看了下 xml
发现还真在里面
misc 刷的文档题不多,还没大见过放在 xml 里的,我太菜了,还好知道这个知识点
但那道社什么社这么多解是真没想到,没对上脑电波?
zhiyin
小~黑子!
hex 看篮球,一眼倒了
逆过来
Go_p1ay(那个 1 和 l 我当时都没发现,还有下划线也没划清楚,傻乎乎试了半天)
下半段 zhiyinhex 里发现.-
莫斯出
巨鱼-河南理工大学
上来 binwalk 下
出来个压缩包
对 fish 一通操作没找到密码
卡了半天去看别的题了
回来发现 png 有大问题
修改长宽高发现无所谓我会出手
解压
文档有密码
去看图片
我当时一眼苯环,服了,高中化学差点还给老师了
本来以为氯化苯
输入 C6Cl6、汉语等都不对
静下心来一看,这 nm 不是苯环
再试 C6H6Cl6 还不对
脑洞一开 666
flag get√
清和 fan-江西警察学院
先是注释提示社工
很容易找到
解压缩
lsb 隐写
得到第二层密码
发现段 wav 文件
听了下,这频率感觉像 sstv
vmware 的 Kali 前几个月转 wsl 了
kali 临时现装 sstv 出了点 bug
网上找了半天发现个手机软件
大晚上的 舍友都在打游戏,吵得很
于是去阳台识别
北方地区大晚上冷得很
识别了好几次
出来个微糊的
flag get√
清和是吧,
举办了不是
剥茧抽丝-内蒙古警察职业学院
nm 看到这注释,有多少人想到的是掩码
hashcat 跑了好几分钟
发现密码就是这小丑竟是我自己
零宽换了几个方式,终于出了(文件零宽)
结果,这不是下一层密码
看了眼 hint
crc 不一样
没对上脑电波
卡了几天?
想到,外面的比里面的大,能删减啊
把零宽的部分删了
发现正好
明文攻击
然后再用上面一层零宽解出来的解密码
flag get
颓废~(这个题是拖得最长的,不乐)
我小心海也绝非鳝类-中国计量大学现代科技学院
小心海说的话解 base92
一开始 ocr 识别的 c 成大写了
解出来有不可打印字符
检查了一遍改过来了
然后发现能 lsb EASYLSB
尝试把小心海的话当密码再解 lsb
发现串 16,开始误入歧途转了文件
想到小心海给我说的话
尝试 md5 转
切片 32 位
再改下 md5-1 的脚本==细看的话去 cypto 区 md5-1 看吧
直出