数据库的运行原理及SQL注入
数据库的运行原理
简单了解:
数据库是什么?
定义:在软件系统中,用于管理和存放所有数据内容
那我们就好奇了,我们需要怎么样去管理?
应用:我输入账号和密码,然后点击登录按钮,实现一次登陆操作 将输入的数据放到数据库里查询是否有匹配项,若有,直接返回登入成功;若没有,则报错。
由此,我们可以得到:
数据库是可以被操作的,用来查询和获取数据的。
那看到这里你也肯定会疑惑:
数据库是如何被操作的呢?
数据存储类似于excel形态,要操作数据,要通过SQL语法来完成,实现数据的增删改查!
SQL注入
怎么进行注入?
1.可以直接在输入框进行注入(get注入)
2.进行url进行注入(get注入)
3.基于请求进行注入(包括基于请求头(基于cookie,基于referer),体注入,可以在url注入)
SQL注入的原理:
以恶意的SQL语法来对正常的系统进行注入,以期望获取到系统中的各类数据或者获得系统的更高权限,从而实现对数据的篡改,窃取!(打击这种行为!)
还有个在软件开发的时候要想到:一定要从最坏的角度来思考用户会对你开发的软件做什么(人心深不可测啊QwQ)
话不多说,我们开始实践:
(你可以在DVWA上搭靶场)
1.了解到这是什么数据类型
2.了解到输入框的输入要求(假设它是字符类型)那么输入其他的特殊类型会报错
SQL注入中的万能语句:
1’ or 1 = 1 # // 可以把它拆分成两个语句理解 or 前面和后面 1 = 1在OI中是不是恒定为真?那么在此也是一样,表示真,对应的操作就是把数据库中关于 1’ 的所有数据都给它显示出来了! !
//而这个#是特定的东西,#表示注释掉,就是后面的东西都不起作用了!
select database( ) 获取数据库的名称
接下来我们就需要获取数据库中的表,之后要获取数据库的字段,然后获取到字段的信息(分治思想!)
有些软件显示数据的时候可能只会显示一条信息,那我们就得用 group_concat( )函数将他们合成一条信息
ps:
SQL注入需要寻找注入点
SQL注入主要针对的是后端程序上调用数据库时所使用的SQL语句,通过注入恶意的SQL代码,来实现自己的非法路径。
SQL注入的操作系统3_哔哩哔哩_bilibili 详情可以点这个学习
本文来自博客园,作者:Alaso_shuang,转载请注明原文链接:https://www.cnblogs.com/Alaso687/p/16997346.html