时间:2015年1月17日
实验平台:合天网安实验室.Web应用安全.SQL注入实验一
实验环境:Apache+PHP+Mysql
实验原理:
- SQL注入是一种将SQL代码插入或添加到应用的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。
- 传统的手工
(1) 判断是否有注入点
方法一:
在url后面加’ 从而让SQL语句出错,那么页面就会提示出错信息。这时候就可以判断从这里存在注入。当然还有可能加了’,和没加是一样的,这也有可能是注入。因为当把错误提示关闭时,它是不会在页面显示的。
方法二:
构造 and 1 = 1 和 and 1 = 2
如果两个页面显示不一样,那么就说明存在注入了。
(2) 理解字段数目
方法:
order by 数字K /**意思是根据第K个字段的大小来排序, 比如如果只有3个字段, K = 4, 那么就会报错。所以通过这个可以知道有多少字段*/
(3) 使用联合查询获取信息
方法:
使用union语句
实验步骤:
- 热身运动不设防:
关键代码:
目标:尝试进行sql注入,目标为得到数据库中的用户名与密码。
判断是否存在注入:
两次显示不一样,存在注入。
猜测字段数目:
其中,Mysql 的注释符有以下几种:
目的是把后面的’ 注释掉
所以可知有5个字段。
猜字段内容:
注意:
(1) union 两边的select 语句必须具有相同数量的列,列也必须拥有相似的数据类型,同时,每条select语句中列的顺序必须相同。
(2) %23 是 # 的16位url编码。