上周末跟队友打了一场国赛,题目质量还是不错的,记录下wp
misc
签到
摄像头检测到三个人头就行了
saleae
百度logicdata,发现有个工具,打开就是一些波形,直接对着时钟位读二进制转成ascii码就能出flag了flag{12071397-19d1-48e6-be8c-784b89a95e07}
然后无敌头铁王第二天发现SPI
通道直接就会转字符了,第一天手撕是真的头铁……
usbasp
还是SPI
通道,将标准位调高就直接出flag了
web
justsoso
一开始伪协议拿到源码,然后就是反序列化利用了
1 |
<html> |
可以看到Handle
类有个__destruct
函数可以触发getFlag
函数,但是__wakeup
函数会将所有东西清空,这里改下属性个数就能绕过,参考SugerCRM漏洞,然后getFlag
函数的条件可以用指针绕过,以前安恒的月赛也考过,最后flag的匹配可以利用parse_url
漏洞,三个斜杠就能绕过了
exp
1 |
|
全宇宙最简单的sql
这道题是报错盲注+mysql load data infile漏洞,比赛时没有做出来还是挺可惜的
通过测试网站我们可以知道登陆密码错误的时候会回显登陆失败,如果语句有错的话就会回显数据库操作失败,但是这里有个坑点,可能是因为上了知道创宇的waf所以脚本盲注会出锅?debug一个下午最后发现用burp代理是能跑出来的,攻击语句是' and (select locate('a',(select database()),1)=1)*999*pow(999,102)%23
攻击出数据库是ctf
,因为or
被过滤了,所以不能直接爆出表名,想Innodb引擎注入发现权限不够,一度卡了很久,最后猜测表名是user
,因为显示的是用户信息,然后,撞对了……
获得了表名以后就是不知道列名的联合注入了,语句:' and (select locate('a',(select
2from (select 1,2 union select * from user)a limit 1,1),1)=1)*999*pow(999,102)%23
最后就能爆出来用户名是admin
,密码是F1AG@1s_at_/fll1llag_h3r3
,这里又来一个坑点,可能服务器不是很好,都不知道跑到哪去了,因此大小写错乱,然后就做不下去了…….算是长个教训吧,以后用ascii码去跑,坑死我了……
接下来登录进去就是mysql load data infile漏洞,改下github的脚本就能getflag了
love_math
这道题一进去就发现很像网鼎杯的一道题,但是fuzz了一下发现字母全部过滤了???然后,莫得了
留个坑等大佬们wp出来了学完补
还是太菜了,看见有个calc.php却没想到去无参访问一下,结果就拿不到源码卡死了,甚至还以为是ssti……
这里贴出源码进行分析
1 |
|
可以看到他会限制输入长度小于80,然后匹配黑名单,接着就是找函数,只有白名单的函数才可以继续执行
到了这里似乎无解,查看白名单发现有个base_convert
函数,进制转换,思考一下,到了>=36进制是可以将字母显示出来的,我们可以考虑一下通过进制转换去getshell
接下来就是找个在线网站转一下进制然后直接就行
1 |
#phpinfo |
获得了目录以后,就是最重要的读文件了,这里我们需要引入其他参数去打破字符长度的限制
最后payload
1 |
//这里利用了{}去替代[]进行数组索引 |
RefSpace
一进去可以看到一个文件上传的点?route=app/index
,利用伪协议将一堆文件读出来,index.php,app/flag.php,app/index.php,backup.zip,然后robots.txt还有一个文件上传的点Up10aD.php ,测试一下发现只能上传jpg和gif文件,尝试了一下截断,一直不成功,最后只能结合文件包含的点和phar协议去进行getshell
1 |
$p = new PharData(dirname(__FILE__).'/phartest.aaa', 0,'phartest',Phar::ZIP) ; |
将生成的文件改下后缀发上去就能成功getshell了,将所有文件一把梭全部下下来,看下openbase_dir
有个ctf目录,继续读看见有个sdk.php
和ixed.lin
下下来…就做不下了…菜鸡逆向巨差…只知道他是一个sha1加密,有个flag.txt的密文,但是直接在线解密是不可能的,sdk.php已经提示是商业加密了……
赛后问了大佬,说可以用反射去做,还是太菜了……
1 |
use interesting\FlagSDK; |
然后就能拿到getHash
出来的值,接下来利用不同的命名空间达到重新定义函数的目的(就是在函数同名的时候,系统会优先调用本命名空间里面的同名函数)
1 |
namespace interesting; |
反射这波利用还是很秀的,涨姿势了2333
crypto
puzzle
一道集合了脑洞高数和大物的题
1 |
Q0解第一个4元4次方程得到: |
warmup
这道题是AES CTR加密,这个加密方式有个缺陷,可以主动攻击,改明文,如果后续的内容不受影响,就能进行攻击
连接服务器,首先我们先什么都不输入,获得第一条密文c1,就是flag的密文可知密文是48个字节
接下来输入16个1,获得第二条密文c2
然后32个1,得到第三条密文c3
最后48个1,得到第四条密文c4
接下来就是c1分段对应异或得到明文
1 |
#null |
pwn
your_pwn
64位程序 ,保护全开
IDA分析可以发现程序存在一个任意地址读和任意地址写的漏洞,所以就可以泄漏出真实地址,然后onegadget一把梭搞定。
因为泄漏与写入都是每次一个字节的,所以需要泄漏6次拼出真实地址,进而循环6次写入onegadget,不过for循环有41次,完全足够。
gdb调试得到__libc_start_main+240
到v4[0]的偏移
循环6次得到__libc_start_main
的地址
算出偏移得到onegadget地址
同样的方法得到返回地址于是v4[0]的偏移
循环6次写到onegadget,exp如下:
1 |
#coding:utf-8 |
baby_pwn
32位程序 ,只开了NX,打开IDA
有一个栈溢出漏洞,没有后门函数,其它的也没有什么可用的,这么干净的栈溢出很容易就想到了runtime_resolve。exp如下
1 |
#-*-coding:utf-8-*- |
re
easygo
在jmp start_0
的下一条汇编下断,r停下在寄存器里就能看到flag了
FROM:Xi4or0uji
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论