Mysql与SQL注入基础详解.pptx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

* 本PPT仅用于湖南环泰网络空间学院专用 请勿外传;目录

一:Mysql基础语法与数据库结构介绍

二:SQL注入原理与简单的SQL注入实战;目录;解释

这里我们可以看到,在注入的时候我们使用到了information_schema这个数据库下的tables这张表;数据库的创建删除与简单使用

数据库的创建

createdatabase[name];

例子

createdatabasetest1;;1.3.3显示当前数据库名;对创建数据库命令的解释

createtablestudent1(#创建一个表,叫做student

idintprimarykey, #创建一个整形id字段,primarykey主键不为空且唯一

namevarchar(10), #创建一个char类型name字段ageint, #创建一个整形age字段

heightfloat, #创建一个浮点型height字段

hobbychar(10), #创建一个hobbychar类型字段addressvarchar(12) #创建一个address字符型

)defaultcharset=utf8; #默认编码UTF-8

1.4.2向表内添加数据

INSERTintostudent1values(1,admin,20,180,swimming,五道口);代码执行结果如下;1.4.3修改表内数据普通修改

updatestudent1setaddress=八道口,hobby=play;

修改结果如下;语句解释

updatestudent1setaddress=八道口,hobby=play;update#更新

student1#表

set#设置

address=八道口,hobby=play#字段值

条件修改

updatestudent1setaddress=猜我到底是几道口whereid=1orname=admin;

修改之前如下;执行语句;1.4.4删除表内数据

deletefromstudent1whereid=2andaddress=五道口;

结果如下;1.4.5查找数据

select*fromstudent1

效果如下;1.4.6一般查询

select[字段]from[表]selectnamefromstudent1;第一步判断是否存在SQL注入,其实很简单,我们并不需要使用什么and1=1这样的语句去判断,而是可以直接输入一大堆垃圾数据,如果报错,那么说明我们输入的这个垃圾数据被带入数据库中并且执行了,那么就极有可能存在SQL注入

比如这里,我输入垃圾数据,明显看到报错了,那么就极有可能存在SQL注入;我们来分析一下为什么报错了,就确定他是单引号接收参数的,我们在数据库中执行下面这条语句,很明显,这是会报错的

selectnamefromstudent1whereid=1;效果如下;我们可以看到,这是可以执行成功的,这句的意思是查询id=1的字段,并且联合查询数据库的名字;selectname,idfromstudent1whereid=1orderby3

可以看到他报错了,这是为什么呢,因为orderby3的意思是按照第3个列进行排序,但是我们这里明显可以看到,我们只查询了name和id这两个列的值,所以这里根本就不存在第三个列,也就会报错;可以看到orderby2的时候是没报错的,这正是因为我们select的时候刚好select了2列;完美不报错,那么由此确定,在执行sql语句的时候只select了3列;我们来解释一下为什么,我们来执行这条语句

selectnamefromstudent1whereid=1unionselectdatabase()

我们可以看到联合查询的时候,这个1也在name这个列,但是我们在注入的时候,需要的往往是那个unionselect的东西,而不是他原本的东西,如果说他原本的语句正常执行了,在页面回显的时候我联合查询的东西就会回显不出来,所以需要让第一个语句给他执行失败,像我们下面这样;我们执行下面这条语句,虽然前面的语句失败了,但是并不影响我们想要的结果,这样我们联合查询的结果就出来了,这也就是为什么联合查询的时候需要让他原本的语句出错的原因

selectnamefromstudent1whereid=11111unionselectdatabase();我们执行下面这条语句,这条语句就是我之前讲的,意思是查表名

:8124/Less-1/?id=-1unionselect1,group_concat(table_n

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档