SQL注入思维导图

1 篇文章 0 订阅
  • SQL
    • 危害
      • 危害数据库里的数据
      • 直接危害到网站的权限(需要满足条件)
    • WEB源码
      • 目录结构
        • 后台目录
        • 模板目录
        • 数据库目录
        • 数据库配置文件
        • .........
      • 脚本类型
        • ASP
        • PHP
        • ASPX
        • JSP
        • JAVAWEB
        • Python
        • ..........
      • 应用分类
        • 门户
        • 电商
        • 论坛
        • 博客
        • 第三方
        • 其他
      • 其他补充
        • 框架或非框架
        • CMS识别
        • 开源或内部
          • 开源-直接找漏洞或审计
          • 内部-常规渗透测试
        • 源码获取
        • ............
    • 回显/盲注
      • 回显注入
          • floor
          • updatexml
          • extractvalue
      • 无回显注入
        • regexp,like,ascii,left,ord,mid
      • 延时盲注
        • if,sleep(不需要回显信息就能看到)
          • and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(3),0)--+
      • 布尔盲注
        • 猜取版本号
        • 判断数据库长度
    • WAF绕过-SQL注入
      • 数据
        • 解密编码类
        • 等价函数替换
        • 大小写混合
        • 特殊符号混用
        • 反序列化
        • 注释符混用
      • 方式
        • 更改提交方式
        • 变异
      • 其他
        • Fuzz大法
        • 数据库特性
        • 垃圾数据溢出
        • HTTP参数污染
        • ...............
    • 防御方案
      • 代码加载过滤
      • WAF产品部署
      • ............
    • 注入扩展
      • 加解密注入
        • 注入时注意编码注入
      • JSON注入
      • LADP注入
      • DNSlog注入
        • 工具地址
          • DNSlog:解决了盲注不能回显数据,效率低的问题。
      • 二次注入
        • 二次注入无法通过扫描工具或者代码自己手工测试出来的,二次注入一般会产生在网站程序源代码才会发现的注入漏洞,从前端或者黑盒测试是看不到这个漏洞。
          • 二次注入原理
            • 1.第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。
            • 2.在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
      • 堆叠查询
        • 堆叠可以看到应该是一堆sql语句(多条)一起执行
        • 堆叠注入的局限性
          • 在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎的不支持的限制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些数据。
      • .........
    • 基本语句意思
      • information_schema.tables:记录所有表名信息的表information_schema.columns:记录所有列名信息的表table_name:表名column_name:列名table_schema:数据库名
    • MYSQL注入
      • 信息收集
        • 操作系统
        • 数据库名
        • 数据库版本
        • 其他(网络路径等)
          • 路径获取常见方法
            • 报错显示:一般网站出现错误的时候它会泄露出路径遗留文件:站长为了调试信息的时候遗留的文件而泄露的路径。用扫描工具可以扫出漏洞报错:知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms 爆路径平台配置文件:通过读取文件来读取搭建网站平台的配置文件。缺点:路径不是默认的,一旦更改很难找到路径爆破:
      • 数据注入
        • 同数据库
          • 低版本
          • 高版本
      • 高权限注入
        • 常规查询
        • 数据库查询
          • root在MYSQL数据库中属于最高权限,除root之外其他都简称为为普通用户权限不是root权限获取不到数据库名
        • 文件读写
          • 存在魔术引号
            • 编码或字节绕过
          • 不存在魔术引导
          • 文件读写操作
            • MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的。MySQL有内置读取的操作函数,我们可以调用这个函数作为注入的攻击。load_file():读取函数into outfile 或 into dumpfile:导出函数
      • 跨库查询及应用思路
        • information_schema表特性,记录库名,表名,列名对应表通过select * from schemata; 进行数据库名查询,再去选择进行查询获取指明数据库里的数据获取数据库名:http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from infomation_shcema.schemata
      • 相关防注入
        • 自带防御:魔术引导
        • 内置函数:int等
        • 自定义关键字:select
        • WAF防护软件:安全狗,宝塔等
    • 如何判断有无注入点
      • and 1=1 页面正常and 1=2 页面错误可能存在注入点
      • SELECT * FROM users WHERE id=1 and 1=1 LIMIT 0,1 正常SELECT * FROM users WHERE id=1 and 1=2 LIMIT 0,1 错误
      • SELECT * FROM users WHERE id=1 真1=1 真1=2 假
      • SELECT * FROM users WHERE id=1 or 1=1 LIMIT 0,1 正常SELECT * FROM users WHERE id=1 or 1=2 LIMIT 0,1 正常不能用or判断
      • SELECT * FROM users WHERE id=1asdsadsad(随便输入) LIMIT 0,1随便输入后对网页有影响说明带入数据库进行查询有注入点,没有影响说明没有带入数据库查询,出现404错误说明对输入检测没有漏洞
    • 数据库类型
      • Access
        • access     表名        列名            数据access数据库保存在网站源码下面,自己网站数据库独立存在,没有文件读写的操作
          • 表名
            • new_list.asp?id=-1 union select 1,2,3,4 from admin
          • 列名
            • new_list.asp?id=-1 union select username,passwd,3,4 from admin
      • Mysql
      • Mssql
      • Oracle
      • Postsql
      • SQLite
      • Mongodb
      • .....
    • 提交方法
      • GET
        • GET方法无法接收POST的值
      • POST
        • 在POST情况下GET的值只要在网址后面就能接收
        • 以POST请求去测试网页,网页界面是一样的,那么表示这两个参数均以POST方式去提交
      • COOKIE
      • REQUEST
        • REQUEST全部接收
      • HTTP头
      • .........
    • $_SERVER
      • $_SERVER是PHP里内置变量,全局变量,PHP写脚本时用它来获取系统的值,在数据包的某一个地方可以进行注入详细介绍
    • SQL语句干扰符号
      • ' , " , % , ) ,} 等,具体需看写法
    • 数据类型
      • 数字型
        • 如果是数字的话可能不存在单引号
        • 对方在数字上加单引号也是有可能的,要看对方的写法
      • 字符型
        • 一般是采用单引号如果参数是字符的话那肯定是有单引号的
        • 即使有注入也会带入单引号里,产生不了任何作用,所以我们要做的前提是先要把它的符号闭合掉
      • 搜索型
        • 将数据进行搜索并进行展示,搜索符号是%,在过滤的时候要过滤单引号和百分号,不然你的语句全部在单引号和百分号里JSON等
    • 查询方式
      • select
        • select 查询数据
          • 在网站应用中进行数据显示查询效果例: select * from news wher id=$id
      • insert
        • insert 插入数据
          • 在网站应用中进行用户注册添加等操作例:insert into news(id,url,text) values(2,'x','$t')
      • delete
        • delete 删除数据
          • 后台管理里面删除文章删除用户等操作例:delete from news where id=$id
      • update
        • update 更新数据
          • 会员或后台中心数据同步或缓存等操作例:update user set pwd='$p' where id=2 and username='admin'
      • order by
        • order by 排列数据
          • 一般结合表名或列名进行数据排序操作例:select * from news order by $id例:select id,name,price from news order by $order
      • ............
    • sql手工注入常用语句
      • 普通语句
        • schema_name——数据库名;table_name——表名;column_name——字段名;
      • 查询数据库
        • select schema_name from information_schema.schemata#slelect database()#
      • 查询数据库表
        • select table_name from information_schema.tables where table_schema='数据库名'#
      • 查询字段名
        • select column_name from infromation_schema.columns where table_name='表名'#
      • 查询字段内容
        • select * from 表名#
          • SELECT * FROM Persons WHERE City NOT LIKE '%lon%'
    • 万能密码
      • 原理
        • 用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。针对此BBS论坛,当用户登录时,后台执行的数据库查询操作(SQL语句)是【Select user_id,user_type,email From users Where user_id=‘用户名’ And password=‘密码’】。
      • asp aspx万能密码
        • 1:”or “a”=”a2: ‘)or(‘a’=’a3:or 1=1–4:’or 1=1–5:a’or’ 1=1–6:”or 1=1–7:’or’a’=’a8:”or”=”a’=’a9:’or”=’10:’or’=’or’11: 1 or ‘1’=’1’=112: 1 or ‘1’=’1’ or 1=113: ‘OR 1=1%0014: “or 1=1%0015: ‘xor16: 用户名 ’ UNION Select 1,1,1 FROM admin Where ”=’ (替换表名admin)密码 117…admin’ or ‘a’=’a 密码随便
      • PHP万能密码
        • ‘or 1=1/*User: somethingPass: ’ OR ‘1’=’1
      • jsp 万能密码
        • 1’or’1’=’1admin’ OR 1=1/*

 d5b97e0edc3381115e44ba7ae0dbdfb7.png

CTF(Capture The Flag)是一种网络安全竞赛,其中的Web领域涉及到了网页应用程序的漏洞挖掘和利用。下面是CTF Web思维导图的简要解释: CTF Web思维导图主要分为三个方面:Web漏洞类型、漏洞利用技术和解题方法。 Web漏洞类型包括:注入漏洞(如SQL注入、命令注入)、跨站脚本漏洞(XSS)、跨站请求伪造漏洞(CSRF)、文件上传漏洞、路径遍历漏洞等。这些漏洞常见于Web应用程序的开发不规范或配置不当,攻击者可以通过利用这些漏洞来获取无授权的访问或者控制目标系统。 漏洞利用技术主要包括:代码注入(如SQL注入、远程命令执行)、会话劫持与干扰(如会话劫持、会话劫持预防、会话干扰攻击)、文件包含与遍历、信息泄露利用(如敏感信息泄露、漏洞利用)、中间人攻击、点击劫持等。这些技术是攻击者在发现漏洞后利用漏洞实施攻击的具体方法。 解题方法主要包括:寻找目标站点、分析目标站点、漏洞检测与利用、数据包截获与分析、Webshell的利用与部署、绕过访问控制(如绕过IP限制、用户认证绕过)、漏洞修复与防御等。这些方法是CTF比赛中参赛者通过解题来获取Flag的具体步骤。 综上所述,CTF Web思维导图涵盖了Web漏洞类型、漏洞利用技术和解题方法。掌握这些知识和技能能够帮助参赛者更好地分析和利用Web漏洞,从而在CTF比赛中取得优异的成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值