考点:xxe绕过
题取自封神台第八届ctf,有兴趣的师傅可以去复现一下
本题提示了/api/login进入这个接口
看到上面有个xml,试试xml,
既然有xml,那就试试xxe,
经过测试得知过滤了system,file,//,那就找编码绕过,试了下都不行,看了wp才知道要用html实体化,涨知识了
要利用参数实体:
定义方式:参数实体用于 DTD 内部,通过 声明来定义。例如:<!ENTITY %
XML 格式
<!DOCTYPE root [
<!ENTITY % ss "<!ENTITY xxe SYSTEM 'xxx'>">
%xxe_code;
]>
<root>&xxe;</root>
调用方式:在 DTD 内部,通过 的形式调用参数实体。参数实体的值会被插入到调用位置。%实体名;
在里面整一个实体调用file函数然后查找flag
,在里面整一个实体调用file函数然后查找flag,
<!ENTITY % sp "<!ENTITY hl SYSTEM "file:///flag">;">
%sp;]>
(格式要完全正确,不然会报错)
然后把括号里面的进行html实体化,HTML字符实体转换,网页字符实体编码
最终得到flag