[GoogleCTF2019 Quals]Bnv
最后更新于
最后更新于
基于报错的Blind XXE
利用本地DTD打XXE
抓包发现请求内容是json,有json就可能会有XXE
请求头Content-type改成application/xml,用XML试一下
看到需要DTD,那就再加上内部DTD,注意这里要先声明一下to
和note
标签,要不会报错
之前传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
有json可能会有XXE
利用本地DTD文件打XXE