SQL注入的基本知识-百越白狼社区-弘客联盟新手区-弘客联盟

SQL注入的基本知识

SQL注入原理

    当web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据.

SQL注入本质

    把用户输入的数据当成执行的代码

SQL注入的危害

盗取网站的敏感信息
绕过网站后台认证

借助SQL注入漏洞提权获取Webshell

借助SQL注入漏洞提权 把服务器变成自己的肉鸡
读取文件信息
SQL注入-常用函数:

user() 返回当前使用数据库的用户,也就是网站配置文件中连接数据库的账

version() 返回数据库版本

database()返回数据库(只有在use命令选择一个数据库之后,才能查到)

group_concat() 把数据库中的某列数据或某几列数据合并为一个字符串

@@version_compile_os 操作系统版本

SQL联合查询流程:


?id=1 and 1=1
判断有无闭合 and 1=1 and 1=2 //结果和第一个一样说明需要闭合,反之无闭合 有闭合需要用到
猜解字段 order by 10

判断数据回显位置 -1 union select 1,2,3,4,5, 6…….

获取当前数据库名、用户、版本 union select version(),database(),user()

SQL注入思路

判断注入点

在GET参数、POST参数、Cookie、Referer、XFF、UA尝试插入代码、符号或语句,尝试是否存在数据库参数读取行为,以及能否对其参数产生影响,如产生影响,存在注入点

端口扫描

如果可以对主机进行端口扫描,可以根据端口判断数据库类型Oracle:521
SQL Server:433
MySQL:3306
PostgreSql:5432

sql注入点类型

get注入
在get传参时写入参数,将SQl语句闭合,后面加写入自己的SQL语句

post注入
通过post传参,原理与get一样,重要的是判断我们所输入的信息是否与数据库产生交互,其次判断SQL语句是如何闭合的

Referer注入
Referer正确写法应该是Referrer,因为http规定时写错只能将错就错,有些网站会记录ip和访问路径,例如百度就是通过Referer来统计网站流量,我们将访问路径进行SQL注入,同样也可以得到想要的信息

XFF注入
在用户登录注册模块在 HTTP 头信息添加 X-Forwarded-for: 9.9.9.9′ ,用户在注册的时候,如果存在安全隐 患,会出现错误页面或者报错。从而导致注册或者登录用户失败

SQL注入:数字型

当输入的参数为整形时,若存在注入漏洞,则是数字型注入。

如:https://blog.csdn.net/aboutus.php?id=1

此时后台语句:$sql=“SELECT 123 FROM abc WHERE id=’1 ‘”

检测方法:URL输入 and 1=1 / and 1=2 报错则说明有注入

SQL注入:字符型

当输入参数为字符串时,称为字符型注入。

它与数字型的区别:数字型不需要单引号来闭合,而字符串需要单引号来闭合。

例:https://github.com/KnightYuGan?id=1’

此时后台语句:$sql=“SELECT 123 FROM abc WHERE id=’1 ’ ’ “

若多出了一个单引号,破坏了原本的SQL语句结构,数据库无法处理,于是会报错,证明这条语句成功被带进数据库查询,存在字符型注入。

 

请登录后发表评论

    没有回复内容