web,sql注入之二次,加解密,dns注入等(17)

这是注入扩展里面的, 

我们来看一下加解密,进入测试靶场

 登陆一下,抓一下数据包

 base64解码

 解出来就是admin,%3D是=

其实就是说在cookie这个值里面就有username=admin这个加密值,那如果是我们正常的碰到这么一个数据包,应该在上面下面都要测试,这里不是实战,原则来讲这是cookie注入,把注入语句写在cookie这里,看一下界面返回值

 这个注入点和常规注入点又有点不一样,后的面是加密的,就属于我们要讲到的加解密,这个东西是加密值,如果按照我们常规的来讲的话就直接在后面加上and 1=1注入语句去测试注入点,但是这里有加解密的话我们要测试注入点的话,

 就需要base64加密好,就要按照这个加密好的语句去注入,这才是这个网站的正确写法,测试注入点的方法,写加密语句就是因为它代码里面会base64解密一次,如果还用and1=1就是会被解密一次,前面是base64密文,这。。。传出来是什么东西啊,肯定有问题。

常规注入的话,加解密就是多了一层按照他的加密方式去提交。

我们在实战的的时候遇见一些网站的后面是加密的值,我们常规的就是and 1=1这是肯定测试不出来的啊,我们就要去按照网站的加密方式去解密一下,知道是什么解密方式,把他的原始值还原出来,再按照他的加密方式对原始值‘and 1=1--+进行加密后的密文代入到后面开始测试的可不可能存在注入点,跟正常的操作一样,只是要加密一下。这就是加解密的实际应用。

一般常用的就是base64,也可能采用其他的吗,其他的可以解密出来就是直接操纵,解密不出来那就没办法,他的参数值都是加密的,如果不搞出来他的加密算法即使有注入点也无法攻击。

加密在实际应用各种漏洞测试基本上都有。

二次注入

这个二次注入,和前面讲到那些注入有一些小的区别,而是产生的地方区别,从查询方式我们可以根据网站的应用功能判断他是何种查询方式,还有其他的,但是他们但是在注入的原则什么进行一些编译,比如说提交方式,查询方式,参数类型等一些的不同,但这个二次注入,有不同是无法通过扫描工具或代码自己手工去测试出来的,只能从网站源代码里面才能发现二次注入漏洞,从前端或黑盒测试是看不到这种漏洞的,有也找不到,这也是它的特点,请添加图片描述

 二次注入的原理,先将参数1’进行插入,会把它进行转义插入到数据库里面,数据库里面呢在取出插入的字符拼接到sql语句上面去形成一个注入,可以理解为第一步是把攻击语句写好放在某个地方,第二步就是网站会调用拼接这个语句形成一个新语句,相当于之前写的语句就拼接上去了执行处sql注入的1效果,这个注入效果就是这么产生的。

二次注入不一样的地方,在这个过程钟插入这个数据后,你在黑盒测试的时候,就是没有源代码的光靠扫描测试和我们人工的去判断,是不知道该插入什么东西,也不知道怎么去触发这个漏洞。

打开测试网站演示一下post登录框&二次注入

 二次注入一般就产生在有这种页面的地方,有这种数据互联的,什么叫数据互联,涉想一下注册一个账号之后就可以登陆这个账号密码,同样道理注册完还可以修改密码,在这个过程钟会有一个东西不断调用,注册完之后会说hello用户名,有这么一个信息,就是有一个注册信息当做一个用户的身份,修改密码也是,比如修改xiaodi的密码,是修改xiaodi这个用户的密码,他不可能修改到其他用户密码去,这个数据过程中呢有一个数据作为条件,登陆谁的修改谁的,我们试想一下,注册用户的时候会用到插入语句insert,会用到这个语句写法,更改密码就是更改数据update这个语句,这个语句又要更改的东西后门跟着更改的条件,这个条件其实就是我们刚刚注册的用户的条件,比如以用户名位条件

#登录册界面,包含insert语句

---insert into news(id,url,text)values(2,’x’,’$t’)

#忘记密码,包含update语句

---upadte user set pwd=’$t’ where id=2 and username=’admin’

那如果我注册的用户是admin‘and1=1,那在更新数据的时候条件就是admin’and1=1‘处理一下干扰符合就相当于执行了and1=1测试注入了,这时候我们就可以联想到报错注入,这些语句就可以代入,进行这个报错注入,二次注入的原理就是这个样子。

加入数据库本来就有一个用户名叫admin,在注册一个就admin’#的用户名,这时候在修改用户名是admin‘#的用户的密码,而在源码里面执行语句就会是

这就#号注释掉了后面,前面的语句正常执行,就会把admin的密码修改了,这时候如果我们加上给报错注入语句,即使update报错注入了,但是实战情况下用户名会有长度限制,但是长度限制分为两种情况,一种是前端限制一种是后端限制,如果限制是后端的那没办法,前端的我们是可以突破的,这时候就会有出现一个问题怎么知道是不是前端限制,前端是htm里面的在数据库里面我们可以抓包修改前端的长度限制

 我们抓包,这个255改成我们需要的长度。

后端限制呢是写在php里面的,会接受用户名在php里面看这个长度有没有超限,他会做出操作,这种就无法突破了。

为什么说二次注入是需要配合代码,或者信息的时候对着去找到漏洞而不是扫描工具,确定是否有注入点首先要把这个注入语句写进去,但是试想一下这里是我知道触发它漏洞的时候是要配合,我知道他要取这个用户名的值做条件,但是在实战下面来,那些东西都是未知的,在实战中万一是数字型那个单引号还要不要加了,可能不会加,对方sql语句也会决定,我们编写这个注入语句的时候会存在多种写法,要去猜的,而且上面对方能触发都不知道,所以说这种二次注入呢,是通过扫描工具和人工判断出来的,扫描工具扫描不出来原因他不会像人那样思考,扫描工具就只测试一边有没有就没了,不会二次再看看思考。

二次注入是通过自己的人工或者没有这些代码这些信息是无法探针到这个注入点,二次注入普遍存在代码层面里面,有代码去挖的漏洞,网上这些二次注入但是cms开源的。不可能是工具跑出来的怎么样怎么样。

dnslog带外注入  演示

这个漏洞有满足条件,它需要对方的注入漏洞是个高权限,如果是mysql的话就是root权限,因为他这里会涉及到一个文件读取,dnslog注入要有文件读取的操作权限才能进行,那么这里都能进行文件读写了还要这个漏洞干嘛呢,是因为即使可以文件读写后门也不一定写的进去,因为在后续的渗透测试中发现即使后门写的上去也不见得一定就能连上去,还会有各种各样的问题,尽管问题出现的几率还不是很高,但会有这么一个情况,比如说你穿一个脚本上去他不解析,穿的后门也不无法链接。

这就要回到注入点里面来看一下其他信息,这也是为什么dns注入有些鸡肋的地方,就是他很多东西相互矛盾,他鸡肋的地方就是高权限,因为很多住点不是高权限,就无法引用了。

要dnslog注入先进入这个网站注册一个账号

 dns注入实在这个读取文件里面load_file是支持读取对外的读取,我们之前写读取文件读取d盘的内容就获取相应的内容,这个地址是本地址,dns注入他要读取的要把它放出去

这是我们正常的注入语句注入

 

 这个注入语句的含义,if后门如果是真就返回1如果是假就返回0,这个读取即使先读取查询的值sersion()  数据库版本然后和ceye给的dns地址做对比,在对比的时候就会尝试访问dns地址,ceye就会记录下来,然后返回到我们的个人账户里,

 获取到的想要的内容就返回到这里来。

这个注入过程是非常复杂的所以就有一款工具 

打开工具

 测试一下

 dnslog 加上解决盲注不能会先数据,效率低的问题,盲注是为了解决没有回显,这就告诉盲注也有可能不会回显,采用盲注的时候对方还是不能回显数据,这个时候这个dnslog注入就有他的注入了,主要应用在这个地方。

这个讲一下中转这个东西

如果说采用手工注入有些时候会遇见很麻烦的事情,拿加解密说一下比如我们在加解密的时候,要把语句进行加密,加密的话有两种方案解决第一种是把注入语句还原,完了之后注入的时候注入的工具有这个插件,写上一个加载加密插件,就可以直接在工具里面进行加密,就形成了一个把注入语句加密后上传上去,这是第一个,sqlmap是有        这个工具的

 这是第一个那没有这个工具的时候该怎么办,sqlmap这个工具强大,有自带的还可以二次开发的拓展性可以丰富这个工具。

今天要讲的是如果没有这个东西该怎么办,很简单,就需要开发技能,假如想在sqlmap实现base64的加解密,但是sqlmap没有,我们就写一个简单的php脚本,先在网上找一个可以测试的网站

 刚好就是base64的加密,加解密搞一下,把1 and1=1加密后直接替换掉MQ==,看返回的界面它会显示没有版权所有问题就可能是有过滤,再试试1 and1=12加密后直接替换MQ==,看它能不能返回节目,结果是可以

 那这里是我们要测试的点,

 这是先测试一下网站,看一下能不能正常访问这个test.php文件,

是可以的,就相当于把这个网站复制到了本地来,后面就是要进行注入的代码

这种就能实现个中转注入,

 这个x就是作为可以改变的参数,从x进行注入,写到x这里来,进行代入之后base64加密和网站拼接起来进行注入,.点号就代表他们拼接在一起,然后用file_get_contents去访问这个地址,很明显的中转注入就是在这个过程把注入参数中转一下,然后在发送到指定地址上面去,这个更多的告诉你如果遇到类似问题,没有这个插件,可以选择开发插件或者这个中转,都是可以的。

之后打开sqlmap开始攻击,

 

 结果是没有漏洞,这个是无所谓主要是为了演示一下这个过程,中转注入也可以用python去写,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值