自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 C语言期末复习笔记

两个字节存放一个整数,最大十进制整数是65536,最小是-32768 他们的二进制是1111 1111 1111 1111 ||||| 1000 0000 0000 0000。math.h 语句:abs,fabs(绝对值),,pow(a,b)=a**b sqrt 开方。一个字节包含8个二进制位,能存放的最大十进制整数是255(2**8)最小是-128。描述算法的常用方法:自然语言,流程图,n-s图,伪代码和计算机语言。组成c程序的基本单位是 函数,函数组成是 函数首部和函数体。

2024-01-13 00:30:38 405 1

原创 密码学学习笔记(二)简单加密算法实现———rc4

第一步,对s表进行线性填充(s[0]=0,s[1]=1.....)一般为256字节。对称加密:加密解密采取相同密钥,通过分组密码和流密码实现。rc4属于对称加密算法中的流密码加密算法,密钥长度可变,面向字节操作。rc4以一个足够大的表s为基础,对密钥进行非线性变换,产生密钥流。通过s表为每一个密文生成一个伪随机数用来异或。第二步,使用初始密钥对k表进行初始化填充。分组密码:就是指先对明文进行分组,然后。第三步,使用k表对s表进行初始置换。梳理一下ctf遇到的加密算法。

2024-01-07 12:21:38 477 1

原创 [SUCTF2019]Akira_Homework 题解

这是笔者近期做的比较难的一道题,学到很多东西,写下wp模拟一下当时的思路。

2023-12-22 20:56:03 1038

原创 [FlareOn4]greek_to_me 题解

注意:python3无法发送字符类型信息,而转成byte类型又无法大于128。所以必须使用python2。下面是一段混乱的代码,上面v2取了40107c的地址,在下面异或加密,判断为smc。监听本地127.0.0.1 2222端口,接受一个char类型的参数buf。程序直接执行结束,显示失败字样。参数为v3,查看参数来源。循环后下断点,手动c分析。32位无壳,ida打开。试着打开程序发送一下。更改脚本遍历所有情况。

2023-12-19 17:21:09 361 1

原创 buuctf Dig the way 题解

我们能不能通过第二个函数|x+y|-|x|-|y|+2来得到0呢,巧妙的是,我们可以通过第一个函数交换两个函数指针所指向的函数(在栈上可以看出,函数2,3分别对应v8[7],v8[8])从而实现构造0。|x|+|y|+2-|x+y|这个式子当x,y大于零时,恒等于2。观察函数,发现在第三次循环时,赋值的对象是v8[3],超出了v8的范围,观察数据,发现v8[3]正好为v9。按照正常逻辑,第三次循环的函数返回值是|x|+|y|+2-|x+y|,这个式子恒大于0。可能猫腻出在上面的加密里,看一看循环的逻辑。

2023-12-12 11:29:11 392

原创 [XNUCA2018]Code_Interpreter 题解

7是mov,8也是mov,9是xor,10是or,default检查操作码是不是位于0-10,否则退出。打开code文件后将内容读入ptr,然后读入三个数字做处理。开头将三个数字读入outnum数组,并设置了三个值来操作数据。题目给了两个文件,一个是机器码,用vs打开。十个case,不同的运算,明显的vm特征。3,4,5,6分别是加减乘和向右的位运算。根据判断函数,式子的结果应该等于0。64位文件,无壳,直接ida启动。(这是我改过名后的样子,方便看)不知道在干嘛,看另一个程序。case2是简单的下标--

2023-12-10 00:09:49 424 1

原创 CRC校验

首先确定一个多项式形式是这样。假设发送的数据是11001100多项式为x^3+x+1;可根据多项式确定crc除数为1011。多项式的阶数为3,在原数据后加上三个0.

2023-12-07 23:51:05 372 1

原创 原码 反码 补码,补码的意义及由来

同时由于符号位的特性,如果设计电路识别符号位,电路的复杂程度更会大幅上升。如计算1-2时,将其转化为1+(-2)来计算,就同时优化掉了减法操作和对符号位的识别。4点往回走5个小时,时间就到了11(-1)点,这个过程可以看作4+(12-5)=11。由于符号位的存在,机器数10000101的真实值是-3,而不是形式值133。110取反,即111-110=001,为110的反码。按照补码的计算,反码加一,也即111-110+001,调换顺序,(8)所以这就是补码的来历,即凑出形似8-6的格式来完成减法的计算。

2023-12-06 00:08:11 611 1

原创 BUUCTF [SCTF2019]creakme 题解

这个函数是void类型,但是在反调试函数后有一个return,这会导致程序异常。有aes加密,追踪一下,发现是sub_4020d0内进行加密,base64在aes里。没法反编译,看汇编吧。v3+=40后变成了.sctf,继续在数据段往下看看,+=40后是.data 可见是数据段的名字。异或在取反,这里笔者本来想patch掉反调试函数后自动解密,不知为何patch后一片飘红。GetModuleHandleW函数返回指定模块的句柄,进入402320看看。这段代码是设置函数的栈帧和设置数据,为异常调试做准备。

2023-12-04 17:28:53 449

原创 base64隐写解密脚本

base64在加密时,二进制不足6位的地方以0代替,而在解密时这些空下的0如果被改为1也不会被读取,于是就可以隐藏信息。由于这样的隐藏位最多有四个,所以base64隐写需要很多条才能存储一句讯息。下面是解密脚本temp=''if a==3:temp+="0"elif a==2:temp+="00"elif a==1:if a == 3:flag=''flag=''ff=[1]*100。

2023-12-01 15:17:36 826 1

原创 [GWCTF 2019]babyvm 详解 (vm逆向 IDA结构体)

这是笔者做的第一道vm题,虽然相较于同类题题面很简单,但是在过程中收获了很多。

2023-11-27 19:04:18 953 1

原创 密码学--学习笔记(一)

密码学的英语单词是 Cryptograghy,是由希腊单词 Kryptos(隐藏)和 Graphin(写)派生出来的,最初代表的意思是用来隐秘的传递信息。隐藏和写就是隐写,在古典密码学的发展中就有一门称为隐写术的技术,比如说藏头诗就是一种隐写术。在《巨人的陨落》中,艾瑟尔和弟弟比利就是通过每隔两个单词就会加一个单词来作为加密后的密文,这也是隐写术的一个例子。隐写术发展到今天演变为数字水印技术,一般在文件中加一个标识信息(即数字水印),可以起到追踪溯源,防伪和版权保护的作用。

2023-11-26 00:27:09 473 1

原创 upx手动脱壳学习笔记

2. 加壳的程序在开始时,需要对寄存器进行push操作,在加密程序结束后(可以将壳看作一个加密程序) pop回寄存器的值。(任何的壳都有一个目的,让程序认为操作系统的环境是透明的,没有受到壳的阻挡。1(最简单)对rsp下断点,直接追踪到pop(原理:push将四个寄存器中的值进行压栈,rsp指向栈顶,故rsp寄存器的值会发生变化。而脱壳结束时的pop指令会使将四个寄存器中的值出栈,即复原了RSP。oep:orignal entry point:未加壳的程序的真正的入口点,是手动脱壳的目标。

2023-11-24 15:11:04 1488 1

原创 C语言小作业:简单计算器与更强的字符倒计时

相比个位数倒计时的实现,此代码实现了多位数倒计时(代码设置为十位数,理论上可以无限大),使用结构体和字符串拼接存储时间并打印。计算器代码尝试了异常处理函数,判断除零错误。代码将计算器和倒计时集成在一起,用函数封装。

2023-11-21 17:24:31 77 1

原创 c语言实现:学生管理系统

代码简单实现了以下几个功能:1.师生账号系统及完善的账号管理机制2.便捷的数据统计3.作业布置及提交系统4.验证码及格式检查机制。

2023-11-12 01:06:49 252 1

原创 脚本积累:使用angr符号化求解器爆破

【代码】脚本积累:使用angr符号化求解器爆破。

2023-10-24 19:36:05 64

原创 脚本积累:使用pwntools库进行爆破

【代码】脚本积累:使用pwntools库进行爆破。

2023-10-23 22:13:38 147

原创 base64魔改码表解密脚本

【代码】base64魔改码表解密脚本。

2023-10-10 11:29:40 331 1

原创 算法练习---熄灯问题

(3)对第1行中每盏点亮的灯,按下第2行对应的按钮,就可以熄灭第1行的全部灯。同样,按下第1、2、3、4、5列的按钮,可以熄灭前5列的灯。在上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵表示灯状态的改变。在下图中,第2行第3、5列的按钮都被按下,因此第2行、第4列的灯的状态就不改变。根据上面的讨论,一旦第一行确定,我们可以对2345行进行遍历找到解,即对于2345行的按压方式我们不关心,唯一的问题在于第一行的按压方法。0表示灯的初始状态是熄灭的,1表示灯的初始状态是点亮的。

2023-10-09 17:14:29 421 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除