sql注入相关的知识总结

1.常见数据库的类型-payload,注入方法

access,mysql,mssql,postgresql,oracle,mogodb

其中最常见的是asp+access,php+mysql,python+mogodb

2.常见数据库的分类-权限提升

对于注入和权限提升的关键,根据是非有root账户分类的话,access没有root账户,剩下都是有的

3.sql注入常见的出现地方-注入点

只要运用到数据库操作的地方都有可能出现sql注入的位置

黑盒情况下:通过功能判断是否有数据库操作

白盒情况下:1.功能 2.代码操作的追溯

4.数据库的基本结构-payload

库->表->列->data

在access中,只有一个数据库,而其他的数据往往有多个数据库,通过创建不同的用户,让不同的数据库用户只能查看和操作相关的数据库,root账户则可以统一管理所有的数据库

5.采用最简单的注入点手工注入,不同的数据库的格式概述

1.access

一般采用社工爆破的方式

当只知道表不知道列的时候,用偏移注入

2.mysql

在mysql5.0以上可以通过imformation_schema去查询相关的表,列名

3.postgresql

只有部分语法和mysql不同,也有相关的表

详细可以看PostgreSQL的information_schema_ITPUB博客

4.oracle

大致的的语法相同,oracle在手工注入查询是有一个dual虚表

5.mogodb

在注入时需要按照一定的格式进行提交才可以让数据传输成功

6.数据的提交方式

get,post,cookie,request,server

get在url上直接可以看见提交的位置t

post需要用hackbar提交

cookie,server需要抓包之后去修改数据包提交

request是get和post都传输提交

7.数据的基本类型-决定注入语句

数字:不用单引号

字符型:双引号和单引号括起来的,在写语句闭合的时候要加上

搜索型:‘%s%’经常用于一个搜索框的select匹配工作,在闭合的时候要先闭合%’+语句--过滤

              没办法过滤的时候使用判断的方式去做%’+语句+and ‘%’=‘

编码型:在数据的传输过程中采用了编码方式,前端编码提交,后端解码处理,这个时候需要查看编码类型进行提交payload

格式型:提交的数据具有格式要求,如json

8.sql非直接注入的常用手法

1.盲注

当前页面没有回显的时候使用

延时:用if+sleep和判断去做,没有条件限制

布尔:left等等,条件是需要有判断的标准

报错:利用原本网站代码中就用的报错代码error函数,条件是具有报错的代码

2.宽字节注入

当一个注入点采用了在某些字符前面加/的方式过滤的时候使用

最常见的是在php中的addslash()和在配置文件中开启magic_gpc,让我们在闭合某一个注入点时变成/',让一个语句无法闭合,我们可以采用在前面加入%df,例如%df’union select...,在过滤的时候就会变成%df/’union select... 在解析这个语句时就会把%df和/去结合在一起从而达成闭合的目的

3.二次注入

当没有明显可以回显的地方,我们输入的数据被放置到数据库中,在其他地方再次被用到,从而查询信息

原理:我们可以控制变量的输入,服务器再次采用这个变量进行输出

常见场景:前面有一个输入变量A的insert语句,把变量A插入了一个数据库的表,后面有select语句对于该表进行了输出

思路:我们可以改变什么->数据库修改了->服务器输出了显示

4.堆叠注入

在mysql,mssql,postgresql数据库中可以用;分割语句,让两个语句分开执行

5.DNSlog

当一个网站没有回显,或者一个防火墙对于部分的协议进行了过滤的情况下使用,一般的网站对于DNS是不进行过滤的

一般可以使用DNSlog网站DNSLog Platform

原理:DNS是域名解析服务,目的是让目标反过来去访问你给出的网站,用执行语句+我给出的网站

条件苛刻:必须要在目标注入点上可以使用load_file()这样的高权限语句

但是都可以用这样的语句了,不都可以直接命令执行了吗

9.sqlmap工具注入

sqlmap是sql注入最常用的工具,用起来很简单,也很无脑

sqlmap是基于python开发的,所以先需要配置一个Python的环境,然后在python目录下使用python启动,安装就直接在github上面下载就可以了

在windows上面用cmd打开

这样就是打开成功了,最常用的就是以下几个

把带有注入点的url地址复制到sqlmap上,会自动排查sql注入点,分析有可能使用的数据库类型

查是否带注入点:sqlmap -u “网址”

查所有数据库:sqlmap -u “网址” --dbs

查当前数据库:sqlmap -u “网址” --current-db

查指定库的所有表名:sqlmap -u “网址” -D “数据库名” --tables

查询指定库指定表所有列名:sqlmap -u “网址” -D “数据库名” -T “表名” --columns

查看指定数据库指定表指定列的数据:sqlmap -u “网址” -D “数据库名” -T “表名” --C “列名” --dump

sqlmap是非常好用的sql注入工具,但是不是万能的,一切功能都还是基于最简单的手工注入,只不过比手打效率更高而已,在面对很多情况下,sqlmap是不能直接告诉我们的,比如输入值是编码型,或者格式等等情况,这个时候我们需要自己先做出判断再去拿脚本跑

在sqlmap下的temper目录就提供了这些脚本应对不同的情况

在使用的时候我们为了sqlmap更准确可以用提交抓到的数据包的方式,在注入点加上?示意

10.小tips

1.在输入语句没回显的情况下,可以看一下是否有报错语句,可以尝试去加报错让语句回显

2.在绕过过滤的时候mysql支持16进制的语句输入解析

3.在白盒审计的时候,我们尽量去试包含了目的语句触发页面

11.我的sql注入例子

持续更新中,感兴趣的不如收藏这个帖子,关注我鸭

相关推荐

  1. sql注入知识总结

    2024-05-02 17:46:02       24 阅读
  2. sql注入相关题目

    2024-05-02 17:46:02       11 阅读
  3. web安全——sql注入漏洞知识总结

    2024-05-02 17:46:02       18 阅读
  4. SQL注入总结

    2024-05-02 17:46:02       45 阅读
  5. sql注入基础知识

    2024-05-02 17:46:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-02 17:46:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-02 17:46:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-02 17:46:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-02 17:46:02       20 阅读

热门阅读

  1. 中文输入法导致的高频事件

    2024-05-02 17:46:02       9 阅读
  2. CUDA内存管理

    2024-05-02 17:46:02       8 阅读
  3. 鸿蒙应用开发中用到的持久化方案

    2024-05-02 17:46:02       10 阅读
  4. 每天学习一个Linux命令之sed

    2024-05-02 17:46:02       10 阅读
  5. 跟我学C++中级篇——零长度数组

    2024-05-02 17:46:02       11 阅读
  6. python生成随机字符串

    2024-05-02 17:46:02       13 阅读
  7. C++11数量不定的参数模板

    2024-05-02 17:46:02       9 阅读
  8. 若依前后端分离版 集成 腾讯云 COS

    2024-05-02 17:46:02       11 阅读
  9. 数据库----第五天(选择题)

    2024-05-02 17:46:02       12 阅读