- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)