【29】WEB安全学习----XML注入

一、XML基础

简介:

XML:可扩展标记语言。XML被设计用来是传输和存储数据,XML是一种“元标记”语言,开发者可以根据自己的需要创建标记的名称。

XML结构

XML是一种树结构,从“根部”开始,然后扩展到“枝叶”,XML文档必须有根元素。

   //XML声明(可选部分),定义XML的版本和编码
      //描述文档的根元素
Tove   //4个描述根的子元素
Jani    //4个描述根的子元素
Reminder    //4个描述根的子元素
Don't forget me this weekend!    //4个描述根的子元素
    //定义根元素的结尾

XML语法规则

  • XML 文档必须有一个根元素
  • XML元素都必须有一个关闭标签
  • XML 标签对大小写敏感
  • XML 元素必须被正确的嵌套
  • XML 属性值必须加引号

PHP解析XML

【29】WEB安全学习----XML注入_第1张图片

二、XML注入例子

XML注入攻击,和SQL注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。

可测试XML文档中子元素各属性值是否存在注入点。

PHP代码

username;
    $passwd=$xml->passwd;

    $mysqli=new mysqli();
    $mysqli->connect('localhost','root','root');
    if($mysqli->connect_errno){
      die('数据库连接失败:'.$mysqli->connect_error);
    }
    $mysqli->select_db('user');
    if($mysqli->errno){
      dir('打开数据库失败:'.$mysqli->error);
    }
    $mysqli->set_charset('utf-8');
    $sql="SELECT username,paawd FROM users WHERE username='{$username}'";
    $result=$mysqli->query($sql);
    if(!$result){
      die('执行SQL语句失败:'.$mysqli->error);
    }else if($result->num_rows==0){
      die('查询结果为空');
    }else {
      $array1=$result->fetch_all(MYSQLI_ASSOC);
      echo "用户名:{$array1[0]['username']},密码:{$array1[0]['paawd']}";
    }
    $result->free();
    $mysqli->close();
  }
?>

注入测试

【29】WEB安全学习----XML注入_第2张图片

【29】WEB安全学习----XML注入_第3张图片

【29】WEB安全学习----XML注入_第4张图片

【29】WEB安全学习----XML注入_第5张图片

和POST-SQL注入一样,只是提交数据格式换成了XML格式而已。

 

 

 

你可能感兴趣的:(WEB安全学习笔记)