标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-2234] 作者: Taber 发表于: [2018-12-21]
本文共 [411] 位读者顶过
SQL注入介绍
一、SQL注入概念
1、sql注入是一种将sql代码添加到输入参数中
2、传递到sql服务器解析并执行的一种攻击手法
举例:某个网站的用户名为name=‘admin’。执行时为select name from users where name=‘admin’
则输入时输入name='' or '1=1'。实则数据库中执行的是select name from users where name='' or '1=1'则为真,用户名有效
[出自:jiwo.org]
二、SQL注入的产生
1、web开发人员无法保证所有的输入都已经过滤
2、攻击者利用发送给sql服务器的输入数据构造可执行的sql代码
3、数据库未做相应的安全配置
对于1和2两点,攻击者可以利用get请求、post请求、cookie信息、相应的http头信息等进行数据的输入而达到攻击的目的
三、寻找sql注入漏洞
1、通过构造异常而引发异常,例如:只支持整型的地方输入特殊字符来引起sql异常
2、通过get请求、post请求、cookie信息、相应的http头信息等查找敏感信息
3、检测服务器中相应的异常
四、进行sql注入攻击
1、数字注入。利用数据库中where判断语句中数字输入进行攻击。
例如:select name from users where name='' or '1=1'。结果永远为true
2、字符串注入。利用mysql的注释方法进行攻击
a、#注释的方法。
用户名的输入框中输入:admin'#,密码任意填写。
在数据库中执行的是:select * from name='admin'#'and password=xxxxx'。#后面的全部注释掉,判断的时候只判断name=admin
b、-- hdka方法,两个横杠+空格+任意字符。在执行的时候空格后面的所有被当作注释处理
用户名的输入框中输入:admin'-- ,密码任意填写。
在数据库中执行的是:select * from name='admin'-- 'and password=xxxxx'。#后面的全部注释掉,判断的时候只判断name=admin
五、注入步骤
1、找寻注入点
输入一个单引号,如果报错说明语法错误则存在注入点
sleep中的为时间,10即位10s
2、猜字段
Sql中数字可以作为字段进行匹配
3、使用union获得其他表信息
获得当前数据库及用户信息
数据库版本信息
查询所有库名 查询数据表中的列名 'union select colunm_name from INFORMATION_SCHEMA.colunms where table_name='xxx表' --'
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
|