最近经常看到XXE出没,以为是最近出现的类型,在接下来的14年里,发现乌云上面有很多案例,真的我太lo了~
@时间: 2018/11/15
因为jarvisoj上有xxe练习题,感兴趣的大佬可以在https://www.Jarvis OJ.com/challenges上玩一下
在写作业之前,试着科普一下吧。 什么是xxe? xe是xml外部实体注入,其中包含xml说明
XML用于使电子文件具有结构性标记语言,用于标记数据、定义数据类型,是允许用户定义自己的标记语言的源语言。 XML文档结构包括XML声明、DTD文档类型定义、选项和文档元素
关于xml和xxe的知识在https://www.cn blogs.com/r 00t user/p/7255939.html中是众所周知的
我们的xxe注入的是xml的DTD (文档类型定义),xml格式如下
? XML版本=' 1.0 '? 文档类型任务[! entitysearchsystem '/etc/passwd ' ] task search; /task jarvisoj的例题,试着更好地说明一下吧:
进入的页面是这个
源代码包含以下代码
脚本函数xhr () { var xhr; try {xhr=new XMLHttpRequest (; }catch(e ) { var IEXHRVers=['Msxml3.XMLHTTP '、' Msxml2.XMLHTTP '、' Microsoft.XMLHTTP']; for(varI=0,len=IEXHRVers.length; i len; I ) try(xhr=newactivexobject ) iexhrvers[I]; }catch(e ) {continue; } } } return xhr; } functionsend ((evil _ input=document.getelementbyid (evil-input ).value; var xhr=XHR (; XHR.open('post ','/api/v1.0/try ',true ); xhr.onreadystatechange=function () if ) xhr.ready state==4x HR.status==201 ) data=JSON.parse ) xhr.resp at us tip _ area.value=data.task.search data.task.value; }; xhr.setrequestheader (' content-type ',' application/json ' ); xhr.send ((搜索(: ) ) evil_input )、(value ) : ) own ) ); (}/script看了xml的文字,推测可能有xxe (),没有也不会放在这里哦:) )
请抓住包试试。 正在提交json数据,但可以将其更改为xml
第一步,也是最重要的一步是将content-type更改为xml
之后,我们可以发布上面写的xml,得到flag
其中的! DOCTYPE是定义实体,search是引用实体,还可以获取/etc/passwd:)
结束: )