初次接触脱壳
程序壳(也称为 “程序包装器” 或 “加壳程序”)是一种软件工具,它可以将一个软件程序的可执行文件包装在另一个可执行文件中。
借用PandaOS师傅的图片,简单了解一下压缩壳的原理:、
栈栈(stack)是内存中分配的一段空间。
向一个栈插入新元素又称作入(push)放到栈顶元素的上面,使之成为新的栈顶元素;
从一个栈删除元素又称作出栈(pop),它把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
ESP定律esp也就是栈顶,ESP定律的核心是堆栈平衡,就是在程序执行压缩壳的时候,会把壳的OEP压入栈中,然后当加载完壳之后,又会释放出壳的入口点然后重新把源程序的OEP压入栈中,在脱壳的时候就可以通过查看栈的变化而定位到源程序的入口点然后jump出来源程序实现脱壳,具体的汇编操作是:pushad:是将所有32位通用寄存器压入堆栈
IAT ( lmportAddress Table),在可执行文件中使用其他DLL可执行文件的代码或数据,称为导入或者输入。
在脱壳的过程中,导入表是很重要的东西,程序加壳的同时也改变了IAT表,所以在脱壳的时候也一定要修复IAT。如果找到了源程序的OEP ...
MISC常见考点总结
miscPNGLSB1将flag信息隐藏在颜色通道中,使用工具stegslove查看通道得到flag
LSB2将flag隐藏到图片的颜色通道中,可以用stegslove使用Analyse-Data Extract来查看图片的
一般都是勾选red,green,blue的0,0,0
隐藏信息
或者可以在kali中使用zsteg命令来查看图通道颜色信息
关于zsteg的安装和使用可以借鉴这个帖子:
https://blog.csdn.net/Amherstieae/article/details/107512398?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168092886016800186549081%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168092886016800186549081&biz_id=0&utm_medium=distribute.pc_search_result ...
QLNU第二次校赛wp总结
Misc签到打开签到文件,可以看到有个文件夹,一直往里面点,点到最后一个“}”文件夹然后查看路径,再把不用的东西删掉就可以得到flag了
flag:QLNU{peng_you_men_juan_qi_lai}
显而易见首先用stegslove打开图片,对每一个通道进行查看
发现了提示,是jpg隐写,然后可以查看misc的大纲了,对着大纲做题真的很爽
这个题是steghide隐写
steghide隐写是分为有密码和没有密码的,在虚拟机进行解密,首先需要下载steghide的模块
然后开始解密
12steghide extract -sf out.jpgsteghide extract -sf out.jpg -p 123456
用没有密码的命令提取,发现让我输入passward,说明有密码,密码就是图片上面显示的内容
wo_jiu_shi_mi_ma
输入上去,解密成功
得到flag.txt
flag=QLNU{593f92da-233d-45cf-a802-9c4ca1e1b99c}
找不同这里给了两张一样的图片,根据hint可以判断为双图盲水印
去网上搜索发现,可 ...
z3—sover的使用
Z3学前准备先在本地机上安装Z3求解器
win+r cmd打开终端
1pip install z3-solver
然后去pycharm或者vscode去输入以下代码去看看是否可以正常运行:
1234567891011from z3 import*a,b,c = BitVecs('a b c',32)d,e,f = BitVecs('d e f',32)g,h,i = BitVecs('g h i',32)key = [a,b,c,d,e,f,g,h]s = Solver()s.add()check = s.check()print(check)model = s.model()print(model)
运行正常会显示:没报错
定义声明变量123456789101112#整型变量from z3 import *a = Int('a')#声明单个整型变量a,b = Ints('a b')#声明多个整型变量#实型变量from z3 import *a = Real('a& ...
GDOUCTF xxtea完整复现
xxtea考点:xxtea加密魔改,代码审计
做题步骤:查壳,无壳,64位
拖到64位ida中进行反编译,但是本题没要main函数,所以要用shift+f12查看字符串的方式,通过字符串来找到主要的加密函数
查看了“please input your flag,查看到了一段不像是密文的数据
对于这种难找主函数的题,其实有很多方法可以去找:
首先跑一遍这个程序,看看有哪些关键语句(字符串)
可以看到除了上面找错的那些字符,还有一个fault!You can go online and learn the tea algorithm!
shift+f12查看字符串
找到相对应的函数:
调用函数1在ida中有一个操作是查看上下级函数,在这里可以看到,有一个上级函数,就是执行完上级函数,就可以执行本函数,鼠标点击灰色的部分,单机一下然后摁x,点击ok就可以去查看上级函数
比如有一个main函数,引用了m1,m2,m3三个函数,然后m1引用了n1,n2两个函数,我们从n1或者n2返回上级就回到了m1,在m1,m2,m3回到上级就回到了main函数
比如可以看一下这个函数:
一直往里面走 ...
初次接触动态调试--lazyida初次使用
动态调试通过本周的学习,对ida有了新的认识,除了查看代码外,还可以进行动态调试
查看系统在查壳的时候要看一下程序是什么系统的程序,一般是windows的和linux的程序
windows如果是windows的程序那么直接就在本地的主机进行动态调试就可以了
linux如果遇到了linux系统的程序,比如kali或者乌邦图的程序,就比较麻烦,需要进行虚拟机远程调试,下面会详细描述一下遇到的一些问题
easy_Maze(linux)linux系统的程序,则比较复杂需要在linux系统的虚拟机里面进行远程调试
拷贝linux_server到kali中由于需要虚拟机进行远程调试,所以需要把ida安装包下的一些文件转移到linux的虚拟机里面
就是linux_server和64位的程序拖动到虚拟机里面
先搜索一下
建议在虚拟机里面新建一个ida的文件夹存放这两个文件,之后进行建立远程链接的时候要用
然后把需要调试的程序也拖动到这个文件夹下
动态调试然后把linux虚拟机里面的程序拖动到windows的ida中并反编译然后选择选择remote linux
然后弹出一个提示框,这个是提示 ...
重生之妈妈我要打CTF--简单的环境配置
前言由于电脑c盘经常爆满,再加上d盘文件太乱等种种因素,我把电脑恢复出厂设置了,以下我就重新配置一遍ctf的一些环境,希望对大家有所帮助!
2024/3/18记:第二次校赛的游戏题部分同学反应不能运行,缺少dll文件,那么就根据下面的教程配置一下vs吧(不是vscode
C-Visual Studoc最推荐的下载是Visual Studo
因为这个软件的集成度很高,他把大部分的c语言函数库都下载好了,所以用起来很方便,不用像python那样一直pip安装库了,而且这个编译环境的编译器也挺不错的
官网地址:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器
打开官网地址,找到并下载社区版的Visual Studo
点进之后就开始下载了
然后提示提前配置一下
然后来到了这个界面
选择c++的桌面开发,另外上面还有一个python开发的,我不知道有没有用,反正我是点了的
记得更改一下安装目录:别下c盘里了,一下就是好几个G,然后直接点安装
然后就开始进入了下载界面了:
安完了就提示
然后打开,可以登陆也可以不登录
安装 ...