一步一步学ROP之linux_x86学习
一步一步学ROP之linux_x86学习学习网址:
https://www.tuicool.com/articles/ZruA7bZ
https://www.yuque.com/hxfqg9/bin/zzg02e#qnw71
先来个什么防御都没有的1234567891011#include <stdio.h>#include <stdlib.h>#include <unistd.h>void vulnerable_function() { char buf[128]; read(STDIN_FILENO, buf, 256);}int main(int argc, char** argv) { vulnerable_function(); write(STDOUT_FILENO, "Hello, World\n", 13);}
因为read函数读入256个字节 而buf只有128个字节,有明显缓冲区溢出
使用命令进行编译
123456789ubuntu中gcc -m32 -g -fno-s ...
2020 湖湘杯 easyZ 框架(S390)
easyZ一点都不简单好吗,框架(S390)都看不出来🤪
先用ida打开发现不能反汇编
用linux的objdump看看框架
好像没有S390
在kali中装上qemu来模拟程序运行发现
发现可以搜索的关键字符串
在hex.txt中查找到相应字符串及它的地址
去dis.txt中搜索有那些有用到1071060左右地址的行,找到函数主体
开始分析
123456789101112131415161718192021222324252627282930313233343536373839404142431000b38: eb bf f0 58 00 24 stmg %r11,%r15,88(%r15)//主函数1000b3e: e3 f0 ff 20 ff 71 lay %r15,-224(%r15)1000b44: b9 04 00 bf lgr %r11,%r151000b48: b2 4f 00 10 ear %r1,%a01000b4c: eb 11 00 20 00 0d sllg %r1,%r1,321000b52: b2 4f 00 1 ...
巅峰极客reverse baby_maze
巅峰极客reverse baby_maze这题通过ida64打开后发现是很多个函数写的地图,人看傻了`(>﹏<)′
后来一想 直接找到终点的函数,然后利用交叉引用溯回到起点就行了(”好像”还挺简单的😃)
通过字符串.
Good Job. \nAnd the flag is flag md5(your input)\nIf not, you may need to go faster!
找到终点sub_54DE35
通过Welcome to TastelessMaze! 找到主函数再找到起点sub_40187C()
我原本一个一个慢慢往上溯回,结果卡死了
出现了这种情况
我需要看是谁走到了sub_53E6B7 一看D先走了sub_53CE65()这个函数,再来走sub_53E6B7
sub_53CE65()里面又是switch 人麻了🤡
我莫得办法
事后看师傅们的wp,QAQ,直接正面暴力莽,利用idapython中的gen_r_call_chain函数
学习网址:
https://blog.51cto.com/watertoeast/2287039
https://z ...
安卓逆向思路
easyeasy-200安卓逆向
用Android Killer直接反汇编,接着看程序java层
123ApplicationInfo是android.content.pm包下的一个实体类,用于封装应用的信息,flags是其中的一个成员变量public int flags = 0;用于保存应用的标志信息。ApplicationInfo 通过它可以得到一个应用基本信息。这些信息是从AndroidManifest.xml的< application >标签获取的ApplicationInfo对象里保存的信息都是<application>标签里的属性值
这些信息没用
接着看下面的判断
发现要求输入的字符串的长度要在35-39之间,之后再调用Format().form函数
1paramString.substring是用来截取字符串的
调用Format().form 所以返回的是字符串的[5,38],因此字符串长度需要大于38
接着看主函数得知返回的字符串需要大于32,满足就是调用Check模块中的check
1234exists()方法返回值:true:此抽 ...
Stegsolve使用介绍
Stegsolve使用介绍ctf misc方向难免会遇到需要处理图片的问题
而一开始我都用ps,那玩意太大了,而Stegsolve用起来很方便,所以在这记录一下使用方法什么的
Open 打开文件
Save As 保存文件
Exit 退出
File Format查看文件格式
有可能在这里找到flag
Data Extract数据提取
Bit Planes部分Alpha是透明度
Red Green Blue是红绿蓝 数字越大该颜色的亮度越高,数字越小该颜色的亮度越低
亮度级别为256个级别 2^8 7~0
Order settingsExtract By
额外的
Row 行
Column 纵
像素使用RGB(0-255,0-255,0-255)表示
Bit Order
位顺序
MSB First 一串的最高位
LSB First 一串为最低位
Bit Plane Order
位平面顺序
RGB的顺序
Steregram Solve立体试图, 左右控制偏移
Frame Browser按帧浏览,可以看GIF的动图,像buuctf的金三胖那题就是藏帧里
Image Combiner拼 ...
smc自解密
BABYREida打开后看主函数
得知先将judge数组里头的数据进行了异或,点开看看
后面看judge是一个函数才对
这应该是需要idc或者是python脚本来讲数据进行一些改变
这里需要修改程序中原有的数据
smc自解密
返回值
函数名
参数
操作
void
PatchByte
long addr, long val
设置虚拟地址addr处的一个字节值
得到了判断函数和比较字符串
123s = [0x66,0x6d,0x63,0x64,0x7f,0x6b,0x37,0x64,0x3b,0x56,0x60,0x3b,0x6e,0x70]for i in range(len(s)): print(chr(s[i]^i),end="")
flag{n1c3_j0b}
pwn初学笔记
pwn初学笔记师傅们的学习博客:
https://blog.csdn.net/qq_42880719/article/details/119187995?spm=1001.2014.3001.5501
https://ctf-wiki.org/
https://www.yuque.com/cyberangel
https://www.yuque.com/hxfqg9/bin/zzg02e#62Pxt
靶场:https://buuoj.cn/challengeshttps://ctf.show/challengeshttps://pwnable.tw/challenge/http://pwnable.kr/play.phphttps://bamboofox.cs.nctu.edu.tw/courses
基本概念汇编知识ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
一般 ...
PE学习笔记
PE学习笔记有一说一,自己看完书在看看视频,可以自己写一两个程序(比如输出hello world)来实战分析一下,印象会更深。
DOS属性说明MZ标识(e_magic)不能动,+3C位置的e_lfanew不能动,中间的都可以改动,中间的是给16位看的,现在是32/64位的系统,不需要这部分。同时DOS Stub可以随意更改不影响。
PE头属性说明12345typedef struct_IMAGE_NT_HEADERS {DWORD Signature; //PE标识(4字节IMAGE_FILE_HEADER FileHeader;//标准PE头(20字节IMAGE_OPTIONAL_HEADER32 OptionalHeader;//扩展PE头(224字节} IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;
PE标识0004550h=======”PE00”
IMAGE_FILE_HEADER FileHeader;标准PE头123456789typedef struct__IMAGE_FILE_HEADER {WO ...
NTFS交换数据流文件提取
NTFS交换数据流文件提取NTFS交换数据流(简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,除了主文件流之外还可以有许多非主文件流寄宿在主文件流中,而我们无法查看到非主文件数据流,因文件夹大小始终显示0.
利用工具NtfsStreamsEditor2
链接:https://pan.baidu.com/s/13sQ8hlLshqRDV2gwxuMuBA提取码:6oqn
可能会报毒,注意
命令12345678910111213141516171819寄生一:echo 写入内容>>宿主文件:交换数据流文件(寄生文件)echo ever>>1.txt:2.txt2.txt为echo创建出交换数据流文件,ever在2.txt中寄生二:type 交换数据流文件(寄生文件)>>宿主文件夹:交换数据流文件(寄生文件)type 2.txt>>temp:2.txttemp为空文件夹,执行后2.txt寄生在temp文件夹上type a.jpg>>temp:a.jpgtemp为空文件夹,执行后a.jpg ...
kali工具使用集合
kali工具使用集合(主要针对misc 持续更新binwalk一般用binwalk [文件名]来分析有多少文件
binwalk -e [文件名]
可以分离文件
dd命令一、dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2
参数注释:
\1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
\2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
\3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
\4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
\5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
...