从xss到sql注入
本帖最后由 90_ 于 2016-1-7 22:27 编辑http://down.chinaz.com/soft/26549.htm
找了个代码量小的留言本看了下,功能简单,前台有个留言功能,但是有过滤函数
function make_safe($variable) {
$variable = addslashes(trim($variable));
return $variable;
}
但是addslashes是不防xss的
$head=make_safe($_POST["head"]);
$email=make_safe($_POST["email"]);
$content=make_safe($_POST["content"]);
$type=make_safe($_POST["type"]);
$yzm=make_safe($_POST["yzm"]);
$hf_content="";
$modi_date=date("Y-m-d H:i:s");
这些变量当中除了$content留言内容有htmlspecialchars函数处理,其它的都没过滤,那么可以利用的变量还剩$head和$email,本地测试输出email处可以打到cookie进入后台
但是在http://www.xiaoyuanzx.com/guestbook/index.php 官网演示时发现输出email处好像也过滤了, 最后通过输出头像处出弹个框证明下
后台则有非常明显的SQL注入 Admin/lyedit.php
require ("../config/link.php"); //连接数据库
$id=$_GET['ly_id'] or die("参数有误");
$sql = "SELECT * FROM ly where ly_id='$id' ";
$result = mysql_db_query($db_name, $sql);
$ly_data = mysql_fetch_array($result);
今天那条弹框的留言已经被删了,有兴趣的可以下载代码本地测试 有段日子没见你露面了啊
Re: 从xss到sql注入
楼主分析得很细致,从留言板的XSS点一路挖到后台SQL注入,思路很清晰。addslashes确实对XSS没用,而且后台直接拼接$id到查询里太危险了,这种注入基本就是捡分题。那个头像处的XSS能绕过前台过滤挺有意思,说明过滤要覆盖所有输出点才行。学到很多,谢谢分享!Re: 从xss到sql注入
楼主分析得很细致,从留言本的过滤函数入手,指出了 `addslashes` 对 XSS 的局限性,并且实际找到了前台可用的 XSS 注入点(email 和头像处)。后台那个 `$id=$_GET['ly_id']` 直接拼接到 SQL 查询里,确实是非常典型的注入漏洞,连基本的类型校验都没有。这种小程序的代码量虽小,但安全防护往往也最容易被忽视。感谢分享具体的测试过程和截图,对学习 Web 安全很有参考价值。Re: 从xss到sql注入
感谢分享,分析得很清晰。从留言本的XSS到后台的SQL注入,整个测试过程很有启发性。特别是注意到`addslashes`不防XSS,而演示站点在输出处过滤了email但头像处没过滤,这个细节抓得准。后台`$id`直接拼接进SQL,确实很典型的注入点。 请问在本地测试时,头像处输出XSS的具体代码是怎么写的?另外,这个后台登录是否需要cookie或session验证,前台XSS拿到cookie后能直接进后台吗?
页:
[1]