算法分析&传输加密&数据格式&密文存储&代码混淆&逆向保护

数据在传输时会进行编码,为什么需要了解?
例:https://indialms.in/wfp_login.php?r_id=MQ== (base64编码)MQ==即为1
对方服务器可能会在接收的时候进行解码再带入
如果还按照原有的思路不对自己的PayLoad进行同样的编码的话,传入的东西就是不被识别的东西,测试就不会生效;比如上面网址id需要传入一个base64编码的1,如果直接传1的话,就不会被解析
正确的做法是:测试的时候对payload进行同样的加密或者编码信息提交;安全测试漏洞的时候,通常都会对数据修改增加提交测试,以正确的格式发送,才会被正确解析;

一、存储密码格式–应用对象

密码存储-Web&系统&三方应用
  1. web
  • zzzcms网站:admin/123456
    密码直接采用md5加密
  • dz3.2网站:admin/123456
    密码采用MD5加盐(salt:随机数串)的方式进行加密
    md5(md5(密码).salt) = 密文
    解密:密码的密文:salt
  • dz3.5网站:admin/12345
    密码采用类似AES、DES的加密算法进行加密(密匙,偏移量,填充,模式等);如果想要解密,需要知道上面的信息,才可尝试解密;
    $2y 10 10 10OtsSmawENczg1BLcQCEn5OdLqJC9GLiDrClwEUooNnn8b609DfJc.
    难度极大,建议遇到直接跳过
  1. 系统
  • Win:NTML加密方式
  • Linux:待查证
    注:目前大部分的解密方式都是碰撞式解密,不是算法的逆向的还原解密;
  1. 数据库
  • MySQL:mysql5加密算法
  1. 影响:安全后渗透测试

二、传输加密编码–发送回显

传输数据–编码型&加密型
  • 例: 博客登录
    抓包可以获取到传输的用户名和密码数据包
    登录的数据包为:admin 12345
    抓到的数据包进行了Md5加密:username=admin&password=e10adc3949ba59abbe56e057f20f883e

如果现在要进行密码的暴力破解
字典文件中:
账号的话不用变更格式,直接去替换username=的值就行
但是密码需要进行密码算法,保证和password=值同等的加密算法才行

  • 影响:漏洞探针(人为寻找漏洞去测试)

三、数据传输格式–统一格式

传输格式-常规&JSON&XML等
  • 例:博客登录
    通过抓包可以发现用户名和密码数据包的传参格式为text格式,btnPost=%E7%99%BB%E5%BD%95&username=admin and &password=e10adc3949ba59abbe56e057f20f883e&savedate=1
    有的数据包可能传参格式为Json:
    {

    btnPost:“%E7%99%BB%E5%BD%95”;
    username:“admin”;
    password:“e10adc3949ba59abbe56e057f20f883e and”;
    savedate:1;
    }
    或者为XML、HTML等,都可在Burp上一目了然
    这种测试时就需要对payLoad以同样的格式进行上传,否则就会无法解析

  • 影响:发送的话就会影响漏洞探针;回显过来如果不了解对应格式,会影响数据分析

四、代码特性混淆–开发语言

代码混淆-源代码加密&逆向保护
  • PHP /JS源码加密混淆
  • EXE、Jar代码保护,返逆向
    影响:代码审计、逆向破解

五、识别算法编码方法

  1. 看密文位数。比如MD5,固定为16位或32位
  2. 看密文特征。(数字,字母,大小写,符号等),例如上面Base64:就会有大小写;AES会有特殊符号$
  3. 看当前密文存在的地方(Web,数据库,操作系统等应用)

六、拓展

  1. 传输数据编码
  • BASE64 URL HEX ASCII
  • BASE64
    值由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,结尾通常由符号=
  • URL
    URL编码通常由数字"0-9"和字母"a-f"组成的字符串,大小写敏感,通常以%数字字母间隔
  • HEX
    HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,有0-9,A-F组成
  • ASCII
    ASCII编码是将128个字符进行进制数来表示,常见的ASCII码表大小规则0-9<A-Z<a-z
  1. 传输数据加密:同密码存储加密
  2. 传输数据格式:常规鬼字符串,JSON,XML等
  3. 密码存储加密:
  • MD5 SHA1 NTML AES DES RC4
  • MD5
    MD5值由32位或16位由数字0-9和字母a-f组成的字符串
  • SHA1
    SHA1这种加密的密文特征与MD5差不多,只不过位数为40位
  • NTML
    NTML这种加密是Windows的哈希密码,标准通讯安全协议
  • AES DES RC4
    三种均是非对称性加密算法,引入密钥,密文特征与Base64类似
  1. 代码混淆
  • JS前端代码加密
    • JS颜文字 jother JSFUCK
      • JS颜文字
        颜文字特征:一堆颜文字构成的JS代码,在F12中可直接解密执行
      • jother
        特征:只用"! + [] {}"这八个只读就能完成对任意字符串的编码,也可在F12中解密执行
      • JSFUCK
        特征:与jother很像,但是少了{ }
  • 后端代码混淆
    • PHP .NET JAVA
      • PHP
        乱码,头部有信息
      • .NET
        DLL封装代码文件,加保护
      • Java
        JAR&Class文件,加保护
    • 举例:加密平台 ZEND ILSpy IDEA
    • 应用场景:版权代码加密,开发特性,CTF比赛
  1. 特定应用- 数据库密文加密
    MySQL MSSQL Oracle Redis等
  2. 数据显示编码
    UTF-8 GBK2312等
  3. 拓展资源

七、意义

  1. 了解加密编码进制在安全测试中的存在
  2. 掌握常见的加密解密编码解码进制互转的操作
  3. 了解常见的加密解密编码解码进制互转的影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值