代码审计——sql注入漏洞概述

0x00 前言

如饥似渴的学习。

0x01 SQL注入漏洞概述

1. 现状

  • 高危害
  • 攻击频率高
  • 攻击普及

2.sql注入的攻击方式

2.1 高权限

在高权限的时候,可以直接写入webshell或者直接执行系统命令等。

2.2 低权限

通过注入获取管理员的密码等信息。

0x02 SQL注入挖掘经验

1. SQL注入出现位置

  • 登录页面(http头 client-ip和x-forward-for)
  • 获取HTTP头
  • 订单处理(订单与购物车交互,会发生二次注入)

2. 普通注入

普通注入分为int型和string型,string型注入需要使用单或双引号去闭合。

2.1 常用关键字

数据库操作

  • select from
  • mysql_connect
  • mysql_query
  • mysql_fetch_row
    数据库查询
  • update
  • insert
  • delete

3.编码注入

通过输入转码函数不兼容的特殊字符,可以导致输出的字符编程有害数据。最常见的编码注入就是Mysql宽字节以及urldecode/rawurldecode。urldecode是一个转码函数,rawurldecode是一个解码函数。

3.1 宽字节注入

在PHP连接Mysql的时候,设置set character_set_client=gbk 会导致一个编码转换的注入问题。

3.2 漏洞解决方式

  • 设置character_set_client=binary
  • 使用mysql_set_charset(‘gbk’)设置编码,使用mysql_real_escape_string()函数将参数过滤
  • 使用pdo方式

3.3 挖掘关键字

  • SET NAMES
  • character_set_client=gbk
  • mysql_set_charset(‘gbk’)

4.二次urldecode注入

只要字符被进行转换就有可能产生漏洞。通常使用addslashes(),mysql_real_escape_string(),mysql_escape_string()或者开启GPC来防止注入。

第一次提交 ?id=1%2527 这个时候会把%25解析成

如果在这个时候使用urldecode或者rawurldecode函数,就会导致二次注入。

4.1 挖掘

关键词

  • urldecode
  • rawurldecode

0x03 漏洞防范

1. gpc/rutime 魔术引导

magic_quotes_gpc负责对GET、POST、Cookie的值进行过滤,magic_quotes_runtime对从数据库或者文件中获取的数据进行过滤。

2.过滤函数和类

2.1 addslashes函数

addslashes函数过滤的值范围和GPC一样,单引号,双引号,反斜杠,空字符。
但是它的参数必须是string类型。

2.2 mysql_[real_]escape_string函数

推荐使用mysql_real_escape_string进行过滤。

2.3 intval字符转换

强行将变量转换成int变量
个人感觉这种方法很棒啊,如果都转换为了int型还咋注入。

2.4 PDO prepare预编译

相当于在注入之前进行一个预判断。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王嘟嘟_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值