渗透测试之SQL注入(简介)

目录

SQL注入的危害?

SQL注入的分类?

拿到一个动态站,如何找SQL注入点?

SQLi类型的利用优先级?

MySQL注释符

URL编码

MySQL基础函数


WARNING:

  1. 授权渗透,备份数据后渗透;

  2. 在不确定危害的前提下,避免在update、insert、delete种类的注入点进行注入;

  3. 避免使用工具进行上述注入;

  4. 避免使用sqlmap的--dump功能;

SQL注入简介与成因:

        SQL注入是OWASP Top 10位于榜首十分危险的漏洞,有时一个SQL注入漏洞可能会导致一家公司破产。

        由于后端对前端提交的查询参数缺乏正确处理,导致攻击者从前端构造的SQL语句片段被拼接到后端代码的SQL语句片段中,进而发生预期外的数据库查询行为。

SQL注入的危害?

条件满足的情况下:

  1. 从技术上来说:未授权、非法增删改查数据库内容,包括窃取信息、删除数据库、读写系统文件、执行命令等等;

  2. 从影响上来说:客户数据丢失、系统交易数据被篡改、网站首页被篡改。

SQL注入的分类?

按照后台处理前端提交参数的类型来分,分两类:数字型注入和字符型注入。

按照请求方式分:GET、POST

按照其他分类方法,还有一些常见数据库注入类型:报错注入、盲注、延时注入、宽字节注入、二次注入、堆叠注入。

拿到一个动态站,如何找SQL注入点?

罗列潜在注入点

依次对潜在注入点尝试进行注入

首先给不同的正常参数,观察返回结果的变化

如果返回的是变化的结果,那么考虑联合查询注入、报错注入、外带数据注入、布尔盲注、延时盲注

再构造SQL语句片段尝试注入

- xxxxxxxxxxxxx
- .....

如果说有报错(除非特别说明,默认指DBMS的报错,下同),但是不返回显示位的,就排除联合查询注入;

如果没有报错,就应该考虑后面三种;

如果不能联合查询注入、无报错、且返回页面无条件一致的,使用延时盲注。

如果上面都搞不定,那么换个模块(首选风格更旧或者新功能模块)的注入点。

SQLi类型的利用优先级?

报错注入>联合查询>外带数据盲注>布尔盲注>延时盲注>宽字节注入>二次注入(代码审计)

MySQL注释符

#(%23)、--+

URL编码

目标:了解get请求后到底是编码还是解码,要传送目标字符串到后端,到底该先编码还是解码然后输入到地址栏中。要求:向后端传送:1、空格;2、#;3、+;4、--空格

原理:URL请求会对URL编码的字符进行自动解码传送到后端

例子

%23:#

+:空格

%2B:+

MySQL基础函数

  1. length():判断字符串长度

  2. substr(var1, var2, var3)

    功能:从字符串里截取其中一段字符(串),从1开始奇数

    • var1:被截取的字符串

    • var2:从哪一位开始截取

    • var3:截取长度

  3. mid(),同substr()

  4. left(str, n):截取前几个字符

  5. ascii(var)

    功能:取var字符的ascii码(十进制),支接收一个字符

  6. if(var1, var2, var3)

    var1:条件

    var2:条件为真时返回的值

    var3:条件为假时返回的值

  7. sleep(var)

    暂停执行var秒,var可以用小数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值