目录
SQL注入之加解密注入
案列演示
SQL注入之堆叠注入
案列演示
SQL注入之加解密注入
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
案列演示
这里我们拿sql-libs的第二十一关来进行演示。
我们输入账号admin,密码admin点击提交。
出现如下页面。
他这里直接提示我们是一个Cookie注入,我们直接抓包数据分析:
如上图所示uname这个参数后面的数值是经过base64编码加密过的,我们可以解密来看一下:
是admin这个字符串,和我们之前输入的账号一样。
我们来看一下第二十一关的源代码:
可以看出我们通过cookie传入的参数会在后台被base64给解密一次,所以我们这里需要给我们注入的语句进行一次base64的编码,才可以进行sql注入。
我们构造如下语句去报错显示数据库名:
因为这里后台会base64解密一次,所以我们要先把这段话拿去进行一次base64加密处理才行。
我们从下图就可以看到这里通过一个加解密的报错注入爆出了数据库的库名。
这就是加解密注入,原理并不难懂,只是把我们原本的数据经过一次加解密的处理而已。
SQL注入之堆叠注入
在SQL中,分号 ;是用来表示一条sql语句的结束,试想一下我们在 ; 结束一个sql语句后面继续构造下一个语句 会不会一起执行?因此这个想法也就造就了堆叠注入。
而union injection(联合注入)也是将两条语句合并在一起 两者之间有什么区别?区别就在于union执行语句类型有限,可以用来执行查询语句,而堆叠注入可以执行的是任意语句 。
案列演示
我们这里拿sql-libs的第38关来做一个演示
我们来看一下第三十八关的源代码。
我们可以在原本的id=1'后面添加上一个;号来达到我们的堆叠注入。
这里我们做一个演示,假如我们这里事先知道了他这里三个字段的值为id,username,password,我们来对这三个值进行一个添加操作。
我们构造如下语句:
id=1%27;insert%20into%20users(id,username,password)%20values%20(%2722%27,%27mc%27,%27hello%27)--+
回显正常 ,说明语句成功执行了。
堆叠注入的原理比较简单,就是在执行语句后面添加一个;号后面跟上一些语句造成sql语句二次执行来爆破一些数据。