主页 > 2号站 > 正文
什么是SQL注入?
还记得小学语文考试上的填空题吗? 标题的意图显着是经过填空来了解答题者的姓名和喜好。
比方:我是_______________,喜爱__________________
假如有同学填成下面这样?
我是超级蜘蛛池,我能够引蜘蛛快速进步录入,喜爱_______________________
这便是一个注入的比方,当命题者认为他现已定下了句子的主体结构,需求填空的内容是不会影响主体结构的,而填空者却经过填写的内容,修改了整句话的结构,这便是注入。
经过精心结构的URL参数,或许表单提交的参数,拼接到预先界说好的SQL格局时,意外地改变了程序员预期的SQL结构时,SQL注入就构成了。履行该SQL句子已超出的程序员的意图。比方,没用用户名或暗码能够登陆成功,或将数据库内容悉数dump下来,等等。
超级蜘蛛池之何谓为SQL注入?【根底】插图
第一步、咱们先装置测验环境。装置Apache、PHP、MySQL 这儿用的LINUX环境
在Ubuntu下安全LAMP十分简略,只需求一个指令就能够了:
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql
假如你有Web动态言语开发经历,php是个很简略上手的言语。当然咱们选用LAMP的意图不是Web自身,是运用它来写一个demo的数据库运用,测验SQL注入。
在装置MySQL进程中会要求设置root用户的暗码,设置成root(后边链接数据库时需求)。
装置完成后,web 项目根目录默许在/var/www/, 为了简略起来,对LAMP不做任何装备。翻开浏览器,输入 http://localhost/ 测验装置是否成功。下是测验成功的比方。
超级蜘蛛池之何谓为SQL注入?【根底】插图(1)
测验一下php是否作业正常,创立一个test.php文件 sudo vim /var/www/test.php 输入下面的代码:
phpinfo()
?>
在浏览器翻开 http://localhost/test.php,输出成果如下:
超级蜘蛛池之何谓为SQL注入?【根底】插图(2)
PHP测验环境建立成功了。
第二步、编写简略的数据库运用
运用mysql客户端衔接MySQL数据,指令如下:#mysql -h localhost -u root -p
Enter password: <这儿输入暗码:root>
输入用户root的暗码root成功登录之后的进程:
超级蜘蛛池之何谓为SQL注入?【根底】插图(3)
创立数据库test
首先要创立一个数据库,这儿将数据姓名称为test,在mysql客户端输入如下指令:
mysql>create database test;
进入test数据库
mysql> use test;
创立表userinfo
有了数据库,还得有表,才干装下真实的数据。简略起见,表只要两个字段name和passwd,别离保存用户名和暗码,其间name为主键。MySQL下的创立句子:
create table userinfo (name char(20) not null primary key, passwd char(20) not null);
刺进用户数据
为了测验,需求往表里边刺进数据。运用mysql句子往userinfo表刺进两个用户信息,别离是linyt和ivan,暗码和用户名内空相同。
MySQL句子如下:
insert into userinfo values(‘linyt’, ‘linyt’);
insert into userinfo values(‘ivan’,’ivan’);
测验一下数据表内容
在MySQL客户端输入:select * from userinfo;指令能够看到userinfo表中一切记载。
超级蜘蛛池之何谓为SQL注入?【根底】插图(4)
下面运用php脚本言语编写个简略的登录体系。代码如下:
超级蜘蛛池之何谓为SQL注入?【根底】插图(5)
超级蜘蛛池之何谓为SQL注入?【根底】插图(6)
原理十分简略,经过username 和 passwd 两个文本框承受用户输入的用户名和暗码,然链接数据库,
运用select * from userinfo where name=’<输入的用户名>‘ AND passwd=’<用户输入的暗码>‘SQL句子从数据库中查询出用户记载,假如有该用名,则以表格方法来显现用户信息。
关于没人做过web开发的朋友能够会问,这儿为什么需求单引号’,那是由于name字段的类型是字符串,字符串值需求运用单引号’括起来。而数值类型是不需的单引号’的。
三、SQL注入试验
在注入试验之前,咱们先展现正常登录作用:
超级蜘蛛池之何谓为SQL注入?【根底】插图(7)
为了便利后边验证展现,每次都会在网页上输出查询的SQL句子内容。
先来调查一下发生了什么事情:
别离输入用户名linyt和暗码linyt,然后点login
后边php服务中获取用户的输入,并保存在$name和$passwd两个变量
运用$name和$passwd两变量来拼接生成SQL句子,并进行数据库查询
将从数据库是查询出数据在网页上输出
本例中输入用户名linyt和暗码linyt状况,SQL句子的拼接进程如下:
超级蜘蛛池之何谓为SQL注入?【根底】插图(8)
假如不知道用户名和暗码的状况下,怎样能够登陆成功呢?
假如不知道用户名暗码,那么name = ‘$name’ 随意替换成一个用户名如abc,变成name = ‘abc’,这个条件必定不能为true,为了使得WHERE句子的条件为ture,就得更改它的句子结构。
即然name = ‘abc’ 必定为false,那么咱们在后边添加一个or,再附件一个恒真句子,那整个句子就为ture了。,比方‘1’ = ‘1’,1=1, ” = ”,在不同的上下文挑选合适的就能够了。
留心一下SQL拼接句子中name = ‘$name’,这儿是有两个’号的。为了终究注入成果为:
select * from userinfo WHERE name = ‘<这儿写什么都不重要>‘ or ‘1’=’1′ AND passwd = ‘<这儿写什么都不重要>‘ or ‘1’=’1′
那name和passwd应该填什么呢?请看图:超级蜘蛛池之何谓为SQL注入?【根底】插图(9)
四、SQL注入测验成果:
超级蜘蛛池之何谓为SQL注入?【根底】插图(10)
请注意浏览器地址栏的内容:
http://localhost/uerinfo.php?name=’ or ’1’=’1&passwd=’ or ’1’=’1
浏览器在址址显现时运用了URL编码,与用户输入username和passwd内容看起来不完全相同,实践是相同的。运用 来代表空格,=来替代=
经过注入,网页显现了userinfo表中的一切记载。 我们能够再看一下网页上的SQL句子输出:
sql = SELECT * FROM userinfo WHERE name = ” or ‘1’=’1′ AND passwd = ” or ‘1’=’1′
假如你对SQL很内行,那可做更杂乱的注入,能够将数据库里边许多东西给偷出来。
- 上一篇:二号站手机登录_新闻详情
- 下一篇:没有了
猜你喜欢
- 2024-01-02 11:50:33 二号站苹果app下载_什么样的网页设计才独特
- 2023-12-29 11:50:36 二号站招商主管_你了解企业建站吗?
- 2022-08-16 11:50:39 二号站招商主管_用户体验设计师必知的色彩基础
- 2021-12-04 08:58:44 二号站手机登录网址_百度信誉V认证影响seo结果么
- 2021-10-27 08:58:41 二号站老板_SEO优化中视频也是网站排名算法中的
- 2号站主管Q:2347-660
-
- 01-18天富挂机app下载_打造网站的魔法之旅:网站策划
- 01-18天富手机app挂机_打造完美落地页的10大关键技巧
- 01-18二号站电脑版登录_9种常见的网页设计布局
- 01-17凤凰二号站地址_2020年最值得关注的13个网页设计
- 01-17二号站手机登录_网页设计中最常用的5种配图
- 01-17二号站手机客户端_如何挑选网页设计公司?美橙
- 01-172号站电脑版登陆_如何学习响应式网页设计?
- 01-16天富直属注册_手机网站制作建设中所存在的几个
- 01-16二号站老板_2020年的8大平面&网页设计趋势
- 01-16二号站官网代理注册_手机网页设计我们应该注意
- 01-18天富挂机app下载_打造网站的魔法之旅:网站策划
- 01-18天富手机app挂机_打造完美落地页的10大关键技巧
- 01-18二号站电脑版登录_9种常见的网页设计布局
- 01-17凤凰二号站地址_2020年最值得关注的13个网页设计
- 01-17二号站手机登录_网页设计中最常用的5种配图
- 01-17二号站手机客户端_如何挑选网页设计公司?美橙
- 01-172号站电脑版登陆_如何学习响应式网页设计?
- 01-16天富直属注册_手机网站制作建设中所存在的几个
- 01-16二号站老板_2020年的8大平面&网页设计趋势
- 01-16二号站官网代理注册_手机网页设计我们应该注意