github编辑

[GoogleCTF2019 Quals]Bnv

[GoogleCTF2019 Quals]Bnv

考点

  • 基于报错的Blind XXE

  • 利用本地DTD打XXE

wp

抓包发现请求内容是json,有json就可能会有XXE

请求头Content-type改成application/xml,用XML试一下

看到需要DTD,那就再加上内部DTD,注意这里要先声明一下tonote标签,要不会报错

之前传json的时候,传的数据是message加数字,那这里也用message标签试试,看到请求成功了

接着尝试加载外部实体,可以先试试能不能加载外部链接,结果没有反应,换成https://beeceptor.com/的地址就会提示failed to load external entity "https://beeceptor.com/", line 6, column 6,难不成会自动忽略http的外部链接吗

然后试着加载内部文件,提示标记错误,那就是被加载了,但是不符合DTD格式

到这里就知道了大概,要找到Linux内部可以利用的DTD文件,且本题读取了一个错误的实体,会返回完整的实体名。那就可以先读取flag,赋值给a,再去加载一个错误的DTD,例如/nonexistent/a就可以利用报错返回a的值,也就是flag的值

最后payload

小结

  1. 有json可能会有XXE

  2. 利用本地DTD文件打XXE

最后更新于