CTF Web安全

[Zer0pts2020]urlapp(CRLF+Redis)

Posted on 2020-07-01,1 min read

github上下源码。
就一个app.rb
看路由。就两个路由

第一个是Get请求/
如果请求参数中有q。并且q满足0-9a-f。16位长度就带入get函数
get函数是进入redis执行GET q
相当于实现了一个获取任意键的值
第二个是Post请求/
如果请求参数中有url。并且是URI格式。
随机生成16位字符串为key。然后调用set函数。进入redis执行
set key url
然后返回key。

大致意思就是利用POST一个URL。然后生成随机key。存储在redis。然后。get就是通过随机的key。获取值。这里没有过滤\r\n。导致我们可以执行Redis命令
在Redis.conf中。禁用了很多命令

这里看writeup了。
利用BITOP命令。将flag异或1。存入abababababababab(16位。不然GET不了)
然后利用setbit将第一个字符W。二进制的第2位改为0。第3位改为1。构造出?

然后q请求获取值

下一篇: 安恒6月赛Writeup→