自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法3--并查集

随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。

2024-07-21 18:29:13 810

原创 攻防世界 re新手模式

在VC++6.0中,char的1字节,short是2字节,int和long都是4字节,因此可以认为BYTE、WORD、DWORD定义的变量分别是1节,2字节,4字节。强行解释:导出的数组有2700项元素,恰好202020是675个元素,观察,2700/4=675,每个数据后面会有3个零,所以,数据每四位取一位。看if语句,根据i的不同,选择不同的数组,后面的2*i/3选择数组中的某一个元素,我们输入的是a1。二维字符数组写法:前一个是代表有几个字符串,后一个是每一个字符串长度,会在最后默认有\0。

2024-07-19 22:25:41 1017

原创 算法2--贪心算法

作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n

2024-07-16 23:16:04 1095

原创 算法1--数学基础

每组数据首先是一个正整数N(1

2024-07-15 23:29:48 202

原创 算法4--递推求解

有几个题,学校上课做过原题,就不写一遍了详见。

2024-07-15 22:27:12 862

原创 [UTCTF2020]babymips

水一篇32位c++写的,长得比较丑陋进入sub-401164函数V7的数据可以得到大概意思应该是异或那里相等V7传到形式参数a1里面我不知道他为什么没有后面那一半我知道了。

2024-07-14 23:01:49 220

原创 c++ learn six six six day

先是4和2做比较 4 / 2 = 2,符合密集的定义,继续往下走,2和10做比较,这时10 / 2 = 5,大于2,要符合插入的数最少,很明显把最小的那个值乘2再与最大值做比较可以做到插入的数最少,插入2 * 2 = 4,[4,2,4,10,1],以此类推,[4,2,4,8,10,1]->[4,2,4,8,10,2,1]->…->[4,2,4,8,10,8,4,2,1],计算一个插了多少个数就可以了,共插入5个数。n个学生使用两个积木制成的积木,m个学生使用三个积木制成的积木。

2024-07-11 22:09:47 209

原创 c++ learn five five day

我们查找每个元素+C第一次出现的下标和最后一次出现的下标,再让最后一次出现的下标-第一次出现的下标+1(用sum不断累加这个值),最后sum的值就是A-B数对的个数。设某点坐标x,y,则该点分值为 { x,y,10-x+1,10-y+1 } 取其中的最小值,对所有射中点求和即可。数学题,要求A,B,C每行每列都只出现一次,其实换个思路就知道整个3X3矩阵中A,B,C每个字母出现次数是固定的3次,于是求和直接判断就行了,剩下的那个字母就是要找出的值。三个数中两个数一样,找出另一个数,水题,直接比较即可。

2024-07-11 22:09:41 644

原创 c++ learn fourth day

我们可以从 1 遍历到 len−1,以第 𝑖i 个位置为分割线,统计 [0,i−1] 与 [i,len−1] 的 l 和 o 的个数,判断是否不相等,如果不相等,输出 i,然后退出即可。记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解一个状态,就将它的解保存下来,状态转移方程:dp[i]=max(a[i],dp[i-1]+a[i]),可以把前i-1的子段和看成一个整体,小于0就不要,大于0就加上。

2024-07-11 00:12:30 390

原创 c++ learn third day

分析:可以发现只要其中一个数组只有一个数,另一个数组存在两个或以上不同数即可满足条件,a数组最少有三个数,所以只要所有数不同为一个数即可分,将个数大于1的其中一个数放在一个数组里,若没有放第一个数就行,其他的放在另一个数组里即可满足条件。优先队列默认使用vector作为底层存储数据的容器,在vector上使用了堆算法将vector中的元素构造成堆的结构,所以其实我们就可以把它当作堆,凡是需要用堆的位置,都可以考虑优先队列。这时排序是动态的, 因为需要实时的最多组, 所以要用的优先队列(堆).

2024-07-09 23:53:15 904

原创 c++ learn second day

它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。问题,一开始用的字符数组,输入用的scanf,后来改的,还有头文件,用c++的。

2024-07-07 17:18:48 958 1

原创 c++ learn first day

超市里有 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5)n(1≤n≤10 5 ) 个寄包柜。每个寄包柜格子数量不一,第 i ii 个寄包柜有 a i ( 1 ≤ a i ≤ 1 0 5 ) a_i(1\le a_i\le10^5)a i (1≤a i ≤10 5) 个格子,不过我们并不知道各个 a i a_ia i的值。1 i j k:在第 i ii 个柜子的第 j jj 个格子存入物品 k ( 0 ≤ k ≤ 1 0 9 ) k(0\le k\le 10^9)k(0≤k≤10。

2024-07-06 23:18:00 935

原创 [V&N2020 公开赛]strangeCpp

根据12-15行的算法,加上上一张图里的dword_140021190 <= 14549743,可以穷举暴力破解出result里的值。看着挺奇怪的,然后想动调,出现了一点错误。然后观察,最开始有一堆数据,不知道干嘛的。对welcome中间的数据交叉引用发现。然后根据flag提示,找个网站md5加密。每天水一道题计划,打卡第三天。沉默,反思,不解,疑惑。

2024-07-06 23:13:27 200

原创 [V&N2020 公开赛]CSRe

查了后得知是NET混淆,就是一种防反编译的方法。

2024-07-06 00:12:38 200

原创 buuctf re 【瞌睡小都打开one】

他这个结果差一个花括号,比较容易修正。看到了长得像base64加密的东西。然后这是个base64解密函数。先打开,然后看关键函数。

2024-07-04 00:12:53 294

原创 程序设计实践

已知一个非递减有序的单链表,输入一个整数,在链表中查找,若找到,请删除这个整数,链表始终保持有序(若有多个,只删除第一个)。Roliygu曾经沉迷于SICP大半个学期,在沉迷期间,他对LISP语言的算术表达式很感兴趣,于是类比写出了一种后缀表达式。接下来的n行,每行一个后缀表达式,保证表达式合法,且不使用除四则运算之外的操作。有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的。

2024-06-16 22:55:11 1060

原创 HNCTF2022 REVERSE

不懂python,转成C语言char s[36];int i;s[0]='N';for(i=1;i

2024-06-02 20:55:06 342

原创 LitCTF2024

pythonEXE附件拖到和pyins一个目录下找到ezpy加后缀pyc在第一个文件里找一个文件看字节戳,复制打开ezre把ezpy 加上.pyc然后执行python3.11的用不了,去在线网站,用不了啊使用pycdc工具,严格来说无法还原为python文件,但能看到其源代码将pycdc.exe文件跟要还原的pyc文件放入同一个文件夹,在命令行输入命令可以在命令行显示pyc文件内的python源代码如果想要保存到一个文件中:先用在线网站吧。

2024-06-01 16:41:37 1080

原创 rust语言初识

Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。内存安全Rust 中的所有内存访问都经过了编译器的严格检查,并且在运行时不会出现空指针异常或数据竞争等问题。这意味着 Rust代码具有更高的可靠性和安全性,可以避免常见的安全漏洞。

2024-05-27 17:01:05 1127

原创 LitCTF2023

下面那个逗号,写的很迷,然后AI转了一下,emmm,人工智障,,。rc4加密,buf2是一个256字节的s盒,密钥是litctf。32位,盲猜有SMC,猜错了,用不到,阿巴阿巴。010 打开,第一行是空的,需要补齐,得到换的表以后,套了一个脚本就出来了。找了一个别的,要加一个中间变量。提示了python3.7版本。一个假的flag,再分析别的。把那个buf1转为十六进制。进入下面那个4015A0。4015220函数进入。里面有一个换表的函数。

2024-05-23 20:14:01 322

原创 re--SMC

SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。

2024-05-14 21:46:02 534

原创 汇编--栈和寄存器

CPU针对栈顶应该也有对应的寄存器记录,8086寄存器中有两个寄存器段地址寄存器SS以及偏移地址寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中,PUSH指令与性的时候从SS:SP中获取到栈顶的地址。这些寄存器名字分别是:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,ES,PSW。一个典型的CPU由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连,内部总线实现CPU内部各个器件之间的联系,而CPU于外设(主板上的其他器件)之间的联系则由外部总线连接。

2024-05-09 22:34:23 859

原创 buuctf re findKey

32位,ida打开f5,先不管呢winmain函数看看字符串进到flag那里,没法反编译。

2024-05-04 22:30:55 734

原创 A加密算法

例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。,因此可以准确的人工录入。

2024-05-01 22:54:13 1026

原创 buuctf re 45-48

环境中建立项目时,会产生.csproj文件,这是C#的工程文件,其中记录了与工程有关的相关信息,例如包含的文件,程序的版本,所生成的文件的类型和位置信息等。.csproj,是C#项目文件的扩展名,它是“C Sharp Project”的缩写。对所给进行sha1解密,在进行md5加密即可。base64的,困了,思路比较简单,有空说。这是一堆,仔细看,是个游戏。

2024-04-26 23:25:13 211 1

原创 buuctf 41-44

新表ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/应该是base64换表。有一个base64函数。看字符串应该也是换表吧。

2024-04-21 21:55:49 329

原创 buuctf re 37-40

先处理v4,然后v3,最后v5即可。进入下面那个400770函数。进入上面那个400686。长得好复杂啊不长得真高级。等以后心情好了再说吧。

2024-04-19 23:07:14 420

原创 buuctf re 33-36

此对象创建成功后此线程内核对象句柄(Handle)的引用计数是2, 2这个值包括:创建此线程的线程有一个计数,此线程自己也会有一个计数,此线程自身会在线程函数执行完毕后自动close其句柄也就是计数减一。注意,调用了CloseHandle(hThread)之后,hThread的值不会发生变化,因为这个值只是一个内核对象句柄表中的一个id而已,它只是间接的表示一个内核对象的句柄。如果将hThread值或者伪句柄值传入其他线程或者进程,实际操作的目标句柄可能是当前进程或线程也可能是未定义的。

2024-04-19 22:19:32 636

原创 buuctf re 29-32

可以不看那头疼的汇编φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)′。就..........离谱。

2024-04-18 22:57:26 341

原创 buuctf re 25-28

观察分析得到10次base64得到那个off6cc090进去发现·很长一串数,提取数据base64解密。v6 = m = c的e次方mod N。那个you found me交叉引用Ctl X(反编译不了好怪啊)经多次base64解码(怀疑ing)得到一个网址emmm没啥作用。看那个gmpz就想到前天rsa下载gmpy的那个找了半天没找到。加上那个pow函数(第二个)底数指数模推测rsa。shift +12查找拖到底。可以导出两个数组的数据。qmemcpy函数名。

2024-04-18 21:37:09 307 1

原创 buuctf re(21-24)

那个40100A函数进去有一个hash,得出有哈希加密。只有第六位不知道的话可以一个一个试0-9,a-z。看中间rotflag那个代码,有一个+13。(shift +f12查找flag也可)还有一个就是对后面那个270的一串MD5。发现没有a1[6],将上面转化为字符型。然后sha那个解密没有在线网站。所以第一次输入123321。进入400e28运气使然。加上flag{}就行了。一个个手算或者z3都行。0x8004u是标识符。找了解密的网站真难找啊。

2024-04-18 16:06:08 891

原创 knowledge

作为对真正术语像“双重DES”的嘲讽,半路杀出的术语“双重ROT13”、“ROT26”、“2ROT13”、以及玩笑性质的学术论文“关于2ROT13加密演算法”。因为套用ROT13到已经加密过的ROT13文字,将会打回原形;ROT13通常作用于MD5、flag等字符串上,而我们通常知道MD5的字符只有ABCDEF,其对应的ROT13就是“NOPQRS”,flag对应的就是“SYNT”。ROT13是凯撒的一种特例,当k=13,且只作用于大小写时,称之为ROT13,准确来讲他不能算是密码,而是编码,它没有密钥。

2024-04-17 22:56:09 271

原创 buuctf re

上述所说的算法安全性与大数分解有关,就体现在这了,我们反过来想,如果 p 和 q 选的很小,那对于 N 的求解将会变得非常简单,密码就容易被破译;所以说, E 和 N 是RSA加密的密钥,换句话说,E 和 N 的组合就是公钥,表示为公钥是(E,N)私钥:在已知密文的情况下,只要只要 D 和 N 这两个数,任何人都可以完成对解密的运算。所以说, D 和 N 是RSA解密的密钥,换句话说,D 和 N 的组合就是私钥,表示为私钥是(D,N)RSA的密文是对代表明文的数字 m 的 e 次方对 N 求余的结果。

2024-04-16 22:45:31 565

原创 HGAME2022

大概先左移,后右移,在异或,逆回去的话肯定先异或,然后就不太清楚了。那个&0xff不太明白,搜了一下。

2024-04-13 21:14:37 127

原创 HGAME2024 RE

所以就是左移4位=2的四次方=16与左移五位。用010打开把Ari改成upx,学一下思路。emm用ida打开发现蛮奇怪的。有一个什么信号异常,看汇编。先跳过这一部吧,以后再补。看*16,*32怪怪的。open,进入main。不是很懂这一堆的意思。进入1708那个函数。

2024-04-04 17:48:50 193 1

原创 HGAME 2024 week1

用16进制编辑器(此处为010)打开生产的文件夹下struck文件(与pyc在同一文件夹),复制前面8个字节(由于用PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。前四个字节为python编译的版本,后四个字节为时间戳。四个字节的magic number、四个字节的timestamp)打开文件夹里的一个.pyc文件取第一行数据用010插入到第一行。打开包名(无后缀名)的文件,把刚才复制的第一行信息添加到首行。添加好信息后,给该文件添加后缀..pyc.反编译py。

2024-02-01 20:08:21 391

原创 Re 河北科技大学第二届超会杯

shift +f12flag{we1c0m3_to_r3v3r5e_&$23_42q2}先脱壳upx-d然后有一个加密写脚本。

2024-01-23 12:42:52 361 1

原创 pip安装

安装pip install pyinstaller。

2023-12-27 23:13:03 334 1

原创 pycharm激活

③rand()函数生成的随机数是由一个特殊数经过特定公式生成的,这个特殊数通常称为”种子“,种子在每次开机后不变,故这种情况下生成的随机数组每次都一样。⑥srand()是用来重新设置随机数”种子“的,srand(time(0));①rand(),srand()需要头文件 ,time()需要头文件④所以我们希望种子数是随时变化的,这里就用到了每一秒值都会变化的time()函数。②rand()函数是用来生成随机数的函数,通常生成随机数范围为0~32767。

2023-12-21 20:52:05 393

原创 buuctf 挫折

2023/12/17不让粘贴。

2023-12-18 19:28:35 356

空空如也

空空如也

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

TA关注的人

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