第十二天,sql注入,

第十二天,sql注入,

sql注入是非常复杂的,它呢是要去区别数据库类型和提交方法,数据类型注入,这类漏洞在web安全是比较重要的漏洞,要学会利用,挖掘,修复。下面是给sql注入的思维导图

这些知识点,有的就比较简单,有的就比较困难,右边四块是相对于比较容易理解的四块,左边四块就困难一些,今天先学习右边的这些,把左边的弄明白

今天先打mysql数据库,还可能今天讲不完emmm,

 sql注入安全测试中的危害,这个危害主要分为两块,大部分的sql注入但是对数据库里面的数据进行操作,或者是更新或者是删除,sql注入一般是可以这样操作的,也就是说数据库中的数据会被sql注入影响到,sql注入可以影响到数据,凡是跟数据打交道的都可以利用sql注入来实现,sql注入某一些sql注入的时候某一些漏洞可以直接进行后门的写入,直接获取权限,这可以通过这个注入点实现的,这种注入点不是通用的是分条件,有条件的,有些注入点只能获取数据库中的数据一些敏感信息,在一步步的获取权限,有的直接获取权限,我们一般称这种为权限就是注入点的权限,危害就是两个第一个危害到数据库中的数据,第二个是危害网站的权限,网站的权限是有条件的满足条件就可以,不满足就不可以。

注入点的产生原理,是怎么产生的。先打开测试用的,有sql注入代码的php代码可课,分析

这是一个php,atm混编的代码,

 主要还是看php代码来分析,在测试网站中,这样子,1可以随意更改的变量

 在上图这个过程中涉及到了参数的传递,数据的接收,数据的交互,数据的执行。首先是接受数据,接受数据之后在拼接数据,拼接好数据去执行,最后把结果展示出来。sql语句是干嘛的就是注入到sql语句,我们知道如果sql语句被更改或重新编写的话,会达到一定操作。

 这时候我们就可以利用这个漏洞去访问一些本来访问不到的表内容,图中是它正常语法,设想一下把1改成别的东西,有一些其他的语句,union  select * from 表名,再把前面的1改成-2,就是查询不到东西进行,这时候我们在执行,就能获取我们想到的内容,查到另一个表的内容,他之前差的ueser,查到了这个eamils表里面的内容,其他表也包括管理员的表,就能查询到管理员的账户密码,这也是我们常说的sql注入能得到管理员账号的密码的原因。

 

 拿到网站上测试一下,只限于这个sql注入,他其实呢就是通过一个参数的传递,传递出一个数据过去,而传递到拼接到之前定义好的sql语句,由于它能够拼接,他就将一些恶意sql语句拼接上去,来实现这个恶意sql语句的执行效果,比如想查询其他表中的数据都是可以的,只需要sql语句一个拼接,把能实现目标的代码拼接到参数上去,相等于就出现了新的写法,前面的不变后面有增加过来的能实现目标的语句。那么其实就是,就是实现目标,要查询的恶意sql语句通过这个参数,传递到原有的sql语句中,来实现自定义的一个查询。

sql注入的条件,首先要有变量刚刚那个代码里面有一个变量id,如果没有变量id=111是个死值,sql语句就不能进行操作,不能进行操作就不能执行。

第二个条件就是要一个可控变量,即使它有上面的这个变量,但是没有下图的框框里面的代码,没有这个id的解释,这个id不知道怎么来的,又或者这串代码$i=11,是已经写死的也不可以更改,所以还需要一个可控变量。

 还需要代入数据库查询,假如语句语句写好了,但是如果不执行这个语句,没有这个mysql——query语句也不行,就只是拼接上去了但没有执行,还需要代入进去才可以。这个和上面的条件缺一不可。

 第三种情况,变量为存在过滤或者过滤不严谨,如果有严谨的过滤就不能,进行sql注入,如果不严谨就可能绕过。

基本上产生注入要么就是没过滤或者过滤不严谨,换句话来说要是过滤很严谨就相当于没有入点,而对sql注入的防护就是添加上严谨的过滤。

 这个回答123就会,4虽然可能有post注入但还没有学习,为什么2也在里面是因为我在有自己默认访问的文件,2看上去是www.xiaodi8.com/?id=10  实际上是www.xiaodi8.com/index.php?id=10,这但是sql注入的常识。

 图上这个题目主要原因就是参数x是注入点,随意注入语and1=1要在x后面,前面怎么样都无所谓。

sql实战注入-注意事项,首先要确定注入点,不能写错对方了,以下图中网站做假设是id为注入点,所以应该在id。后面加上注入语,比如id=53 and 1=1,或者把id换到尾部再加上and1=1还是一样的。

 接下来就开始第一个知识点了

在这里插入图片描述

信息收集,这个信息收集和前面讲的是两码事,这个信息收集是收集数据库的操作系统,数据库名,数据库用户,数据库版本,对应的网站路径等等,这个网站路径是什么意思呢,就是这个网站有一个源码,这个源码是放在服务器的哪个盘符里面,那我们这种路径就是盘符的一种情况,比如说是d盘还是别的系统里面的别的存储盘(我叫不上名字)。就是这个网站的源码存放在计算机的那种盘,盘符里面,什么目录就这个意思。还有这数据库用户,这个用户不是计算机用户,是管理数据库的用户,用来管理,他跟我们网站管理员那种一样,数据库用户是专门用来管理数据库的他的账户密码跟网站管理员的不一样,跟计算机的也不一样,他是只管理数据库的,网站管理员的账户和密码是网站自身的,他也是数据中的一员,但它不是用来管理数据库的。数据库名就是名字,数据版本就是版本编号。这是第一件事,

我们mysql注入分为两种情况,一直是数据注入,一种是高权限注入,今天我们先了解一下数据注入,前期注入的时候涉及到信息搜集那些,搜集的那些信息都是有作用的,这里是同数据库下面有一个跨库,同数据下又分为低版本和高版本,去别的方法大概就是以5.0为分割线,,如果是低版本它的注入方式是暴力查询或者结合读取查询,如果是高版本的话他会借助叫informationschema进行有据查询,有据查询的意思的意思就是有根据的查询不是 自己随便乱查,那暴力查询就是我们常说的暴力破解随缘,没有根据的随便搞,搞出来就有搞不出来就算了,查数据库版本查询就是为我们后续用何种查询方式做铺垫,版本过低用暴力的,版本过高用有据的,这不是可以随便选择的,必须用对应哪一种,。查数据库的操作系统,是因为Windows操作和Linux操纵是不一样的,linux操纵系统区分大小的,如果不查数据库操作系统,就会因为一个大小写出错所以是很有必要的。数据库的名字也要知道,如果不知道查询过程中数据库的名字也会有问题,数据库用户就判定是否为高权限,信息收集就是为了方便我们用何种方式进行数据注入,又用何种方式进行注入的一些扩展,如果数据库用户是高权限我渗透的思路就比较多,如果权限比较低的话,就可能刚刚说的那样,就只能用一种,或者一两种,这个数据库版本在刚刚已经体现出来了,低版本和高版本的区别。而这里有一个叫网站目录的其他信息,这个网站路径是用来干嘛的,很简单就是帮助文件读写的,文件读写必须加上一个网站路径,都谁接谁解哪一个,所以前期信息搜集好才能为后期操作做准备。几乎所有漏洞测试前期都要信息搜集,信息搜集决定了思路用哪些方法,知道接下来能干嘛,哪些方法东西能操作,那些东西不能操作,如果前期信息搜集比较好,选择方案比较多的话,肯定会选择最优的方案,最快最有效的方案。比如mysql种我们已经知道了注入点,注入点中有文件读写,我们就可以直接写一个后门文件上去直接获取权限,这是我们最想要的方案,这个有前提条件,得知道网站路径,写到哪个路径里面去,第二个是高权限,数据库用户决定能不能采用这种方案,不能采用就舍弃掉,有这种权限的话就不需要进行sql注入就可以直接文件读写获取权限。

mysql数据分为数据a,数据b,数据c,然后数据a就对应网站a,网站a下面有表名a,表名a下面有列名a,列名a下面就是数据,我们想获取数据,就要先获取数据库名在获取表名然后在获取列名,获取之后才能去获取数据,就这样循序渐进。

判断注入的点方法,老方法加上and 1=1返回正常 and1=2返回不正常,就是可能存在sql注入点,

老方法判断的原理,所有这些都有个逻辑运算符,或 or  且 and  非xor,在运算符里面

真且真=真,真且假=假,通过返回的网站界面是否一样来判断可能存在注入点,不用或的原因是真或真=真,真或假=真没有办法判断,不论后面写什么都是真的,哪怕写个or1=西瓜都是真的返回正常网站。判断可能存在的原理就是我能进行拼接and1=1就是正常的但是and1=2就是假的会返回一个错误的网页,这时候我们就改变了网页的语句,能拼接上,能带入他的数据库查询语句里面去,没有过滤掉不要,如果没有注入点直接不叼你输入什么都不搭理你,根本不代入数据库查询 。判断注入点应该随便输,思维多变,他不得去查一下显示错误。而显示404之后跳转到别的网站,这种是有检测,大部分是没有错误的。

mysql必懂知识点,

在mysql5.0以上版本中,MySQL存在一个自带数据库名为Information_schema,它是一个存储记录所有数据名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名。在5.0版本之前因为没有这个表只能靠猜,所以为什么高低版本的方法不同。

数据库中”.“代表下一级,如xiao.user表示xiao数据库下的user表名

 information_schema.schemata 记录所有的数据库名

3.information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名

 

 通过,这个手段来获取我们上面所需要收集的信息。由于版本是5.7高于5.0是高版本就可以使用informationschema有据查询,

查询到了这个网站的表

也可以写为http://219.153.49.228:43123/new_list.php?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’ 搜搜的结果是一样的。
where是条件的意思,这句语法的意思要查询nformation_schema.tables中表名是table_name的信息条件是数据库名是mozhe。。。;结果查询到表名在查询列名

 http://219.153.49.228:43123/new_list.php?id=-1 union select 1,column_name,3,4 from information_schema.columns where table_name=‘StormGroup_member’。

语法跟上面的意思差不多,只不过查询的column_name

结果

 

 知道列名的信息就可以查询指定列的信息了

http://219.153.49.228:43123/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member 

 下面出现的那串md5加密的的root密码。加解密一下就可以获得密码。

这就是有个简单mysql数据库的sql注入思路,先获取数据库名,在获取所在的表名,之后就是列名,知道了列名之后就可以知道自己要查询什么信息了,在查询到所需要的信息,就可以啦。这个只是mysql数据库的不是别的数据库的。

mysql注入,

在这里插入图片描述

 这个是对知识点的一些补充,这节开始讲高权限注入,这个高权限注入是和数据库用户有关系的,这个网站是否有高权限注入的条件,是通过这个数据库用户判断的。比如我们进入上期的测试网站还是第二关,里面看一下这个的用户

 root用户在这个mysql数据库用户群权限里面属于这个最高权限的用户,除root用户之外都是普通用户,也就是说这个注入点的话它是一个root权限注入点,这个root权限注入点由什么决定呢,他的决定因素实在程序源码中决定的,

 一般我们操纵数据库之前要先进入数据库里面去,之后再去sql语句对数据库操纵,这个数据库是看不到的一般会写在上面的那个包含文件里面,看看数据库配置文件里面用来连接数据库的时候采用的是什么数据库用户,这里变量数据没有显示是因为他有包含文件,打开包含文件看看。

 也就是说他在操作这个数据库的时候是通过登陆账户为root的用户去连接的这个数据库,当前他享有的权限就是对应的账户的权限,用那个用户去登陆就有哪些权限,非root就是普通权限,root就是高权限。

 在搭建网站的时候每一个网站都有一个对应的数据库用户,假如现在是数据库用户啊有一个tebles a ,数据库用户b有一个tebles b 来控制,数据库用户c就用一个tabiels c来控制,因为网站a是用数据据用户a去连接数据库的,而这个用户只能去操作自己网站的数据,而不能去操作b网站和c网站的数据,但如果是用root用户链接的话,因为他的个高权限他是你操作b数据和c数据库的就是我们说的跨库,就相当与通过a网站来查询b网站数据,c网站数据,这样子不仅是给我们渗透思路提供了其他的,也给这个攻击带了一些全方位的攻击, 假如你的网站是很安全的但是和另一个网站放在一起假如另一个网站存在注入漏洞还是用root用户去链接的,那么另一个网站就会间接的影响到你的网站。用root链接进来和普通用户链接进来看见的数据库但是不一样,root用户可以看见所有数据库而普通用户只能看到自己管理的数据,比如数据库用户a,就只能看到数据库a管理数据库a不能管理别的,权限也是没有root全面的。如果是root用户的都可以注入到其他数据库就相当于跨库注入,语句跨越了当前网站的数据库,在来到网站上看看网站的数据库叫什么

但是在这个服务器还有其他的网站,比如下面这个网站

而我们的测试网站是一个用root用户连接的高权限用户,而下面这个网站刚好又和上面的网站放在同一个数据库里面,这时候我们就可以通过上一个网站的注入攻击到下面的网站数据库数据出来,实行到这样一个网站,实战上来就是我们说的,一个网站注入点影响到另外一个网站的数据,我们就设想一下我们想攻击的网站,这个网站的目标的获取不了,就通过一些查询手段查到还有其他网站,一般的其他和他都在同一个服务器上,就是同一个数据库里面,这两个网站数据都是放在mysql,另外一个网站有注入点刚好是root,我们就可以通过另一个网站注入点注入到目标位置的数据,得到目标的数据在转换到目网站渗透测试,跨库测试就是这么一个实际范围。跨库注入的前提条件是root权限,代码中的连接用户所决定的。

这里说一下闲话,想查询到mysql数据库里面的全部数据库名必须是root性注入点才可以,这时候想要获取到网站所对应的数据库就要是root性注入点才可以,然后再去获取位置网站数据库对应的表名,列名,数据这样慢慢来,跟上面的查询方式是差不多的,那些必懂知识点都用的上,想要跨库注入就要先查询到网站对应的数据库名,

演示一下通过靶场来跨库注入qqyw的网站

上面已经查到了那个网站的数据库叫做security,

information_schema.schemata 记录所有表名信息的数据库名,先用这个语句来获取所数据库名字,在筛选一下有没有跟那个qqyw网站类似的数据库名,判断一下是不是。

 这里在schema_name写的是group_concat(schema_name),意思是所有的信息,打开网站的源码详细观看,可能看不全,

 这里如果不是测试网站的时候,肯定不知道网站对应那个数据库,而数据库名有特别多,该怎么办,要么就通过这个命名结构,网站的命名跟数据库密码肯定有点联系的来判断一下,如果判断不出来,那就全都查出来用工具去跑一下。下一步获取qqyw对应的表名

知道是那个数据库之后就添加上数据库为条件查询,然后查出寻出所有的表名,结果里面那个admin就很明显的账户密码所在的表格,通过账户密码的表都会以admin,usernama去命名,这是通常的。 找到了要找的表名下一步就是要找的列名,条件也变成了表名是admin的。但是这时候admin是比较常见的一个命名,查询条件只有admin的话会把别的数据库里面的admin表的列名也查询出来,所以这时候我们现需要再加上一个条件and table_schema="qqyw"指定qqyw数据库的。

 这样子去查就不会查到别的数据库的admi的表,查到的只有qqyw数据库里面的admin表的列名,这时就能开始获取信息

写qqyw.admin的原因和上面一样就是避免查到别的数据库里面去,主要原因当前是在这个网站注入点,所以注入的是这个网站所对应的数据库,并不是目标位置的数据库,所以需要我们手动指令条件选择一下数据库, 这时候就已经获取到了账户和密码都是admin。

文件读写操作

文件读写会用到mysql里面内置的两个函数,这两个函数是mysql数据库特有的,在其他数据库里面是没有这个东西的,或者说有这个东西写法也不一样,这也是为什么注入d也是分数据库的一部分原因,就是因为每一个数据库内置的安全机制和功能都不一样,就导致我们在攻击的时候针对不同的数据库采取的思路也不一样,mysql数据库中有类似文件读取的操作函数,我们可以调用这个函数来进行攻击的.

load_file();  读取文件

into outfile()或into dompfile();   导出文件    演示一下

 就会读取

 文件写入,这时候去看d盘目录,

 写入文件成功啦这就。这个读取对我们渗透的意义呢,读取的话有一个读取敏感信息模板在cnsd一搜就有,一般会读取这些敏感信息的文件,那个模板里面一般都是windows,linux敏感文件,大部分都是读取的位置配置文件,通过这个配置文件,能读取网站的真实路径,这个网站能便于你对网站的搭建平台,搭建服务器上面的一些信息的收集,有一些或者直接读取了第三方软件登陆密码,可以用这个密码去尝试控制服务器,读一些文件都是有讲究的不是随便乱读, 读的情况分为两种的,第一种呢是系统自带的或者第三方软件的,这种路径一般是固定的路径,比如这个系统自带的,在某个盘符或者某个路径,就有一些默认的路径,不需要我们知道网站路径,还有一种可能性这个网站路径是随机的,

 我们用工具扫出来了这个敏感文件,但我们没有办法知道前面的路径,所以直接访问是访问不到这个文件的,展现出来的页面的源码和要读取的文件的源码完全不一样,我们读文件一般分两种一种是读服务器默认的一些文件,敏感文件这种,还有一种不固定的路径随即路径,比如说这个网站路径,Windows的可能放在c盘或者d盘,盘符里面又有一些目录,我们是不知道,我们还需要获取爬服的目录信息,这就涉及到了路径的获取发送,新的知识点

可以去百度搜一个模板常见的load_fiel()敏感信息路径,去根据上面提供的信息。

路径常见获取方法。

可以去百度搜一个模板常见的

报错显示,遗留文件,漏洞报错,平台配置文件,爆破等。

先演示一下报错显示,

 那些下面都显示出来了路口,在那个盘符里面,

 打开看看是什么

 home之后带上的就是路径,可以在网站上随便打错误信息但是概率不大,还是用工具扫或者自己去手动测测试靠谱一点。

遗留文件

遗留文件一般类似于我们说的phpinfo这个文件,这个文件是站长为了调制,我们所说的类似与软件或者平台上面的搭建文件,所遗留的文件,就是站长自己看,但是这个文件里面呢会泄露网站路径,经常有些网站就有,就像php网站,他的命名就是phpinfo.php   ,info.php ,php.php等,这个可以用扫描工具扫描到的,不用太纠结,用扫描工具扫到类似名字的时候不妨去看一下。在谷歌浏览器用inurl:phpinfo.php  搜索一下试试看看,有没有这类的网站打开看一下,下图就是一个有遗留文件的网站。

根目录就在这里,这是我们针对遗留文件的一种方法。

漏洞报错

zblog就有爆路径的方法,就直接百度搜就可以,然后根据百度上的方法去一步步操作就可以测试一些有的网站,没有的当然测试不到,还有phpmyadmin也有爆路径,一般爆破方法就是直接访问它对应的文件地址,一般就会爆出这个路径。

平台配置文件

这个要配合前面说过的文件读取了,通过读取文件来读取位置的配置文件,就是我们说的搭建平台的配置文件,配置文件里面有网站的信息包括这个网站的储存路径,就会有网站的配置我文件,这个文件就会不太好,因为它是根据环境决定就是说这个路径,需要我们用一些默认的路径去读取,如果不是这个默认路径就很难的能去找到这个配置文件了,在那个模板里面就有

 配置文件的确定就是他的路径不是固定的,可以随便换个地方放置就不能依靠默认路径去读取,只能是碰碰运气。他也是一种方法,但不是很实在,不是很实用。

爆破

这个是我们实在不知道这个路径,也不知道怎么着了,这时候我们就按常规思路去爆破,就是一些网站的常见路径,因为有一些人搭建网站的时候,比如说这个Windows上面,经常就这样去d盘wwwroot/假如说这个网站是xiaodi8就在跟上xiaodi8这个是域名也是他的网站路径,如果是linux,他可能会采用默认的路径/var/www/xiaodi8,他是有一些常见的这种情况,需要自己尝试去爆破,一个一个去尝试,这说没办法的时候,这时实在没啥办法的才这样操作的。前三种是最重要的,用工具扫描一般会有很多错误。

扫出来了就这样使用。 

 如果在这个过程读取的不和写为c://两个斜杠的格式就是告诉不转换,这就是一个确实的文件,让他去读,然后去查看源码就可与获取到完整的信息

 写入操作的话就是很简单的,就是和这个网站地址直接挂钩的,这个写入就不像是读取对网站的配置文件,系统的默认文件方便对网站有更好的理解啊,但是写入的话不需要这些东西,一般的就是写入一些代码,直接写一个后门上去,就相当于直接写一个后门上去,上传后门的意义就相当于直接去拿下了网站的控制权,实战的情况我们拼接上去大多数都是一句话控制代码,像我们之前用过的菜刀去拿下。

 就相当于我们获取了网站权限,不需要获取账户密码下一步,这个文件写入就能一步到位。

写入的时候会出现各种各样的问题,其中一个存在魔术引号的过滤,这个是最常见的过滤,是我们php内置的一个安全机制的开关,我们称为魔术引号,他的名字叫magic_quotes_gpc  ,这个开启后会对单引号‘  双引号“  反斜线/ 与null等字符 进行一个强制转义,演示一下,

存在的话,我们可以用编码或者反字节去绕过,编码就是利用16进制编码,对这个路径进行编码,凡是他有那个符合进行编码,16进制编码一些路径,演示一下还是可以正常打开的。

相关的防护方案,自带防御,魔术引号,魔术引号这个就是对一些符号的防御,但是这个是被编码绕过的,或者一些不需要特殊引号的代码,这时最低级的,一般搞这个的都知道这个,绕过也不再话下。 内置函数 int等  才用的比较多的,刚刚用的那个开关就是给内置函数,比如这个php里面的,我们打开测试网站的php源码,它上面是没有过滤的详情往上翻,我们要采用内置函数过滤掉话,比如用is_int 这个过滤字符型,只要数字传递,其他的都过滤掉或者报错,写法 if(is_int($id)

){},如下图索斯

 还要把下面ehco的那个没过滤直接拼接的语句删掉为好,为好,再去是试一下测试网站因为需要用到union拼接不是数字,直接网页显示你是个jj吧。这就是一种很常见的过滤,判断类型很难绕过的,我们必须要写一些字符的才能注入,不可能纯数字注入,所以特别难绕过,绕过不了!直接跑不要回头幻想注入了。实战情况不多,网站为了兼容有些id会有字符,他的写法不会针对某个参数,是全方面的,站长在搭建网站的时候为了方便会配一个全局配置文件,会针对参数过滤,但参数是多种多样的,里面的参数不只有id还有比的东西,别的参数就很可能涉及到字符,如果那样点对点链接,正常访问也会被拦下,这个网站就没有意义了,第二种情况以及确定好了参数只有数字没有字符,才会这样高。站长为了方便会全局配置文件,只要该一下全局配置文件,便于自己后期该开发,只要修改一下全局配置文件就行。红蓝对抗的时候找到漏洞点可以针对漏洞点过滤。

自定义关键字过滤,这也是一种常见的过滤方式,这就偏于全局,每个漏洞在利用的时候都有特殊的关键字,关键字就会形成和木马一样,有自己的指纹,自己的特点,就可与对这个关键字收集,waf里面就经常这样,下图就是一个关键字select的绕过,

 在访问测试网站显示出来的语句就变成了fuck,这个要绕过的要看代码的严谨成度,这个就没有大小写区分,就可以换成大写绕过,要大小写也区分的话就要写上正则表达式,这个要看程序员关键字过滤有没有写好,写好了绕不过,写不好有可能,根据实际情况所决定的。除了这两个最多的即使安全防护软件,像安全狗啊,云盾,宝塔,安骑士,360防护软件,乱七八糟的大部分都是过滤关键字, 接受变量的值通过判断关键字有没有触发规则,像杀毒软件有木马特点的文件就会判断他是个木马。

只是扩展,waf绕过更改提交方式,他可能只针某一种提交方法什么的数据,换一种方法就可能,比如说安全狗不会去过滤,钻它防护软件的漏洞。大小写混合,加解密的都是为了打乱这个关键字,让这个关键字更复杂,防止他被安全库里面给识别到,注释符混用也是一样的,比如等价符替换,select换成另一个同样功能的符,刚好不在那个关键字里面就可以绕过,特殊字符混用也是为了打乱匹配规则,用一些特殊符号可能会影响软件对信息的接受用正规来讲,比如select,有一些东西混上去可以接收到selec那个t接收不到或者接收不到,但这个语句实行的时候又可以识别到就这样绕过,防止它提取到完整的数据,撞上这个规则拦截。借助数据库特性,每个数据库在sql语句去写的时候,sql语句写法是多种多样,可以用多种方法写,条目都不太一样,也可能刚好不在关键字里面绕过去了。http参数污染,垃圾数据溢出,垃圾数据溢出把数据写十万个一万个,由于工具在接受的时候都有饱和值,就像我们说的漏洞溢出,比如说接收数据的时候,一个文本文件有尼玛一个g,一个g你还打开什么,这个打开电脑都他妈崩了,防护软件抓数据的时候,把那个数据写了一万个字符,他匹配匹配,匹配一千个字符,就饱和了,不匹配了,摆烂了,谁爱干谁干去了,t去了,它没那么我们那么只能,直接到后面匹配需要的关键字,而是一个一个去匹配,它匹配到一个恶心的不匹配了,你绕过了刚好这个关键字又可以带入到sql语句里面,就饶过了。这只是提一下,当扩展知识吧。

学完之后要有自己的思路,不能完全模仿。

这里再说一下,MySQL数据库低版本的就是低于5.0的,暴力查询查这个表名列名就是靠猜,就用爆破用字典去跑,还是用读取配合,就是用load_file,去读取到当地注入文件,就可与读到数据,就会涉及到列名和一些东西,基本上是root就可以直接进行文件写入,都不会去读取他是比较尴尬的,低版本大概就是自己找一个列名表名字段,自己去跑,现在很少碰到低版本了。国内的低版本都用的比国外快,破解了直接用,国外都要花钱,国内很难碰到了。

第十四天,提交方法和数据类型。

简要参数类型,包括数字,字符,搜索型,json等

简要明确的请求方法,包括,GET, POST ,COOKIE ,REQUEST ,HHTP头

sql语句存在的干扰符合  ‘单引号  “ 双引号  )括号  }中括号等,具体需要看写法。

先说一下参数型,下面这个就是典型的数字型参数,数字1,没有别的字符,

 在sql语句里面字符串会被误解为内置函数或者类似语句,但是sql识别不出来他是个什么就只能报错,这时候加上’ 字符串’ 单引号括起来这样的符合,才能正常执行

因为这样有时候就会出现下面的问题,这就要在意符号问题,根据网站类型的参数后面的值判定注入的时候是否需要考虑符号的问题。

 

 这个网站参数是数字就可能不存在这个单引号,可能,对方也可以在数字上面加单引号,看对方

 

 我们在后面加上and1=1没有任何作用因为会被符号给括起来,前提要把符号避开掉,sql语句在搜索的时候,

?x=xiaodi
select * from user where name like ’%xiaodi%’    

 这个是网站里面sql语句搜索写法,他会在前面后门加上通配符%,去搜索的时候前面带xiaodi的后面带xiaodi的都搜的出来,所以常规语句会这样写,去注入的时候就是相当于在前面字符串的基础上又多了一个%,注入的时候要过滤掉单引号百分号,不然全都在那个符号里面,网站一些实际的应用,规定他一些参数类型的语句必须要用单引号或者其他符号括起来的,程序开发里面数字不需要括起来,但是字符必须用单引号或双引号括起来这样才是一个字符串,不然会误解为内置函数等,搜索功能的语句必定会有单引号或双引号,写法不是唯一的大部分会那样写,还有其他的写法,

?x=xiaodi
select * from user where name nama= (’xiaodi’) 

这时候就要把括号也过滤掉,如果知道这个特殊符号是什么需要我们自己去尝试出来,因为种类不是很多,相关的注入工具就有大量的字典,自己去测试的话要知道几种常见的类型。  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值