自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BUUCTF第二十四、二十五题解题思路

分析:赋值v1,再将v1赋值v4,如果高字节与低字节异或为“f”和“g”(四个字节异或很有可能是“flag”),循环取出v1的四个字节与*((_BYTE *)&v4 + j % 4))异或。分析sub_400360发现该函数是strcmp,将v11与off_6CC090比较,如果非零,输出“You found me!无壳,32位,用32位IDA打开,打开后的main函数很短,可以找到一句“jmz _main_0”——跳转到 _main_0,说明真正的主函数是_main_0,跟进。

2024-02-22 20:41:18 1210

原创 BUUCTF第二十二、二十三题解题思路

打开了一个叫“flag”的文件,将值存入ptr,循环19次,如果i和1与运算结果不为0,输出ptr[i]左移i位的值,否则输出ptr[i]与i的乘积,我们发现这个题有两个文件,另一个txt文件应该就是输出的值,只需要将其中的值进行逆运算就可以得到flag。使用穷举法枚举a6可能的值,能猜出a6的值为1,正确的flag为flag{e165421110ba03099a1c039337}flag{e65421110ba03099a1c039337}在函数界面可以看到一个“flag”,跟进该函数。

2024-02-19 17:47:23 679

原创 BUUCTF第十九、二十题解题思路

分析代码:将字符串“Qsw3sj_lz4_Ujw@l”赋值给v12,用v2接收输入,进行判断(这里把ascll码转换成字符串可以看出整个if嵌套语句的条件能拼出ACTF{},与flag没有关系)。首先需要了解rsa加密:rsa加密是对明文的E次方后除以N后求余数的过程,N = p * q,其中p和q是两个大素数,而公钥是E和N的组合。根据L=lcm(p-1,q-1),算出L,再根据1 < D < L,E*D mod L = 1算出D,有了D和N,就可以对密文进行解密了。写一个脚本(需要安装rsa)

2024-02-17 17:58:48 786

原创 滴水逆向笔记(JCC)第一部分

最高位进位是指二进制数的最高位向前一位进1,最高位借位是指二进制数的最高位向前一位借1,例如80-81(十六进制下),其实就是1000 0000 - 1000 1111,运算可得结果为1111 1111 ,即FF。例如803(十六进制)是1000 0000 0011,它的PF值是1,804是1000 0000 0100,它的PF值是0。加法:若同符号数相加,而结果符号与之相反,则OF=1,否则OF=0;这里最高位就因为被后一位借1而小于减数的最高位,对前一位借1,因此FF的CF值就是1。

2024-02-06 19:38:49 809

原创 BUUCTF第十六、十七题解题思路

@”复制到v4中去,将输入的内容赋值给v6,如果v6的值不等于A、C、T、F、{、},返回0,将v7赋值给v5[0],将v8赋值给v5[1]、将v9赋值给v5[2],for循环11次,如果v4中字符串的一位不等于_data_start__中的一位-1,返回0。”,应该与flag有关,对其交叉引用找到函数进行反汇编得到伪代码。分析代码:将input1中的每一位替换得到code,再将code每一位与后一位异或,得到下面输出的code,写脚本解出input1就可以得到flag。先解压,得到可执行文件,查壳。

2024-02-06 18:12:41 506

原创 注入代码练习

这里的函数地址是要用之前得到的程序地址减去E9的地址。而E9的地址需要用E9在文件中的偏移量(偏移地址-第一个节的起始位置+1000+基址)在注入的过程中,我们通过call函数来调用要注入的程序,再通过jmp函数跳转回oep,call的硬编码是E8,jmp的硬编码是E9。注入是指通过修改PE文件地址的形式将一个程序插入到另一个程序中的过程。写入参数(包括Messagebox的参数,E8、E9以及函数地址)编写一个messagebox弹窗,作为练习用的注入程序。回车之后打开断点界面,就可以找到程序的地址。

2024-02-04 18:27:22 374

原创 BUUCTF第十二、十三、十四题解题思路

当(a1 + 4 * i)的值小于v6时,如果i自增后的值大于等于result,转到LABLE_13,分析一下这个函数:将(a1 + 4 * result)的值赋给v6,将a1,a2,i-1作为sub_4010F0函数的输入执行该函数,将a3的值赋给result,返回result的值。在if循环中,判断v7[0]+34与string[0]是否相等,v7[0]+34的值为U,则string[0]的值为U,判断v10与string[1]是否相等,v10= J,则string[1]=J。结果为base64加密。

2024-02-04 16:11:40 830

原创 PE文件解析器中打印PE文件的函数

由于使用了cout、hex函数,所以需要调用头文件<iostream>。

2024-02-02 14:49:24 310

原创 BUUCTF第十题SimpleRev以及第十一题JAVA逆向解密解题思路

之后是一个while循环嵌套if语句,v1接收输入值,v1为回车时跳出循环,v1为空格时v2自增(v2初始值为0),其他情况时,若v1的值在96到122(即`到z)之间时再进行if判断,若v1的值在64到90之间(即@到Z)之间时,进行运算(v1 - 39 - key[v3 % v5] + 97) % 26 + 97并赋值给str2[v2],v3自增。for循环10次,嵌套if结构,如果key[v3 % v5]大于64小于等于90,将key[v3 % v5] + 32的值赋给key[i],v3自增。

2024-02-02 09:52:48 1517

原创 PE解析器中的拉伸文件函数

【代码】PE解析器中的拉伸文件函数。

2024-01-31 18:58:04 365

原创 BUUCTF第八题reverse3、BUUCTF第九题不一样的flag解题思路

可能位于flag所在的函数,对其交叉引用并查看伪代码。分析伪代码可知,如果str2与Destination相等则输出flag正确,而Destinantion与v4的值相等,v4的值由函数sub_4110BE对v3、v14、str作用得来,所以要分析这个函数的作用。重点是v3的值,这样的字符串很像迷宫题,字符串一共有25个字符,则应该是5X5的排列方式,在文本文档里排一下序,可以得到一个类似迷宫的结构。可能有base64加密,另外我们注意到“right flag”这个字符串,交叉引用找到主函数,查看伪代码。

2024-01-30 20:42:03 494 1

原创 DOS头与NT头手动解析以及编写读取PE文件的函数

举个例子,根据PE头的结构,PE文件头部分的第一部分是DOS头,其第一个成员为e_magic,一共四个字节,则对应上图中的数据可知,e_magic的数据即为5A4D,同理,e_cdlp为0090,e_cp为0003......在该界面可以看到文件中全部文件指针的数据,我们对照DOS头和NT头的结构,可以将该结构体的每一个成员与对应的数据对应起来。PE头部分的解析可以由工具直接解析,但是新手初次接触PE文件时,可以尝试手动解析进行练习,加深印象。

2024-01-29 17:38:37 854

原创 BUUCTF第七题helloworld解题思路

android逆向与常规逆向在步骤上没有太大区别,思路都是通过检索字符串定位具体函数,再分析伪代码,只是两者所需的逆向工具不同。得到flag为flag{7631a988259a00816deda84afb29430a}在搜索结果页面可以看到“flag”所在的函数,双击查看该函数的伪代码。

2024-01-28 21:22:08 429

原创 BUUCTF逆向第六题Xor

这里分析代码可以看出是前一位与后一位异或,考虑使用异或脚本,则对global进行异或操作就可以得出flag,双击查看global的值,用shift+e取出数据。最后解出flag为 flag{QianQiuWanDai_YiTongJiangHu}

2024-01-28 20:29:54 811

原创 C语言打开文件的几种方式

这个函数是用以打开txt文本文件,可以选择读写类型,但是无法打开可执行文件。其中的filename可替换为任意一个文件名。这里的文件名包括:路径、文件名称、后缀。这个函数用于打开可执行文件。

2024-01-27 19:26:45 920

原创 BUUCTF第五题(新年快乐1)解题思路

分析这段代码,将HappyNewYear!复制到str2,不难想到HappyNewYear!这里选择用CFF脱壳,将exe文件导入CFF。发现是32位,且含有一个upx壳。之后将脱壳后的文件导入IDA。对第四个字符串尽行交叉引用。如果函数较多说明脱壳成功。点击unpack脱壳。

2024-01-27 17:24:38 693

原创 BUUCTF逆向第四题(内涵的软件1)解题思路

分析一下发现v5的大括号里的部分正是flag,而这段伪代码其实与v5没有太大关系,正确的flag就是v5大括号里的字符串。这里可以发现伪代码中V4是没有值的,而且其他量也都没有涉及flag,flag涉及的语句仅作为if语序中的一个条件。我们回到最开始的主函数,发现这里真正的主函数是main_0。无壳,32位,所以后续应使用IDA32来进行操作。按shift+12检索字符串,检索flag。找到相应的函数并查看伪代码。

2024-01-26 20:56:16 826 1

原创 C语言动态链表

下面是一个简单的动态链表。

2024-01-25 17:51:19 350

原创 BUUCTF逆向前三道题解题思路

然后按照代码修改flag,可以得到真正的flag为flag{hack1ng_fo1_fun}。这里能判断出这串代码的意思是吧str2中的o全部换为0,str2为{hello_world}flag是db和一个{(db的值在下面,flag其实就是{hacking_for_fun})为处理str2的部分,可以推断出111和48为AscII码值,按r键可以将其转化为字符串。str2本身是被赋值的,双击str2进入反汇编界面查看str2的值。这里的关键代码是把flag里面的i或r换成1,双击查看flag的值。

2024-01-25 17:30:52 829

原创 kail Linux 基本命令

按a转换为插入模式(输入文本),从光标后插入;按o从下一行输入,按O从上一行输入;输入:转换为末行模式(执行文件层命令)ESC键转换为命令模式(执行命令)(切换到home目录)(注意一定区分大小写)

2023-12-09 10:09:45 70

原创 vmware安装centos

使用安装默认值,直到进行到选择系统步骤,勾选安装程序光盘映像文件,点击“浏览”,选中下载好的centos文件,如果vmware识别出了系统则该步骤成功。首先下载好centos系统的iso文件(这里推荐在清华开源软件园处下载),打开vmware,选择新建虚拟机,勾选自定义安装。等待系统安装完成后重启使用。设置主机名,用户名和密码。接下来只需要默认安装即可。安装完成后运行,选择语言。调整好设置后运行安装程序。

2023-12-09 09:05:19 30

原创 ctfshow crypto第2到第5题解题思路

点击txt后会出现类似乱码的文本,但显然这是有规律的,可以确定为某字符串的加密,打开控制台,粘贴文本,回车即可解密,得到flag。点击txt发现又是乱码,使用上题操作发现报错,因为文本中有颜文字,是AAencode加密。使用pycharm,通过rsa算法,已知p、q、e,求d。计算φ(n) = (p - 1) * (q - 1) = 447681756756。计算e关于模φ(n)的乘法逆元d,即d ≡ e^-1 (mod φ(n))与第四题同理,调用gmpy2,已知p、q、e、c,求m。

2023-11-25 08:48:51 83

原创 python64调库实现base64加解密

可以看到字符串由乱码被还原成“123”。到这里加密解密可以说是都成功了。这段代码的意义为给定一个字符串,将其加密并实例化,之后转化类型输出;首先安装python,在环境变量path中添加python的路径。这里的加密解密依赖于base64数据库,无需额外安装。我们在此基础上进行解密,使之能恢复成字符串123。可以看到结果,123被加密成了四个字母。这里用到be64decode()语句;之后打开pycharm,点击新项目。

2023-11-25 00:33:31 82

原创 攻防世界web方向新手区部分题目的解题思路

涉及PHP2、backup、weak_auth、simple_php、baby_web

2023-11-10 22:08:51 108 1

原创 VMware的安装以及Kali Linux的配置

之后是修改名称,分配处理器和内核、内存,接下来默认选择即可,虚拟机安装完成后点击虚拟机设置,选择CD/DVD选项,选择使用ISO文件,这里的ISO文件决定虚拟机的操作系统,各位可以从清华开源镜像网站中获取。今天主要分享我安装VMware虚拟机,以及在虚拟机上安装Kali的过程。由于安装过程并不困难,就不再过于繁琐地讲解。这里下载关键词是installer、amd64、iso,推荐下载。选择Linux,版本选择Debian,可以直接选择64位。新建虚拟机,选择自定义安装。选择稍后安装操作系统。

2023-11-03 20:47:07 223 1

原创 Burpsuite搭建的经验分享

关于版本的问题,可以参考你查找到的证书文件,比如我的证书文件仅支持JAVA11,其他版本JAVA无法打开该jar文件,此外使用16以上的JAVA版本大概率会报错,选择JAVA8或JAVA11是比较容易一遍过的。如图可见,可以从官网下载JAVA11,这里无论选择exe文件还是压缩包都可以,安装完成之后记住下载地址,这时JAVA环境并没有在电脑上配置,如果打开终端输入JAVA会显示不是本机命令,这个时候需要我们手动配置环境。我认为burp的安装并不是难项,真正困难的是JAVA环境配置以及证书文件的获取。

2023-11-03 20:10:34 147

原创 关于get和post传参的浅显理解

这类协议的核心以Method、Url、Header以及Body组成,Method描述具体的请求方式,协议本身没有规定GET参数一定要放query,POST参数也没有规定一定要放body,从接口定义来看,GET和POST的区别就在于接口方式的不同,至于GET请求有上限,POST请求无上限,其实是因为G一般将GET参数放在Url中,而Url长度是有限的,所以才有GET有请求上限这一说法。GET和POST起初是浏览器与服务器之间的通讯协议,GET用于读取资源,而POST用于提交表单。

2023-10-27 22:44:45 51

原创 初识phpstudy(phpstudy搭建及使用)

常用的方法是使用vscode编码php文件或者是html文件,这里的php可以作为站点后端,而html可以作为站点前端,实际操作中,要想搭建页面可以使用phpstudy默认的index.html文件做前端,或者是自己码html做前端(只有前端站点是可以显示的,但php文件想要在站点显示必须要有一个html文件做前端)。安装PHP后,启动WAMP,这样就可以启动web服务(MySQL和Apache,其中MySQL是搭建数据库的必须套件,Apache则是一个服务器套件,用于后面的站点搭建。

2023-10-27 22:13:21 152

空空如也

空空如也

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

TA关注的人

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