频道栏目
首页 > 安全 > 网站安全 > 正文

一个很简单的Xpath注入测试页面

2010-09-10 10:43:57      个评论      
收藏   我要投稿

user_login.aspx:

<%@ Page Language="C#" AutoEventWireup="true"%>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        string UserName = Request.Form["username"];
        string PassWord = Request.Form["password"];
        if (Check_Login(UserName, PassWord)) Response.Write("欢迎你" + UserName + ",你通过了认证"); else Response.Write("你提交的账户不合法");
    }

    public bool Check_Login(string UserName, string PassWord)
    {
        try
        {
            XmlDocument xmlDoc = new XmlDocument();
            //进行xmlpath查询 这里用字符串拼接,触发漏洞
            string Xpath = "/root/user[username=" + UserName + "]";
            Response.Write("执行的xpath查询是:" + Xpath + "<br />");
            xmlDoc.Load(Server.MapPath("Users.xml"));
            //XmlNodeList xmlList = xmlDoc.SelectNodes("/root/user");
            XmlNodeList xmlList = xmlDoc.SelectNodes(Xpath);
            if (xmlList.Count == 0) return false;
            //绑定第一个查询到的节点
            DataSet ds = new DataSet();
            ds.ReadXml(new XmlNodeReader(xmlList[0]), XmlReadMode.Auto);
            string Pwd = ds.Tables[0].Rows[0]["password"].ToString();
            ds.Dispose();
            if (PassWord.Equals(Pwd)) return true;
        }
        catch (XmlException err) { }
        return false;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        用户登录<br />
        <br />
        用户:<input id="Text1" name="username" style="width: 232px" type="text" value="" /><br />
        密码:<input id="Text2" name="password" style="width: 232px" type="text" value="" /><br />
        <br />
        <input id="Submit1" type="submit" value="登录" />
        <input id="Reset1" style="width: 43px" type="reset" value="重填" /></div>
    </form>
</body>
</html>

users.xml:

<?xml version="1.0" encoding="utf-8" ?>
<root>
<user>
    <id>1</id>
    <username>admin</username>
    <password>123</password>
</user>
<user>
    <id>5</id>
    <username>ylbhz</username>
    <password>321</password>
</user>
</root>

相关TAG标签 页面
上一篇:CSS-String-Injection 考古
下一篇:youku squid信息泄露漏洞以及修复方案
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站