自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于添加IDA9.0到右键菜单打开

新建txt,写入以下内容,IDA9的64位和32位用的是一个Exe,这里路径需要用你自己的,注意保存时需要保存为.reg文件,且使用utf-16 le编码格式,不然使用中文会出现乱码情况。保存直接运行,效果如下。

2025-03-26 10:40:41 285

原创 逆向攻防世界CTF系列63-secret-string-400

调试可以发现,其实现原理是根据不同的Opcodes,进行特定的操作,而这些操作是通过js下的 eval() 来执行。发现这machine是虚拟机,一开始的loadcode这预加载列表的确有意义,但不是ascii码,所以看不懂,这些是字节码,用于给后面opcodes转化的,检查输入的关键字符Input在转换字节码后的代码里,不在这里。说到这里基本就可以理清了,opcodes函数把Loadcode中的预加载字符字节码转化为代码,然后才执行run,关键代码就在经过opcodes转化后的字节码中。

2024-12-24 17:11:21 971

原创 逆向攻防世界CTF系列62-toddler_regs

发现有flag,但是还有team[g_team_idx]和teamjnu[g_teamjnu_idx]跟踪即可。一开始没看懂,动态运行,发现,输入了23,也会过不去,然后直接把jz改成jnz保存,过了。学习到一个小技巧,看着很乱,然后有’0’和0,0应该是代表结尾/0,所以我们需要处理。然后到task2,跟进j_stage_2_real。g_team_idx是23,teamjnu是184。char team[64[7]也知道了是7个一组。选中teamshift+*这题应该还能动调解决。

2024-12-24 17:10:47 1194

原创 CTFshow-文件上传(Web151-170)

htaccess被称为超文本入口,此文件有多个功能,其中一个功能可以。

2024-12-18 20:03:21 1257

原创 CTFshow-php特性(Web125-150)

a[0])GET:?

2024-12-17 17:08:55 1386

原创 CTFshow-php特性(Web89-115)

preg_match当检测的变量是数组的时候会报错并返回0。而intval函数当传入的变量也是数组的时候,会返回1这里有个intval函数:获取变量的整数值。intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。得出pyload:?num[]=1?num[]=a。

2024-12-16 22:11:49 809

原创 CTFshow-文件包含(Web78-88,Web116,117)

前面的 file 参数用 php://filter/write=convert.base64-encode 来解码写入,这样文件的 die() 就会被 base64 过滤,这样 die() 函数就绕过了。nginx日志的默认路径为/var/log/nginx. ssh日志的默认路径为/var/log/auth.log SSH服务如果开启了日志记录功能,会将SSH的连接日志记录到SSH日志文件中(题目是nginx日志)日志文件包含的漏洞的利用条件是:日志路径已知,并且有可读权限。cuc qrv();

2024-12-14 18:59:16 608

原创 CTFshow-命令执行(Web118-122,124)

输入ls,cat 等脚本都不行,fuzz测试一下我们的payload一般是cat/nl等命令flag.php。flag.php我们可以用通配符代替??????。cat/nl等命令我们可以用Bash内置变量。环境变量PATH一般是/bin,题目路径PWD是。但是题目过滤了数字,无法使用切片。换一种方式获取字符。linux可以利用获得变量的最后几位(从最后开始获取),使用取反号时,任何字母等同于数字0。${IFS}可以,其他都不太行表示的就是PATH的最后一个字母和PWD。

2024-12-13 21:17:05 1105

原创 CTFshow-命令执行(Web58-77)

on line本题对于passthru,system等命令执行函数都禁用了。

2024-12-13 19:26:24 862

原创 逆向攻防世界CTF系列61-APK-逆向2

📝 最终接收的数据: CTF{7eb67b0bb4427e0b43b40b6042670b55}应该还有其它方法,我们接着往下看,其实是有输出flag的地方,我们按照逻辑也能逆向。仔细看看Main,再运行一下,发现需要连接,后面才能运行,因此我们先连接一下。text2已知,我们可以很容易的写出逆向代码。📩 收到数据: CTF{获取可执行文件的路径。📩 收到数据: 7e。📩 收到数据: b6。📩 收到数据: 7b。📩 收到数据: 0b。📩 收到数据: b4。📩 收到数据: 42。📩 收到数据: 7e。

2024-12-13 15:53:05 1090

原创 CTFshow-命令执行(Web41-57)

对比两者的源代码,我们发现,cat指令把flag.php的内容导出后依然遵循php的语法,那么没有echo语句,就无法显示,而tac指令将一切倒过来后:就不是php语句了,在html语句里就就会直接显示出来。

2024-12-13 11:16:52 900

原创 逆向攻防世界CTF系列60-The_Maya_Society

获取到正确的日期---------> md5加密后拼接.fluxfingers.net------------>后端服务器域名解析sub_55E622E018A4(dest)并返回正确的响应内容------------>传统base64解密----------->简单的逐位异或-------------->得到flag。v3,v4是长度,dest是v3+v4+1,然后是个strcat(dest, src);下面是md5的实现,md5的448和ABCD是发现这个算法的关键,下次要注意。

2024-12-13 10:18:34 1294

原创 逆向攻防世界CTF系列58-serial-150

可以到这,跟进rbp-200h和rbp-1F1h发现是输入得开头和结尾的字符,意思是加起来得是9Bh,那么最后一位得是9Bh-45h=56h。动态调试,main随便下个断点,慢慢F8,结果ret了,再调试慢慢看,发现一个cmp,是长度校验,后面输入16位的字符串。我们发现A45-A55中间是不被执行的,而且感觉出现了很多次,是否是花指令呢?可以参考我的这篇文章,0e8h是call的 意思,花指令常见的形式。处反汇编,一个指令错了,后面空间全部错误。当然花指令是可以去除的,因此有第二种方法。

2024-12-12 14:39:39 1003

原创 逆向攻防世界CTF系列57-babymips

跟进变量i和v5发现地址差4,这里就是将32位逐位异或32- i。32位无壳,IDA8.3打开不能反编译,使用7.5打开。跟进sub_4007F0。对其进行处理,再比较。

2024-12-12 09:55:43 670

原创 逆向攻防世界CTF系列56-easy_Maze

第二种方法GDB动态调试,首先看汇编代码,v5给了eax寄存器,那么有确定的内存位置就可以直接打印内存了,如果不知道v5放在哪里的话是没办法打印内存的。方法GDB动态调试,首先看汇编代码,v5给了eax寄存器,那么有确定的内存位置就可以直接打印内存了,如果不知道v5放在哪里的话是没办法打印内存的。根据上图的汇编地址,断点断在564793D24AB0即可:(这是别人的图,我自己找不到断掉,知道用./80dw命令显示rax寄存器即可,w是双字,d是整数打印。看出来终点是6,6,output里输出flag。

2024-12-11 20:29:48 763

原创 CTFshow-命令执行(Web29-40)

对比两者的源代码,我们发现,cat指令把flag.php的内容导出后依然遵循php的语法,那么没有echo语句,就无法显示,而tac指令将一切倒过来后:就不是php语句了,在html语句里就就会直接显示出来。

2024-12-11 16:42:30 1095

原创 逆向攻防世界CTF系列55-Replace

我猜前面是flag,试了输入flaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,验证了我的猜测。怎么推得flag没考虑清楚,下了几个断点调试一下,我猜测50,51,和后面那串字符都能被2*v4访问到。有点像将字母和数字映射到0开始,比如一个字符a,就将a的低4位和高四位分别映射在加起来。一开始是32h,后面是34h,66h…并且5d2151开始得是61h,39h,36h…a2可以猜到是长度,看汇编也行,必须是35,a1是输入,v5每次取出一个。16 * v6 + v7这个其实就是v5。

2024-12-11 16:03:02 321

原创 CTFshow-爆破(Web21-28)

抓包选则dic.zip里的字典爆破,记得添加前缀admin:答案admin:shark63burp里有一个自定义迭代器,可以设置前几部分,很好用。

2024-12-10 20:54:48 1466

原创 逆向攻防世界CTF系列53-notsequence

再回到这个场景,第一次是1,第二次是1 + 1 = 2,第三次是1 + 2 + 1 = 4,第四次。1+ 3 +3+1=8,想到杨辉三角,看一下图。1 << 0 == 1 ,1 << 1 == 2,1 << 2 == 4, 1 << 3 == 8, 都是2的次方,也就是说v3必须都是2的次方。再看上面的for,以v5为循环条件,v5=0 ,0,v5=1,0.1…i = 2 v3 = 1 while(19 > 1) {v4+=a1[每行开头下标 + 1]} 也就是每行的开头。跟进sub_80486CD。

2024-12-10 19:23:15 829

原创 逆向攻防世界CTF系列52-Newbie_calculations

所以如果while(-1)就循环100000000 - 1次,这里while(-a2),就循环100000000 - a2次。a的二进制表示为:0x00000000, v5 的二进制表示为:0xFFFFFFFE,故当v5的值减到0时,即整个循环会运行0xFFFFFFFE次,故a的值要减去0xFFFFFFFE值,然后最重要的一点来了,就是如果一直–的话,变量是有范围的,负数为它的补码表示,会有溢出现象产生,也就是说超过了这个范围负数就又会变成正数。C++代码抄过去写一遍就行。

2024-12-10 11:17:12 447

原创 CTFshow-信息收集(Web1-20)

花了599开会员,对了,租号可以找我便宜,价钱好说,

2024-12-10 09:33:05 1403

原创 软件漏洞印象

通过溢出漏洞,修改authenticated的值为0, 可以通过verify_password函数对输入的验证,输入8个任意字符,隐藏的第9个截断字符NULL,在内存中能够将authenticated中低字节1覆盖成0。对于已发现的软件漏洞 黑客会基于MetaSploit等工具,开发漏洞利用脚本,达到网络攻击、信息窃取等目的。软件厂商会对软件以打补丁的方式进行安全性升级,达 到修复漏洞的目的。在各类软件安全漏洞中,栈溢出漏洞是最常见、危害最大的漏洞之一。漏洞利用 vs. 漏洞修复。

2024-12-09 10:24:31 504

原创 逆向辅助工具

IDA的插件,写脚本的在逆向分析过程中,如果可以读取或修改二进制数据是非常有帮助的汇编指令,最左边的是指令地址,右边是汇编语句,中间则是汇编指令的16进制数据在获取数据之前,需要确定两个信息:想获取数据的单位大小以及地址here()函数可以获取当前光标所在的地址,再通过 idc.GetDisasm(ea)即可获取该地址处的汇编语句当知道一个地址时,便可以通过函数 idc.NextHead(ea)/idc.PrevHead(ea)来获取下一条指令/上一条指令。

2024-12-09 10:19:56 1572

原创 逆向攻防世界CTF系列51-easyre-xctf

还是错了,发现还有一块。upx,64位,脱壳。

2024-12-09 10:12:57 609

原创 攻防世界39-bug-CTFWeb

Manage要管理员权限,这题的关键那应该就在获取权限上,在外面的找回密码。打算先上传,然后改后缀试试,显示it is not a image。试了download,wirte,read,upload是有效的。dirsearch扫描无果,用sql注入测试失败,注册登录。发现分为两步,第一步提交信息,第二部修改密码。还是不太行,改后缀试试,最后不行再制作图片马。都不行,那可能是conten-type的问题。burp抓包看看,拿刚注册的账号密码试试。又不一样了,后缀是php5。不一样了,后缀是php5。

2024-12-08 17:47:11 872

原创 逆向攻防世界CTF系列50-testre.md

v28是长度也就是a4 ,v13是输入,看了下后面v26好像没有怎么用到,并且这里的逻辑好像是v13=input,v26=input^a,v26=input,其实v26改成了input而已,跟踪也知道这暗示是个假的。看这里,之前有一个fake,然后下面有一个58长度的字符串,下面有个64长度的(无用),结合v11[j] = v21 % 58;具体逻辑有点复杂,其实不用深究,看看下面,同样用不闪婚,直接过。如果想break,v12必须为0,~(*(_BYTE。跟进sub_400700。

2024-12-08 15:30:04 261

原创 反调试技术简介

反调试技术,即软件作者防止其他人对软件进行调试的技术,是一种软件安全保护技术,可以通过改变自己的正常执行路径、修改自身导致崩溃等操作,增加调试时间和复杂度反反调试技术:在代码运行期间动态修改代码,使其不能调用反调试检测功能。

2024-12-08 11:43:55 1706

原创 软件脱壳技术(手动脱壳教程)

手动脱壳教程在第二部分,下面是例子。

2024-12-08 11:40:33 2659

原创 逆向攻防世界CTF系列49-easyre-153.md

一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。在语句fpid=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的几乎完全相同,将要执行的下一条语句都是if(fpid<0)……创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。

2024-12-08 11:19:01 1434

原创 逆向攻防世界CTF系列48-Signin.md

一个整数一个余数你会发现这是把输入字符变成两个分开的十六进制存储起来,比如输入字符 ‘1’ ,它的整数是49,49除16的整数是3,余数是1,在byte_202010下标中分别对应3和1,构成的31就是字符 '1’的ASCII的十六进制形式,只不过是分开的十六进制,3 1 共两个字节。这个函数在加密和解密操作中特别有用,因为它允许将数值转换为可以在网络上传输或存储在文件中的格式。有了P、Q和E,我们就可以计算出欧拉函数,然后我们就可以通过欧拉函数φ(N)和公钥E计算出私钥D。) % v4,求v6。

2024-12-05 16:36:36 953

原创 逆向攻防世界CTF系列47-crazy

会头看这,应该是把输入赋值给a1+16和a1+48,然后把327a6c4304ad5938eaf0efb6cc3e53dc给了a1+80。丢入IDA并远程调试,随便输入,发现要32位长度,也跟踪到几个函数。到这逻辑理顺了,其实这题的难点主要在眼花缭乱的C++代码。首先满足32长度,然后对每一位^0x50,再加23。然后 ^ 0x13 + 11。判断长度和简单处理逻辑。

2024-12-04 20:47:21 652

原创 逆向攻防世界CTF系列46-key

中间肯定有个判断的过程,我们需要把在哪判断的地方找出来,那么之前有个wrong key,那里可能存在判断。但是没发现发现在哪(据说是v2),但在sub_D020C0跟踪到了是v5(ecx)就是在那个插入口判断了,然后输出了wrongkey,我们把如何判断的逻辑搞清楚应该就可以找出flag。其实就是这里,奈何如果是我想要解出的话可能还得看后面方法里的代码,或者猜,遇到这种题目要大胆试。彻底懵逼了,看大佬的wp,好像是需要创建一个flag文件的。到这其实我已经凌乱了,加上中午没休息,已经又困又累了。

2024-12-04 18:40:03 601

原创 逆向攻防世界CTF系列45-Windows_Reverse1

ASCII编码表里的可视字符就得是32往后了, 所以, byte_402FF8里凡是位于32以前的数统统都是迷惑项. 不会被索引到的,而这里0x00402FF8~0x00403017刚好是32个字符。也就是一开始是v4=a1-v1,v1为0,其实就是我们输入的第一个字符的位置,后面v1[v4]倒不如理解成v4[v1],v1会加加,就会遍历。这里V1作为地址和v4作为地址差值执行的是v1+v4的操作,因为数组a[b]本质就是在数组头地址a加上偏移量b来遍历数组的,v1一开始是0,v4是地址差。

2024-12-04 11:51:58 850

原创 逆向攻防世界CTF系列44-happyctf

不用关心这些乱七八糟的,其实都是对象,仔细看一下跟进第一个operator(add)是个C++风格的代码。

2024-12-04 10:17:13 571

原创 逆向攻防世界CTF系列43-gametime

每次运行到都不输出401A73处的东西,我一直怀疑是不是反调试或者混淆还是啥,而且会出现退出的情况,总之,这部分类似是让你了解游戏规则的训练,到下面这块是实战,根本反应不过来。出现s的时候按空格,m按m,x按x,但是后面会很快,而且会出现莫名其妙直接退出的情况,反应不过来。keypatch改完之后IDA动调,一直没反应,还是会退出,我不太明白?好,刚才已经理清楚逻辑,我们开始改,这时又有个问题,IDA的地址和OD不一样。做了好久,收获很多,参考了很多题解,这是比较适合初学者的。然后F9运行得flag。

2024-12-02 12:07:33 877

原创 逆向攻防世界CTF系列42-reverse_re3

回头看之前的if ( dword_202020[225 * dword_202AB0 + 15 * i + j] == 3 ) 这就是在找最初的起点,那么一切都可以理解了,要走三个迷宫,每个迷宫都有一个初始起点。因为是右移d,左边的是走过的,右边是未来要去的,那么可以推测,1代表的是走过的地方,3代表的是当前所在的地方(初始时,数组元素为3的地方,就。dword_202AB0一开始被赋值为0,可能也在计数最后要让它为2才能退出,也就是0,1,2三次才能退出。shift+e(注意这里踩坑了,要选导出C变量)

2024-12-01 21:16:27 527

原创 逆向攻防世界CTF系列41-EASYHOOK

现在程序流程就很明朗了,粗略来看程序流程是CreateFileA->(lpAddress里存的指令)WriteFile->sub_401240,但是在经过sub_401220()的处理以后,变成了CreateFileA->(lpAddress里存的指令)sub_401080->sub_401240。偏移地址=目标地址-当前地址-5(jmp和其后四位地址共占5个字节)。看题目是一个Hook类型的,第一次接触,虽然学过相关理论,可以看我的文章。这里犯了个错,不是-23而是0XE9,是JMP的机器码指令。

2024-11-18 22:28:54 625

原创 逆向攻防世界CTF系列40-ReverseMe-120

注意sub_401000main中只传了两个参数,但是跟进后发现四个(可能是隐式传递,放在寄存器里传递了),调试发现a4是输入长度,与最终的you_know_how_to_remove_junk_code比较的是v12(但是并没有被传入),开始怀疑是不是隐式传递了。_mm_xor_si128用于计算128位(16字节)的按位异或,然后通过v14控制循环结束的条件,可以看到v14增长的步长为16,而且通过上面得到的flag值解码得到的字符串为32个字节大小,正好是16的整数倍。

2024-11-18 17:22:07 1181

原创 代码混淆与反混淆(逆向工程)

在。

2024-11-18 11:12:18 2701

原创 Hook入门(逆向)

以x86为例,hook的原理是相同的,但是处理细节确是不同的以Ke,Nt,Zw开头的API,以及32位和64位系统下的API函数地址,入口处可修改的字节码数量可能是不同的,在处理时的细节上可能有所差异。没有一成不变的hook模板,需要用户在hook之前,自行调试,确认修改的字节无误。

2024-11-18 10:40:57 2697

javase(学习过程记录)

1基础全程,笔记(动态更新)

2022-09-19

空空如也

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

TA关注的人

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