自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jsp上手 & 知识总结

JSP页面主要是由**HTML语言**,**注释**,**Java代码块**,**指令标记**,J**SP动作标记**,等五个元素组成

2024-03-24 12:13:05 915

原创 配置tomcat环境,加载指定文件夹的问题解决

在学习javaee过程中,使用java spring的文件配置,由于刚刚开学,遇到困难还是挺多的,由于不怎么熟悉idea的文件配置,非常的折磨。其中关于配置tomcat,加载我们指定的web文件夹,网上的操作大多都与我实际情况遇到的有所不同,其实就那一个点,查找了博客十几篇也未曾谈及,有些谈及了,但是由于idea的界面改变,于是便发生了不同操作,遂记录于此,帮助一些和我遇到同样问题的人们。我使用的iead现在的版本是2023.3.4我们先new一个项目,这里我使用的是maven进行管理选择配置。

2024-03-21 09:28:49 764

原创 go语言-基础元素与结构的使用

切片就类似与c++中的STL中vector,是一个动态数组,它长度是不固定的,可以追加元素,在追加时可能使切片的容量增大, 但是需要注意的是切片是引用类型,例如:当你将一个切片赋值给另一个切片时,它们将引用同一个底层数组。在函数定义中,如果多个参数具有相同的类型,可以省略参数类型,并在最后一个参数上指定类型。参数由参数变量和参数变量的类型组成,参数变量可以省略,可以有一个参数,也可以有多个,也可以没有;在函数定义中,如果不需要使用参数的值,可以将参数名称省略,只保留参数类型。这种形式的参数被称为匿名参数。

2024-03-19 20:59:41 1179

原创 左值,右值,将亡值,左值引用,右值引用的归纳与辨析

对于引用在学习c++基础应该还是比较了解的所谓引用就是给一个存在的对象定义的别名,一个变量可以有多个引用,引用必须初始化,引用只能在初始化的时候引用一次,不能更改引用其他变量。这就是一个一对多的映射,相当于一个地址存在对应存在着多个映射,在不同的别名下,都能访问到这个位置。这就相当于对num取了一个别名叫a.这个引用也叫左值引用将亡值是右值的一种特殊类型,表示该右值即将被销毁或移动。通过使用将亡值,我们可以利用移动语义来避免不必要的复制操作,提高代码的效率。

2023-12-04 17:12:13 175

原创 std::move详解

在我们使用移动构造函数的时候,我们会用到move将我们的vec1从左值强制转换为右值。

2023-12-04 16:55:02 163

原创 关于typename与using typedef的使用归纳

对于定义别名我们或许很快能想到typedef,对我们的名称进行取别名,对于typedef的使用using也有对数据取别名的作用,其语法为在一般的使用上,using与typedef并没有很大的区别但是,对于定义别名上, typename 不支持给模板定义别名,而可以通过使用 using 来为一个模板定义别名在模板中我们常常见到使用using来对数据进行取别名,一般情况下对我们常常见到使用typedef来对其取别名。

2023-12-04 16:42:01 137

原创 构造函数相关知识

一种是我们常见的普通写法另一种就是初始化列表的使用使用构造函数初始化列表的是可以在对象创建时直接初始化成员变量,而不是在构造函数体内部进行赋值操作。这样可以提高效率,并且在某些情况下,还可以避免一些潜在的问题,比如 const 成员变量或引用类型成员变量的初始化。

2023-12-01 12:29:57 88

原创 c++命名空间(std::)

我们知道,在我们写大型项目的时候,可能需要合作,这个时候就可能出现,文件一中有一个swap函数,文件二中也有一个swap函数,当我们写主程序的时候,调用swap,那会调用哪个swap函数呢?为了解决像这样的问题,我们出现了命名空间在我们写代码的时候就写一个text1命名空间,里面放swap,再写一个text2命名空间里面再放另一个swap,在调用的时候,就不会出现冲突的问题了。

2023-11-24 14:59:10 91

原创 c++模板

模板,学习c++,只要深入一点,我们都会解接触到的,然而,就简单的函数模板来说,理解起来并不困难,但是随着深入的学习,我们会发现,c++就开始变成”天书”,各种组合让人难以理解,或者说,得花一些时间去分析才知道它到底是什么?刚开始学习c++的时候,当时因为学的比较浅,感觉和c的区别不是很大,就是多了一个面向对象而已,不过如此。

2023-11-22 22:32:51 46

原创 关于想下载python多个版本,但是环境要炸的问题

然而这就是问题的根源,因为这样的操作会自动设置环境变量,而不同的版本,有着不同的pip,Python.exe,从而使得我们的以前下载的模块寄掉。对于python,在做关于py打包的题目的时候,或者由于实际情况需要,需要安装多个python版本,但是我们直接进行安装多个版本,会出现环境炸的问题,pip,pycharm会出现不能用,库下载混乱等。这里找到我们先前安装的位置,针对Python版本,我们需要将下面三个的python.exe都改为我们刚下好的python版本。这里就是我们下载好的python内部。

2023-10-27 16:58:11 99

原创 关于博客问题

从现在起就准备把博客分一下类了,以后的打算是在CSDN上发布一些关于开发的博客,关于CTF与其知识点的归纳就放在我自己在github上搭的博客。准备就将两个分割开吧,不然两个方向都放,挺混乱的。

2023-10-15 15:48:15 47

原创 2023.9.22

记。

2023-09-22 12:37:59 61

原创 虎符CTF2022 —shellcode

我们进行动态调试,先准备手动脱壳的,脱的时候发现居然有反调试,准备动态调试将反调试的patch但是发现很难脱,脱了半天还在循环,可能太菜的原因(T _ T)。或者记下这个地址,我们使用IDA的附加调试,将IDA附加到程序上,因为程序运行到了打印字符 了,所以壳肯定是解开了。将程序放入X32DBGz中进行分析,我们按F9运行几次,我们就可以运行到我们的OPE之中了。进入之后,我们进行简单的分析可以发现,这个函数实现的是base64加密。看分析还是比较简单,就是将原本程序里面的两端提示,进行加密的。

2023-09-21 23:07:45 332

原创 解决关于QT报错“无法定位程序输入点”与“找不到dll”,文件的处理

我去网上查了好几个方法,都是说将dll文件放人exe文件夹下,但是这样治标不治本,每次创建文件,打包文件都需要这样得花费多少时间呀.所以,经过摸索我找到了本质的原因---编译工具不一造成的,MinGW路径没有放入环境变量里面.运行这个命令行程序,就能找到执行的地方在哪儿,然后将其添加进环境变量即可.出现这个的原因是没有将此文件路径加入环境变量中去。去搜索栏里面搜索我们的编译器,我们就可以找到其路径。将qt打包运行exe文件时,就会出现。成功产生下一个问题!这样就大功告成啦~~~

2023-09-18 12:33:15 1813 2

原创 2021长安杯学生组-snake

我们可以直接知道,游戏玩通关之后我们的flag会自动打印出来,但是这个函数中,其中关于值的,grid_mats这个数据是从外部传入的,我们可以猜测要么与wasd这中步骤数有关,要么与关卡数有关,要么与食物(身体长度有关)。做完之后,还是蛮有收获的,其实像这中游戏逆向等,大都那几个步骤,寻找关键函数,关键判断,然后通过patch,或者添加代码来让程序能快速的达到我们的目的。的时候,我们就会跳出这个循环,由此我们可以知道,这个循环就是我们移动过程的判定循环,这里我们patch关于v11的判断,将其变成≠。

2023-09-02 12:33:46 142

原创 花指令简单的总结

所谓花指令就是指程序中完全冗余,不影响程序功能却会对逆向工程产生干扰的指令。

2023-08-09 15:40:31 306

原创 2023 - *ctf- EZ_CODE

我们使用,powershell ISE(windous自带的的一个书写powershell脚本与4)打开这个代码,运行它,出现了Do you konw PWSH.(PWSH就是表示powershell的意思)这里出现了字符,但是在那一坨代码中是没有任何字符的,只有${},等等,是shell命令似的东西 ,这里我们就猜测是否有操作将字符作参数传入进去的。我们打开会发现是一些莫名的代码,如果能被称为代码的话,这个代码是混淆过后的powershell代码,拿到手其实是没什么思路的。出现这个即为调试成功。

2023-08-02 10:34:20 165

原创 2023-googleCTF-re-oldshool

本题叫用给出的用户名,逆向,写出注册机,来批量生成密码,50个用户名,50个密码。刚刚拿到手,还打开不了,一直报错说窗口有问题,后来摸索了好久才知道,需要调整终端大小才能适应。而且这道题也是用Ncurses从零实现了GUI的图形解密,就造成了代码巨多,主函数的代码就接近5000行,还不算其他函数,要准确的找到我们想要的函数是十分的不容易的。这到题如果代码量少一些的话,难度就相对没那么大了。

2023-07-30 15:51:47 564

原创 X87浮点指令的简单小结

x87指令集是用于处理浮点数运算的指令集,它是Intel 8087数学协处理器的指令集的扩展,后来成为x86处理器家族的一部分。x87指令集为浮点运算提供了硬件支持,包括浮点加减、乘除、取整等操作。在较新的x86处理器中,x87指令集被SSE(Streaming SIMD Extensions)和AVX(Advanced Vector Extensions)等更先进的浮点指令集所取代,但x87仍然兼容并在一些特定情况下使用。x87指令集的指令主要针对浮点数运算,它提供了高精度的浮点计算能力。

2023-07-29 19:49:02 1075

原创 Ferris proxy--Realworld CTF 2023(复现)

本题是rust写的TCP服务端与客户端数据交换,要求是逆向出协议进行解密。嗯,第一次逆向网络协议,再加上凶名鼎鼎的rust逆向,刚刚拿到手的时候,脑壳一片空白,就像这个表情😱。幸好通过研读大佬的wp之后,按照着wp的思路,照着走一遍之后,大致理清楚了这道题的加密思路。通过wireshark我们可以将server发送到clientd的数据提取出来通过分析我们可以得知,对于整个TCP流,是运用了rc4的加密方式,通过动态调试,我们可以调试出密钥为explorer。

2023-07-26 14:18:09 1354

原创 强网杯-2022-GameMaster(.NET+C#+提取文件+z3爆破)

分析下面的代码,可以知道,这部分实现的代码,就是根据我们的按键,施行对应的操作,其中Enter键和space键,对应的函数下都有deal和stand,hit键,如果简单的玩过一下这个游戏,我们很容易知道,这几个函数实现的功能就是进行输赢的判断和检测自己的金钱还有多少,游戏是否继续。我们可以找到一个MZ的头,我们将其前面的数据删除,然后将其加入dll的后缀,因为此文件是以dll文件的形式载入我们的程序的。这里我们可以发现,是读取了我们的附件所给的gamemesage里面的数据,读取到filestream,

2023-06-18 11:15:19 350

原创 [2019红帽杯]CHILDRE(c++逆向+函数调用约定+c++修饰符转换+异或+黑盒分析+爆破)

官方文档,大致可以知道这个函数的作用就是将我们的flag进行转换,转换成了c++函数模式。也就是说我们的flag就是outoutstring,这个函数的。了解之后,我们可以将未转换的outoutstring得出:?我们输入31个有序数据,12345ABCDEFGHIJKLMNOPQRSTUWXYZ,对于这一堆函数,我们进行动态调试,我们输入有序字母。通过这里,我们可以判断出我们的flag有着31位。进入这个函数,我们可以发现。

2023-06-14 09:50:40 541

原创 如何从0到1编写一个dll文件

本人小白一枚,由于刚刚开始接触dll,文件编写,苦于不知道如何进行编写,再加上对工具的不熟悉,查了很久的资料,经过了好几天的摸索,才勉勉强强掌握了一点点怎么写dll文件,这里就记录一下,如何编写我们的dll文件,然后成功的链接到我们的程序中去。对于编译dll文件,有两种,一种是使用我们强大的环境,vs ,另一种就是使用我们强大的编译器gcc。这里对于这两种方式进行简单的演示。

2023-06-05 18:37:31 1573

原创 2023 CTF国赛初赛(CISCN) re- ez_byte

我们跳到数据区,发现这个100%下面的,yes并没有在string窗口出现,我们按下x查询交叉引用,在执行yes之前,有个jmp指令,也就是说,按照程序执行是永远不好去到yes的地方的,也就是说,一定有什么操作,然后再跳到yes中去。在前面,我们分析了,对r12的操作,并没有直接出现在代码上,操作代码被隐藏了。为此,我们可以大致猜测就是运行程序,触发一个异常,然后通过此条转到想要操作的地方,进行操作,通过题目描述,应该就是嵌入了一堆字节码。我们查看判断跳入,yes的汇编,我们可以发现,

2023-05-30 20:13:23 1521

原创 2023-GUDOCTF-L!S!(bindiff的使用)

本题主要是运用了bindiff这个插件。对于处理两个源码的函数处理,和符号恢复有奇效

2023-04-18 00:14:20 636

原创 函数调用约定

对于函数调用约定,我们首先应该知道的是为什么产生函数调用约定?为什么要用函数约定?首先,我们在写函数时,我们可以知道的是像这样,我们很容易知道,函数的返回值是什么类型,有几个参数,以及参数是什么类型。对于我们的CPU来说,我们的C语言是先编译成机械码之后,我们CPU才能执行,但是,变成一条一条的机械码之后,我们的CPU怎么才能知道这个函数有几个参数,以及什么类型等等的问题呢?这个时候就需要我们的函数调用约定。

2023-04-06 21:14:50 79

原创 nu1L_2023招新题目--re部分

(本人过于菜,只能做出两道题目,re-checkin-rs,与n0th1ngG0)

2023-04-05 09:07:15 292

原创 C++基础知识总结

个人理解,对于c++的学习,就是c语言的延续,甚至可以说,c++包含了c语言,c语言的绝大多数都能被c++兼容。但是,本质的用处还是有些许区别的,c语言,主要面向的是过程,注重的是对于过程中每一步的操作,声明,以及顺序,这些步骤。而c++面向的是对象,(对象可以理解为对于我们现实生活的一种抽象,比如,人是对象,物品是对象),注重的是对于一种整体上的一种把控,对于整体上的操作与声明,强调对象各自需要做些什么事情,然后在分别进行实现。

2023-04-05 08:50:30 100

原创 C语言知识点总结

(用思维导图对基础知识进行了归纳,相对于用文章来写知识总结,我个人更喜欢用思维导图来写,写的时候,感觉用思维导图逻辑更加清楚,也更流畅。等有空了再写一个关于c语言学习的知识点总结吧)

2023-04-03 10:24:48 60

原创 csapp 第十二章 并发编程

什么是并发?我们可以这样理解就是同时运行,做多件事情,比如,我们在看剧的同时,吃着薯片,像这种,在时间上重叠的现象,就是并发、访问慢速i\o设备。访问慢速的i\o设备的时候,内核可以同时运行一些其他的数据,来等待。与人进行交互。我们一般打开电脑,都会同时运行好几个程序。服务器服务多个网络客户端。在多核机器上进行并行计算。多线程运行。

2023-03-31 21:20:27 99

原创 csapp 第十一章 网络编程

一个应用是由一个服务器进程和一个或者多个客户端进程组成。一对多的关系。这个模型的基本操作的基本模型就是:举个例子,当我们在去b站看视频,我们看到了一个比较吸引人的封面,想点进去一探究竟。我们点击视频,然后屏幕上播放视频这个过程就是我们客户端–服务器模型。1、客户端发送请求。就是我们点击视频,准备播放视频的请求。2、服务器处理请求。服务器(一个程序)接收我们要播放视频的请求,然后从库中取出这个视频。3、服务器发送响应。服务器把这个视频发送给我们。4、客户端处理响应。

2023-03-31 21:17:38 156

原创 csapp 第八章 异常控制流

异常(Exception)都是运行时的。编译时产生的不是异常,而是错误(Error)。异常分为四类:1,中断。2、陷阱。3、故障、4、终止。异步异常是用外部的设备,输入输出设备中的事件产生的。同步异常是执行一条指令的产物。

2023-03-31 21:16:07 105

原创 csapp 第七章 链接

正如其名 链接就是将各种代码和数据片段收集组合成一个整体的过程链接器的一个重要的用处就是进行分离编译。这样我们就不用将一个大型的项目写成一个非常大的源文件,我们可以将它分解许多小的部分。也就是说一个可以项目拆分,让不同的人负责不同的模块,进行分工。另一方面维护起来也更加方便,只需对相应模块进行调试和修改就行了。

2023-03-31 21:15:38 71

原创 csapp-第三章-程序的机器级表示

此时二维数组就可以看做一维数组的嵌套,一维数组必须声明其为什么数组,以表明其装载的数据是int还是char,表明其存储数据的大小,同理二维数组,一维数组的数组,使用里面的数组我们必须表明其大小,而一维数组的大小就是其有多少个数据,因此代表里层数组大小,也就是二维数组的列不能省略。结构体的所有组成部分都存放在内存的连续的区域内,指向结构体的指针是结构体第一个 字节的地址。在Linux系统中,栈随机化已经变成了标准行为,通过栈随机化使得栈的位置在程序每次运行时都有变化,以避免安全单一化。

2023-03-31 21:11:49 83

原创 csapp 第二章信息的表示和处理

如果我们学习过c语音可以知道,浮点数是有精度的,也就是说我们的数都是由无限逼近的数进行取舍的,也就是说,举个例子:5/2=2.5,在我们的计算机中这个2.5并不是准确的2.5,可能是2.49876765.有些时候可能我们会纳闷,有些时候计算机是进行的四舍五入,有些时候我们的计算机又进行的是直接抹除小数后面位数。二进制中,末尾为0的数为偶数。我们应该知道的是,在不同的计算机上,我们的一些数据的大小存储是不同的,比如,我们熟悉的int ,在不同的计算机上有的是占4个字节(大多数),有的计算机上占的是2个字节。

2023-03-31 21:09:35 54

原创 linux基础命令

关linux一些常用命令的总结

2023-03-31 20:58:34 45

原创 NKCTF-2023-RE-not_a_like

UPX头缺失,PY解包,RSA维纳攻击,RC4,base64

2023-03-31 20:44:28 604

原创 NKCTF-2023-RE-Baby_rust

简单的rust逆向

2023-03-31 20:25:16 617

原创 NKCTF202-RE-PMKF

NKCTF RE

2023-03-30 22:19:52 330

原创 NKCTF-2023-RE-try_decrypt_me

NKCTF--RE

2023-03-30 21:15:53 164

空空如也

空空如也

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

TA关注的人

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