- 博客(30)
- 收藏
- 关注
原创 python程序设计(2)
运行示例:请输入三个整数:-9,7,2中间数:2请输入三个整数:8,8,8中间数:8ls=[a,b,c] #列表ls.sort() #升序排序str=eval(input("请输入三个整数:")) #eval将用户输入的函数转成值a,b,c=strprint("中间数是{}".format(mid(a,b,c))) #格式化#输入的数必须以逗号相隔运行示例:输入x和n:2,3#判断n是否为奇数else:if n==1:return xif odd(n): #如果n为奇数。
2025-06-12 22:38:49
117
原创 DC3靶机渗透
可以发现这个区域能够写入 php 代码,此时可以联想,1.可以写一句话木马,然后通过蚁剑连接,2.进行 shell 反弹,此时我们可以先新建一个 shell.php 文件,然后写入反弹的 shell。可以通过 kali 内置的 john 工具进行解密,首先需要将密文保存在一个 txt 文件中。信息收集(ip、端口、目录、指纹信息)--->利用漏洞--->反弹---->提权。结合漏洞的文件名叫 42033.txt,查找这个文件所在的具体位置。通过对端口扫描,发现对外开放了 80 端口,然后进行访问。
2025-06-12 16:18:50
128
原创 逆向--进阶
pyc文件:是由Python文件经过编译后所生成的文件,它是一种字节码 byte code,因此我们直接查看就是乱码的,也对源码起到一定的保护作用,但是这种字节码byte code是可以反编译的rc4初始化介绍:1:初始化存储0-255字节的Sbox(其实就是一个数组)2:填充key到256个字节数组中称为Tbox(你输入的key不满256个字节则初始化到256个字节)3:交换s[i]与s[j] i 从0开始一直到255下标结束. j是 s[i]与T[i]组合得出的下标。
2025-06-10 19:33:16
664
原创 端午编程小游戏--艾草驱邪
刚刚过去的端午,参加了学校的一个活动,用python做了一个小游戏,当然这个小游戏还可以继续改进,可以加个bgm什么的......
2025-06-08 16:14:12
1413
原创 逆向入门(1)
本篇文章面向想入门逆向的新手小白。NSSCTF和BUUCTF是两个刷题网站,知识点下面会有对应的题,大家可以自己试着做一下base64与base64换表标准的base64加解密所用表是【ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/】刚好64个字符如果对标准表中的字符进行顺序替换,称之为base64换表对于标准表的base64,可以直接用编程语言提供的解密函数直接解密或者使用在线网站解密等。
2025-06-01 20:13:48
1083
原创 Re--题
首先是将ax清零,然后从数据段中拿出数据,向左偏移4,压入栈中,再清零ax,再从数据段中拿出数据,再向右偏移4,将栈中的数据拿出给bx,ax+bx,再拿ax与 (十六进制的17)23进行异或,最后的数据拿来和额外段的数据比较。假如flag的第一个字母是N,N的ASCII码值是78,78//17=4,所以s1是4,78%17=10,所以s2是10. 此时i=0,(s1+i)%34=4,add ax, bx:将 bx 寄存器的值加到 ax 寄存器中,由于 bx 是0,所以 ax 的值不变。
2025-05-30 12:39:09
912
原创 ida调试--练题
在 rc4_crypt 这里打下断点然后修改 v2 为 v1 , 修改 len 为 v1 的长度, 那么就可以得到解密后的明文了。rdx寄存器存储的是输入的明文的地址,需要把他修改为v1的地址。[SWPUCTF 2023 秋季新生赛]IDA动态调试。二.[SWPUCTF 2024 秋季新生赛]动态调试。然后返回源码窗口单步步过,再次进入v1。所以v2就是flag,点开v2。点开v1,shift+e导出。将rdx修改为v1的地址。随便下一个断点F9一下。
2025-05-30 12:18:22
400
原创 RE--Buu--刮开有奖
推测是将,v4 = ak1w,v5 = V1Ax,两个字符串base64加密。把这三部分拼接到一起得到flag{UJWP1jMp}。将这两部分进行base64解密。Shift+f12查找字符串。跟进sub_401000函数。sub_4010F0函数。看 byte_40783。Ctrl+x交叉引用。将伪代码转化为c语言。
2025-05-28 13:44:40
1154
原创 python学习--代码练习题(期末周)
例如 [1,2,0,2,1],[1,2,3,3,2,1],这样的数组都是对称数组。23.已知 a 的值为“hello”,b 的值为“world”,如何交换 a 和 b 的值,得到 a 的值为“world”,b 的值为”hello”25.如果有一个列表 a = [1,3,5,7,11],那么如何让它反转成 [11,7,5,3,1],并且取到奇数位值的数字 [1,5,11]27.找出列表 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 中最大值和最小值。
2025-05-27 21:27:45
508
4
原创 [ACTF新生赛2020]easyre
@的ASCII是{ 42, 70, 39, 34, 78, 44, 34, 40, 73, 63, 43, 64, 0 }将找到的字符在_data_start_数组中的索引加1。这是判断flag是否是ACTF{}的形式。Shift+f12找字符串。
2025-05-25 21:21:04
1101
原创 [SWPUCTF 2021 新生赛]简简单单的解密
函数的话大概率都是两个参数,一个是key 一个是keylen。首先根据原理我们可以看到会初始化一个256字节的数组。其次会将一个key也填充到数组中。附件下载完是python代码。看到256想到rc4。关于rc4的逆向技巧。
2025-05-23 20:28:52
349
原创 [鹏城杯 2022]baby_re
把arr[i]和key[i % 4]进行异或运算,得到解密后的字符。初始化key = {0x56, 0x57, 0x58, 0x59}调用 baby_xor 方法对输入的数组进行加密或解密。将libcreateso.so放到ida里面。但baby_xor()函数不知道。将apk后缀改为zip,解压缩。下面还有一个函数跟 key有关。把这两部分函数结合起来也就是。
2025-05-21 00:11:55
848
原创 [SWPUCTF 2021 新生赛]astJS
之前没见过json的逆向,就去查了查,然后发现这篇还是讲的比较详细的。附件下载完是json格式,看文章了解到现在绝大部分互联网前后端数据传输都是采用。将js代码放在浏览器的控制台运行得到flag。esgenerate 附件.json。附件是json,将其转化为js。在ubuntu中输入命令。
2025-05-20 20:22:46
707
原创 花指令--[HZNUCTF 2023 final]虽然他送了我玫瑰花
HZNUCTF 2023 final]虽然他送了我玫瑰花。将这段nop掉,这段就是垃圾代码,纯纯不让f5阻止分析。在做题过程中我会分析这是哪一类的花指令实现,参考。Nop掉之后在上面main出按p重新生成函数。逐一看,先点进sub_401080然后f5。点进xmmword_402170。然后看funcs_40117E。后期可以试着出花指令的题。shift+e提取数据。
2025-05-19 18:14:23
822
原创 花指令--知识点&练题
/ 使用 sizeof 获取密钥长度(不包括 '\0')w++) { // 使用 sizeof 获取 buf_data 长度。// 动态调整数组长度。// s[t] 是最后的密钥。这个题在这里是call loc_401206直接跳转到loc_401206。
2025-05-09 20:41:30
1288
原创 逆向练题(NSS)
这是一个8*8的迷宫,并且是三维的,但是puzzle里面又没有迷宫,就需要动调了。深度优先搜索(Depth-First Search)只有一个加密算法,但是存在多解的情况,采用DFS爆搜。看别人的wp说可以利用伪代码本身提供的逻辑来生成迷宫。这得先拖进010 upx改特征值的问题。[GHCTF 2024 新生赛]UP+[GDOUCTF 2023]润!看一下init和moving函数。本题是使用DFS解决多解的情况。改成upx 555058。魔改的Rc4,还进行了异或。先搜搜什么是DFS,
2025-05-09 20:38:17
1553
原创 androidso_re
这里是先进行DES加密,要拿到要拿到 key 和 iv。// 调用原方法并获取返回值。// Hook getkey 方法。// Hook getiv 方法。然后又进行了base64加密,最终与。把这喂给ai让ai了写js脚本。// 获取目标类的实例。看看inspect函数。在记事本中存为1.js。进一步跟进jni函数。
2025-05-08 21:05:02
356
原创 RSA(NSS练题)
k, k1, k2 = gmpy2.gcdext(e1, e2) # 这里k是gcd(e1,e2),k1和k2是系数(即a和b)txt给了 task1:e,n1,c1,n2,c2, task2:e,n,c, task3:n,e1,c1,e2,c2。print("gcd(e, p-1):", gmpy2.gcd(e, p - 1)) # 输出: 2。print("gcd(e, q-1):", gmpy2.gcd(e, q - 1)) # 输出: 2。
2025-05-08 21:02:09
1010
原创 re--[HDCTF 2023]double_code&[MoeCTF 2022]fake_key&[HNCTF 2022 WEEK3]Try2debugPlusPlus
alloc:%p 的日志输出在这里的作用是记录某个内存分配操作的结果。它可能是为了调试、日志记录或安全检查的目的。具体来说,它记录了 sub_1400110FA 函数分配的内存地址。所以我们跟进sub_14001F000函数。之后一直f8等到程序打印出新的key值。把exit nop掉,不然会退出。V5与 0x23 进行异或操作。这是delta值,写代码。Shift+e导出数据。
2025-04-24 22:08:59
1592
原创 dbg手动脱壳&攻防世界【crackme】
我们输入一个长度位42的字符串,然后让key叠加,然后与输入的字符串异或得到加密后的数据,也就是dword_402150。逻辑是v4与byte_402130进行异或,然后与数组dword_402150进行比较。当我们执行f9执行程序到断电位置的时候,就会来到popfd这个位置。可以看到this_is_not_flag刚好十六位。所以dword_402150是我们加密后的数据。硬件访问断点,双字,因为是32位。点击跳入新的十六进制窗口。攻防世界crackme。将程序拖进x32dbg。V4是我们输入的字符串。
2025-03-20 21:24:56
445
原创 [网鼎杯 2020 青龙组]jocker
这是一个异或,点进Buffer函数,与hahahaha_do_you_find_me?F7单步步过,到__Z7encryptPc,按u,将其转化为无定义。然后根据这个关系就可以得到这五个符号是跟哪个数异或了。然后omg函数里面的unk_4030C0函数。上面说了长度是24,所以我们随便输入24个a。逻辑是%tp&:这五个符号跟某个数进行异或。flag = [] # 初始化一个空列表。明白了逻辑关系也得到了数据,可以写代码了。这里还有个函数,一样按p,然后f5。看看wrong函数和omg函数。
2025-03-13 19:18:01
1405
原创 逆向的学习 #tea加密算法&动态调试&.net
此时,映射到内存以后.. 此时PE loader把返回的程序入口点给cpu的eip寄存器赋值,然后通知我们的cpu:“ 并且说:我映射完了,你可以执行了。与传统的.NET程序相比,AOT编译的程序无法直接通过反编译工具恢复为高级语言代码。首先PE loader装载我们的pe文件,读取我们pe文件的基地址和入口RVA地址(相对于基地址的偏移),并且读取相应节表结构的值,然后将我们的程序映射到内存。每次cpu读取指令到指令缓冲区,相应的eip寄存器的值增加,增加大小的就是读取指令的字节大小(也可以说是长度)。
2025-02-27 22:05:36
2174
原创 re练题 #NSS&BUU
flag+=chr(((((v8[i]>>24)&0xff)+86)^0x32)%128)##最后数据会大于128,所以保证下ASCII的范围。就得到了flaghgame{4ddit1on_is_a_rever5ible_0peration}输入uncompyle6 re1.pyc > re1.py。main函数的上面有一个sub_4010c0,点进去看看。把struct.pyc的这些内容复制到re.pyc。找到re1.pyc和struct.pyc。然后将re1.pyc另存为。将他们汇总输出得到flag。
2025-02-25 22:03:06
437
原创 re--Nssctf--练题
这个字符串的长度为36,但为了满足函数的要求(至少40个字符),我们假设它后面还有4个字符(虽然实际输入中可能不显示)。但是这并不是最终的结果,因为还要对阿拉伯数字-3,因为凯撒加密是对字符进行不断位移替换的,凯撒加密算法中出现了+3,所以要-3才能得出来密文。s = (nums[i * 2 + 1] << 4) + nums[i * 2] # 这里要注意运算符的优先级问题!a1 + 39指向的字符串是"7890____"(从第40个字符开始,假设后面有4个未显示的字符)。
2025-02-23 16:00:52
1698
原创 Linux动态调试 题目easy_Maze
首先在linux虚拟机中打开命令行,进入root模式后,然后输入命令apt-get -y install net-tools安装工具。由于需要虚拟机进行远程调试,所以需要把ida安装包下的一些文件转移到Linux的虚拟机里面。之后我们就进入了调试页面,因为要看迷宫的具体参数,所以可以查看一下在断点处v5的值。把linux虚拟机里面的程序拖到windows的ida中反编译。首先虚拟机一般是没有插件的,所以需要下载和ip地址有关的插件。就是linux_serve和64位的程序拖到虚拟机里面。
2025-02-23 15:47:11
165
原创 re入门#NSSCTF练题
sub_8048E24可能是某种数据处理函数,可能对v5[18]之后的字符串进行某种操作。如果用户输入的长度不是21,调用sub_804EAF0(0),可能是某种失败处理。login这个是在从E3开始的,所以要把struct中E3前的字节都复制过去。key0 = b'Flag{This_a_Flag}' #密钥。sub_8048AC2可能是某种数据处理函数,返回值存储到v0。sub_80481D0可能是将v0的值复制到v5[18]的位置。密钥v5=Flag{This_a_Flag}
2025-02-23 15:40:32
729
原创 安卓的初步学习#NSSCTF
1.[SWPUCTF 2022 新生赛]android下载好附件,压缩文件后发现是一个.apk文件那就直接jadx分析打开apk文件直接就看到了flag2.[SWPUCTF 2021 新生赛]easyapp50 4B 03 04是压缩包的文件头修改文件后缀为.zip然后再解压用jadx打开看到一串繁体中文 棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌这里有一个异或,key值为123456789分析程序知道,将flag与key值进行异或,得到这串繁体中文,反异或得到flaga='棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌'key =1
2025-02-23 15:31:15
492
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人