CSAW CTF Qualification Round 2018 部分web 复现
csaw2018也注册了个账号玩玩,但是到了当天晚上才记起来/(ㄒoㄒ)/~~。现在把几道web复现一下。
Ldap
原题链接:http://web.chal.csaw.io:8080/
刚进来就是一个搜索框。

一开始猜是sql注入,Fuzz过后发现"\"反斜杠和左右括号"(",")"都会导致搜索错误。


如上图,反斜杠是敏感输入可以理解,为什么左右括号会这样?看到这郁闷了很久。网上查了Ldap才知道,原来是Ldap注入。
Ldap注入
这里有一个很形象的比喻介绍了LDAP是什么 https://www.jianshu.com/p/7e4d99f6baaf 这里概括了一下LDAP注入 https://www.cnblogs.com/bendawang/p/5156562.html
从上面的资料我们可以看到,括号是Ldap的敏感输入,所以才会造成错误。
注入的话,肯定是将所有的信息提出来就可以看到flag了,一般LDAP查询的格式都为(&(parameter1=value1)(parameter2=value2)),前面一个&代表后面两个参数都得满足。
同样还可以再复杂一点(|((&(parameter1=value1)(parameter2=value2))(parameter3=value3))。
*是通配符,可以匹配所有。
所以多试几次括号的闭合,最后能得出
`*)(uid=*))(|(cn=*`
可以在最下面发现flag
SSO
题目引子
Don't you love undocumented APIs
Be the admin you were always meant to be
http://web.chal.csaw.io:9000
Update chal description at: 4:38 to include solve details
Aesthetic update for chal at Sun 7:25 AM
进入题目查看源代码。

我们可以看到是一个标准的oauth2认证。从源代码可以看到有一个/protected 页面,访问后显示 Missing header: Authorization 我们应该可以确认这的确是oauth2认证。不熟悉oauth2的可以去阮一峰Oauth2看看
走一遍oauth2认证流程
首先获取认证url

获取token

我们可以发现token的形式都为JWT(Json Web Token)(不了解的可以去查一下)那么把它在官网解析一下(https://jwt.io)

JWT格式为Header、PAYLOAD、VERIFY SIGNATURE。第一个Header 包含加密方式(alg)和类型(typ),第二个PAYLOAD包括用户信息和过期时间。第三个 VERIFY SIGNATURE 是前面两个以某种方式加密过的,服务器解密后能判断这个token是否被修改。
但是这道题很人性化,在PAYLOAD里已经给出了解密密钥,所以我们可以直接利用官网的这个工具改包。将user改为admin然后发包。

拿改好的token访问/protected页面就会返回flag了
未完待续。。。。