【WP/CTF】RCTF 2018 Simple vm
下载:下载
VM虚拟保护——Simple VM
需要知识
数电基础
C语言基础
x86汇编指令
逻辑分析能力
VM保护基本术语
Dispatcher: 调度器,用于判断跳转到对应的Handler执行指令
Handler: 处理器,用于模拟每个指令
分析
下载后发现有两个文件,分别是
p.bin
vm_rel
我们直接用IDA打开vm_rel这个文件,发现是一个64位的elf文件。老规矩在左边的Function names中搜索main直接打开main函数查看一下伪代码
- 经过简单的分析知道,首先程序会打开“p.bin”的文件然后在内存中分配一个和文件大小一样大的空间。并把分配 好的内存的地址存放到v5,再经过fread()函数读取文件中的内容存放到内存中
然后调用子程序sub_4008996开始程序的执行
直接双击该子程序进去可以看到由while(1),switch语句构成整个子程序
在虚拟机保护的分析中只要看到类似的结构,就可以判断出该子程序就是整个vm的核心Dispatcher
- 看到这里对于初学者来说可能比较吃力,毕竟笔者也是初学者所以刚开始看的时候着 ...
【CTF/WP】DDCTF 2018黑盒破解——简单的VM入门
下载:DDCTF 2018黑盒破解
LUOJIBASUO
这是我初学VM的第一个程序,虽说网络上有其他博主下写的WP但是对于刚开始学VM的来说我觉得是难以理解的,主要是程序的执行流程懂得了程序如何执行剩下的就好办了。同时感谢其他博主的WP学习了很多
分析文件
文件下载下来后,发现有两个文件
1、ReverseMe.elf
2、flag-48ee204317.txt
根据做题的经验和文件后缀大概猜测一下文件的类型是ELF64的Linux程序。直接用IDA64打开
打开后看可以看到我们猜测的没错,不会猜测可以使用PEID和exeinfope
打开直接搜索main函数,在右侧代码可以看到是判断了byte_603F00的变量是否正确。
把用鼠标点击一下该变量光标放在鼠标上按键盘的 “X” 即可打开变量的交叉引用。如上图,Type中是 “w” 为写,如果是 “r” 就是读,从图中可以看到在sub_40133D这个子程序设置了该参数的数值。双击第一条数据可以直接跳转到对应的地方
发现经过了几个判断成功后才置1,如果按照刚刚的方法直接查找该子程序的引用发现找不到在哪 ...
【Gitlab】Gitlab版本控制搭建
Gitlab Documentation: https://about.gitlab.com/install/#centos-7
下面是和官网不一样的教程
前提概要
本来之前用的是Github但因为在国外速度太慢了,为了更好的分享自己的开源不得不更换成Gitee。刚开始还不错知道今天突然发现之前开源的40个左右的项目全部都被锁了需要重新提交审核。不得已才想到搭建自己的Git版本控制
准备工具
1、Linux服务器一台,这里我使用的是腾讯云的Centos
2、确保安装了Nginx环境,可以看博主的其他文章快速搭建环境
进入正题
查看自己的服务器的版本信息
Last login: Wed May 18 22:24:22 2022 from 113.118.82.119
(base) [ ~]# uname -a
Linux VM-16-13-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
从上面可以得是64位的服务器,前往镜像站找到对应 ...
【Unidbg】模拟Android环境Hook Androlua
Unidbg的介绍
Allows you to emulate an Android native library, and an experimental iOS emulation.
This is an educational project to learn more about the ELF/MachO file format and ARM assembly.
Use it at your own risk !
官方Github: https://github.com/zhkl0228/unidbg
下载Unidbg
下载有两种方式进行下载
git clone https://github.com/zhkl0228/unidbg.git 通过git命令clone到本地
通过Github右上角的Code按钮下载zip文件
配置Unidbg
下载好之后我们使用Idea将其打开,发现是一个maven工程我们。进行一下简单的设置
首先新建一个Module用于编写我们自己的代码也可以不新建在原有的Module上新建java文件即可。这里因为方便区分自己的和模板的选择新建 ...
【CTF】CTF的一把梭Z3
安装z3
Z3开源项目地址:https://github.com/z3prover
Python文档翻译:https://arabelatso.github.io/2018/06/14/Z3%20API%20in%20Python/
官方文档
C++ API
.NET API
Java API
Python API (also available in pydoc format)
Julia
首先访问Pypi下载对应的架构的whl文件,下载的时候注意对应自己电脑的平台和Python对应的版本。下载好后打开cmd输入pip install 下载的文件路径进行z3的安装。如图所示
【CentOS Linux RHEL】Linux中安装MySQL
前言
最近买了一个比较实惠的服务器,在迁移博客的时候发现这次比之前几次还麻烦原因就出现在了Mysql的安装中。在之前的运维部署中我写了一些关于nginx和php的安装唯独没有mysql的导致踩了不少的坑。所以特写本文章记录。本文记录了安装过程中能够所遇到的坑!本文中用CentOS为例其他Linux大同小异
选择合适的MySQL
访问MySQL官网,点击如图的链接可以安装之前的MySQL版本
CentOS选择RedHat
在Linux终端输入uname -a 查看系统架构。根据自己的Linux架构选择合适的版本滑倒最下面找到这一个按Download会跳转到一个页面根据图片所示
安装MySQL
在终端输入如下所示的命令
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#下载MySQL后面的链接是刚刚复制的wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-el7-x86_64.tar ...
【IDA】010EditorV11.0_x64逆向制作文件内存补丁
1、破解序列号
我们打开程序后会提示这个框框
然后打开IDA使用IDA打开我们的程序
Shift+F12打开字符串引用表_,_Ctrl+F搜索我们干菜看到的提示内容
搜索出一个结果我们双击进去,然后双击光标指向的位置。打开数据交叉引用。看到了我们引用的地方。
按F5或Tab打开伪代码分析,发现调用了一个函数。然后判断函数的返回值来确定是否注册成功。双击黄色的地方进入函数分析。
只有在v6返回值为0x2D的是都才会返回0xDB,继续进入到该函数。这个函数可能是注册码的算法,我们不管直接把return的值全部改成0x2D
我们点击return关键字的发现有5个地方return了数据我们把这5个return都改成return 0x2D。在汇编中返回值是存放在我们的eax寄存器中的。我们只要把鼠标点击return的地方再按Tab就能快速定位到对应的汇编代码。使用keypatcher patch指令。改完后按F5重新加载伪代码看看都改完了。
回到刚刚的函数发现有个地方判断了直接返回导致函数没被调用,这时候我们把0x113切换的汇编代码patch 为0xdb即可
2、网络验证 ...
VS Code下LaTeX的配置
MikTex安装
官网下载MikTex: https://miktex.org/ 的安装包,然后点击安装。安装完成有运行"Miktex console"进行配置(选择"以管理员身份运行")。
点击"Packages"标签,然后依次安装ctex和CJK包等(或者待编译时再按需安装也可), 以便支持中文。
VS code+LaTeX Workshop
官网下载VSCode安装包然后安装。https://code.visualstudio.com/
然后运行"vscode", 安装其扩展Latex Workshop.
对于Miktex, 需要对Latex Workshop配置recipe和tool。
tool
12345678910111213141516171819202122232425262728293031"latex-workshop.latex.tools": [ { // 编译工具和命令 "nam ...
【MSOffice】绝对引用和常用函数的使用
绝对引用
什么是绝对引用?
绝对引用有什么用?S
如何快速添加$号?
绝对引用就是固定它当前的单元格使拖动数据单元格数据不变,听不懂是吗?那就来看图吧
举个例子如图
首先看图这里有两个数据列
我们需要计算它的百分比公式为
=金额/总计。这里第一个数据我们手动输入后面的可以直接拖右下角进行快速输入这个我们都知道对吧,但第一个和第二个数据不同一个正确一个错误。就是因为第一个使用了绝对引用第二个没有使用,使用了绝对引用怎么看出来的呢?看①
而第二个数据我们没加就计算错误了
这里我们来举个例子比如我②
这里是=D3/D6的但是往下拖就变成了
D4/D7但我们D7是空的数据而且总计在D6中就造成了数据错误这时候我们加个绝对引用就没问题了
如果你一个个加$符号如果数据多处理就有点繁琐了我们可以选中绿色方框的内容按键盘上的F4既可快速添加
SUMIF函数
SUMIF函数是常用的一个函数了
它的作用就是计算条件=x的所有总数的和
比如这里可以看到我要计算电脑的总金额就用到了SUMIF函数这个函数有三个参数分别是
条件判断数据列
条件
求和项
比如我这里求的是电脑总金额所以条件数据列就选择A3: ...
【JetBrains全家桶】配置External Tools
我们在开发的时候可能会使用到一些Java的命令如进行JNI开发的时候使用到了Javah和Javap两个Java的命令,但如果我们每次使用都是输入命令这样会大大的降低我们的工作效率我们何尝不把Java的命令集成到AS或JB全家桶的软件中呢?
操作很简单,这里我主要以AndroidStudio为例子