1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SQL注入漏洞测试(参数加密)

SQL注入漏洞测试(参数加密)

时间:2019-01-11 06:39:01

相关推荐

SQL注入漏洞测试(参数加密)

SQL注入漏洞测试(参数加密)

<此WEB业务环境对参数进行了AES加密,为了防止参数产生SQL注入,也是防止SQL注入产生的一种方法,但是这种方式就安全了么?1、掌握信息泄露的方式;2、了解AES加解密;3、了解PHP的基本语法;4、掌握手工SQL注入;5、了解MySQL数据库的结构;

环境

墨者靶场 SQL注入漏洞测试(参数加密)_数据库安全_在线靶场_墨者学院_专注于网络安全人才培养 ()攻击方式 手工注入

实现过程

直接上WebPathBrute开扫
扫描到泄露文件_下载进行解析

<?phpheader('content-type:text/html;charset=utf-8');require_once '../config.php';//解密过程function decode($data){$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','');$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));mcrypt_generic_deinit($td);mcrypt_module_close($td);if(substr(trim($data),-6)!=='_mozhe'){echo '<script>window.location.href="/index.php";</script>';}else{return substr(trim($data),0,strlen(trim($data))-6);}}$id=decode($_GET['id']);$sql="select id,title,content,time from notice where id=$id";$info=$link->query($sql);$arr=$info->fetch_assoc();?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>X公司HR系统V1.0</title><style>.body{width:600px;height:500px;margin:0 auto}.title{color:red;height:60px;line-height:60px;font-size:30px;font-weight:700;margin-top:75pt;border-bottom:2px solid red;text-align:center}.content,.title{margin:0 auto;width:600px;display:block}.content{height:30px;line-height:30px;font-size:18px;margin-top:40px;text-align:left;color:#828282}</style></head><body><div class="body"><div class="title"><?php echo $arr['title']?></div><div class="content"><?php echo $arr['content']?></div></body></html>

通过分析文件_解密参数

#分析得到:- #该参数先进行base64编码之后在进行AES加密- #因此先进行base64解码再进行AES解密- #AES加密模式[MCRYPT_MODE_CBC]AES加密位数[MCRYPT_RIJNDAEL_128] - #AES秘钥 [ydhaqPQnexoaDuW3] AES偏移值[]

AES解密链接:/aes

BASE64解密链接:/front-end/693/

(1)查看注入参数
(2)进行解密参数

#填充字符格式,并没有信息,就一个一个猜解,一直到与原有加密格式一样#填充格式:填充有六种:NoPadding, PKCS#5, PKCS#7, ISO 10126, ANSI X9.23和ZerosPadding- NoPadding- 顾名思义,就是不填充。缺点就是只能加密长为128bits倍数的信息,一般不会使用- PKCS#7 & PKCS#5- 缺几个字节就填几个缺的字节数。- eg. ... | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 |#注意:如果当前数据已经是128bits的倍数了也得要填充,否则无法解密- ZerosPadding#这里使用全部填充- 全部填充0x00,无论缺多少全部填充0x00,已经是128bits倍数仍要填充- eg. ... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |- ISO 10126- 最后一个字节是填充的字节数(包括最后一字节),其他全部填随机数- eg. ... | DD DD DD DD DD DD DD DD | DD DD DD DD 81 A6 23 04 |- ANSI X9.23- 跟ISO 10126很像,只不过ANSI X9.23其他字节填的都是0而不是随机数- eg. ... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 |-------------------------------------------------------------------------------------#如若不知道到填充格式、就使用猜解方式进行填充#最初的加密:ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09#这是第一遍base64解码时加密:eII8c3JeL0t0dxM7wb3Nzg==#依次用填充格式解密再还原与最初格式比对,若一样就是对的#猜解思路:#使用Pkcs7填充解密:1_mozhe#然后再加密:eII8c3JeL0t0dxM7wb3NztNOX1Ig7oIIz8pHX/FPBBw=#与第一遍base64解码对比:不一样#与最初加密参数对比:ZUlJOGMzSmVMMHQwZHhNN3diM056dE5PWDFJZzdvSUl6OHBIWC9GUEJCdz0= 不一样#依次猜解填充:#使用ZerosPadding填充解密:1_mozhe#然后加密:eII8c3JeL0t0dxM7wb3Nzg==#与第一遍base64解码对比:一样#与最初加密参数对比:ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09 一样

AES加密(3):AES加密模式与填充 - 知乎 ()

进行第一次base64解码
根据分析的参数AES解密
解密参数之后_进行手工注入测试

#注意密文方式一定要对应 #注意以原有的加密方式拼接字符进行注入#注意网站本身会进行解密文件,因此要将拼接的sql语句进行相应的加密

(1)拼接字符 and 1=1 ,以网站加密格式进行加密,替换URL加密参数
(2)基于错误注入测试
(3)构造sql语句猜解字段
依次猜解到第5个字段时

(4)测试字段位置回显
(5)构造sql语句查询当前数据库和当前用户
(6)使用union查询当前数据库名和数据库表
(7)使用union查询当前数据库表中字段名
统计字段数量 数据库字段序号从0开始查询字段名
(8)查询到我们所需要的库名,表名,字段名之后,select查询账号密码以及账号状态

#这里注意账号状态:在数据库中0为假,1为真

(9)MD5值解密密码,登录后台拿到flag

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。