笔记
文章平均质量分 69
Sw@9
废物
展开
-
PWN简单学习ret2shellcod,ret2syscall
testret2shellcodeROP---ret2syscallret2shellcode在程序中往往不会直接留给回门程序这时候可以篡改栈帧上的返回地址为攻击者手动传入的 shellcode 所在缓冲区地址,初期往往将 shellcode 直接写入栈缓冲区。目前由于 the NX bits 保护措施的开启,栈缓冲区不可执行,故当下的常用手段变为向 bss 缓冲区写入 shellcode 或向堆缓冲区写入 shellcode 并使用 mprotect 赋予其可执行权限。首先看一下基本信息,是一个原创 2021-07-19 14:57:09 · 292 阅读 · 0 评论 -
pwn简单学习
最简单的栈溢出以ret2text题目为例篡改栈帧上的返回地址为程序中已经有的后门函数首先用cheksec查一下文件的一些基本信息:是一个32位的文件,NX enabled开启就是意味着栈中数据没有执行权限。拿IDA看一下函数:vulnerable()显然是一个有问题的函数跟进去这里使用了gets指令来读入数据,buffer[8]很明显,向gets读大于8的数据就会溢出。还发现该程序留有后门在程序中:思路很明确了,要返回到get_shell这个函数就能获得交互界面。现在只需要确定原创 2021-07-14 07:59:46 · 296 阅读 · 0 评论 -
调试学习【10】
逆向后的Delphi特色破解练习演示程序:Teksched查看PEiD可以查到这是一个Delphi程序。我们之间载入它:那么根据以往的经验,首先的需要搜索字符串:看到一个关键的字符串,直接跟进。我们现在想的是:如何操作才能是程序运行到这个位置。然而经过观察,没有哪个指令是可以直接跳转到这个位置的。向上看,可以观察到Delphi程序的一个特色:利用PUSH和RETN来做到跳转的目的相当于jmp 004A5841。现在来从上往下看代码函数入口处:各种验证以及跳转我们最终的原创 2021-06-10 19:41:52 · 132 阅读 · 0 评论 -
调试学习【9】
目录原创 2021-06-02 17:11:11 · 92 阅读 · 0 评论 -
调试学习【7】
目录破解练习两种破解方法1、打补丁的方式破解练习演示程序:pcsurgeon.exe打开跳出一个NAG,而往往破解的入口点就是NAG一打开就说我没有注册,而且还要20dollar进入主界面可以看到这是一个系统探测程序两种破解方法1、打补丁的方式首先观察到上面在程序帮助上面也有这边是输入注册码开搞,打开od载入,跑起来,就以unregistered为切入点,查找字符串跟容易就可以找到对应的位置:...原创 2021-05-31 20:20:53 · 79 阅读 · 0 评论 -
调试学习【6】
软件破解软件破解破解的思路OD的两种断点操作软件破解演示程序:VisualSite Designer该软件限制使用次数并且在关闭的时候弹出广告破解的思路仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制。那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等。也就是说,程序的代码的走法也会跟未注册的时候截然不同。因为程序的行为改变了,那么决定它所有行为的代原创 2021-05-23 20:43:04 · 84 阅读 · 0 评论 -
调试学习【5】
调试学习5原创 2021-05-20 20:40:53 · 105 阅读 · 0 评论 -
调试学习【4】
调试学习【4】去除NAG窗口演示程序:RegisterMe.exe方法一和二方法三PE结构方法四去除NAG窗口nag本意是烦人的意思,nag窗口是软件设计者用来时不时提醒用户购买正版的警示窗口。软件设计者可能认为当用户忍受不了试用版中的这些烦人的窗口时,就会考虑购买正版。但在天朝,我们不允许有这样欺负用户的软件[doge]一般在启动或退出的时候弹出来,或者在程序运行的某个时刻突然蹦出来吓你一跳,恶心用户。一般情况下,一个注册后的软件,他是不会弹出NAG窗口的。所以,一般在程序启动的时候,他会原创 2021-05-16 20:23:27 · 224 阅读 · 0 评论 -
re学习记录从入门到入狱【15】
指针数组 / 数组指针1. 指针数组的定义char arr[10]; //就是一个数组,有10个成员,每个成员宽度为1字节,因为是char类型char* arr[10]; //指针数组,长度10,名为arr,每个成员为char*指针类型,4字节指针数组的赋值int main(){ char* a = "Hello"; //编译器会在常量区分一块内存,存储Hello的ASCII码 //然后把内存的地址存到a,所以a和b里存的都是一个地址,因为是char* 所以都是4字节 char原创 2021-04-18 16:54:58 · 61 阅读 · 0 评论 -
re学习记录从入门到入狱【14】
数组参数传递1. 基本类型参数传递#include <stdio.h>void add(int b){ b = b + 1; return;}void main(){ int a = 1; add(a); printf("%d \n", a);//a的值此时为多少? return;}a的值现在不等于2看下反汇编: int a = 1;00401094 mov dword ptr [ebp-4],1我们定义了int a = 1,此时a原创 2021-04-11 20:33:21 · 56 阅读 · 0 评论 -
re学习记录从入门到入狱【13】
取值运算符1. 取值运算符取值运算符 – "*"之前我们认识的*可以做以下几种乘法运算:a * b定义指针:int * a取值运算符: * 后面跟一个指针类型的变量int* a = (int*)1; //定义一个指针类型的变量a赋值为1printf("%x \n", *a);我们在printf下断,如果程序运行起来会抛出异常出错,编译和语法检查没问题,我们看汇编代码00401090 push ecx 00401091 push 402100h原创 2021-04-11 19:34:17 · 77 阅读 · 0 评论 -
re学习记录从入门到入狱【12】
指针类型1. 指针类型int* a;float* b;char* c;加上*之后,就变成了一个新的类型,统称为“指针”2. 如何赋值a = (int*)5;short = (short*)1;char = (char*)1;定义指针有多少个*,就给括号里写多少个,要对应起来。可以给两个相同的指针变量赋值int** a;int** b;a = (int**)6;b = a;3. 指针变量宽度指针对于C语言,相当于一个新的类型。#include <stdio原创 2021-04-08 19:28:28 · 54 阅读 · 0 评论 -
re学习记录从入门到入狱【11】
结构体1. 结构体基础思考:1、需要存储1字节,怎么做?定义1个char类型(1字节宽度)2、存储4字节,怎么做?定义1个float或者int(4字节宽度)3、需要存储100个2字节数据,怎么做?(数组)那么,我们需要存储5个数组,这5个数据宽度都不相同,我们怎么存储?结构体定义方法:struct 类型名{ int a; char b; short c;};默认不占用空间,只有调用,重新去定义一个新的变量的时候,才会占用。如图,不占用空间。再如上图,我们调用定义新变量了原创 2021-04-08 18:44:04 · 61 阅读 · 0 评论 -
re学习记录从入门到入狱【10】
数组C语言最重要的部分之一什么是数组?什么情况需要使用数组?1、比如我们要定义一个变量,来存储一个人的年龄void main(){ int age; reurn;}平时我们肯定会这样定义,但是这样只能存储一个,如果我们要存储n个人的年龄呢?数组定义格式数据类型 变量名[常量];数据类型就是我们那些 int、long、short、double等变量名符合命名规则可以随便写中括号里的常量,要写定义多少个变量,比如我们存储5个人的年龄void main(){ int age[原创 2021-04-08 18:39:12 · 90 阅读 · 0 评论 -
re学习记录从入门到入狱【9】
分支语句一、 if else语句单if语句此处的表达式为判断,例如:int a = 1;int b = 2;if (a>b) //如果a>b{ print("a>b"); //输出a大于b}if(表达式){ 语句;}if、else语句那么我们如上语句,还要有一个不满足a>b的条件,就用到if/else,如下:int a = 1;int b = 2;if (a>b) //如果a>b{ print("a>b"); //输出原创 2021-04-06 19:48:20 · 101 阅读 · 0 评论 -
re学习记录从入门到入狱【8】
运算符与表达式1、什么是运算符,什么是表达式?表达式是由一系列运算符(operators)和操作数(operands)组成的例如:int a,b,c;c = a + b;c = a * b;c = a / b;c = a - b;a == b;a = b;+ - * / == = 一系列符号就是运算符上面的 a+b 、a/b等,就是表达式。表达式就运算符和操作数(变量,立即数等)组成的一系列完整语句表达式运算结果若我们的操作数类型并不相同,比如 c = a + b,此原创 2021-04-01 20:51:46 · 59 阅读 · 0 评论 -
re学习记录从入门到入狱【7】
数据类型1. 整数类型变量就是存储数据的一个容器。那么存储数据是有宽度的,决定存储数据宽度的就是数据类型了。就好像做个加法,反馈的内容,存储什么类型,也是由数据类型决定。常见的整数数据类型如下:int在十六位计算机中是2字节,在32以上的计算机中是4字节。数据溢出:抛弃高位除了告诉编译器,存储数据的宽度,还告诉了存储数据的格式如:char a = 1;(0000 0001)因为char是1字节,1字节=8位,其余补0那么:char a = -1;(1111 1111)负数补原创 2021-03-28 20:22:38 · 85 阅读 · 0 评论 -
re的学习记录从入门到入狱【6】
函数嵌套调用原创 2021-03-28 10:30:20 · 101 阅读 · 0 评论 -
团队内部阴间比赛
文章目录MISCMISC1、The goddess of regression of打开一张图片binwalk分析提取出来压缩包这一个hint成功的误导了我以为是伪加密,修压缩包这类的,结果不是。真加密所以需要找到key原创 2021-03-22 16:54:36 · 464 阅读 · 2 评论 -
re的学习记录从入门到入狱【3】
一、JCC标志位1、CFCF 进位标志位,算术操作最高位结果进位(加法)或借位(减法) CF=1。EAX清零,CF=0,让FF+1,产生进位。2、PFPF 奇偶标志位,结果中的低八位1的个数为偶数 PF=1al=FE,二进制也就是1111 1110,+1变成1111 1111,这样就是偶数,PF=1。低八位al,转成二进制,1的个数为偶数则为1。3、AF辅助进位标志,算数操作在结果D3→D4位发生进位或借位时 AF=14、zfZF 零标志位:操作的结果等于0时 ZF=1...原创 2021-02-05 10:31:19 · 106 阅读 · 0 评论 -
re的学习记录从入门到入狱【2】
一、通用寄存器计算机可以将数据存在:CPU、内存、硬盘寄存器就是CPU中用来存储数据的地方8个32位通用寄存器EAX:返回值存放 EBX:寻址存放基地址ECX:计数器EDX:余数存放ESP、EBP:栈顶指针、EBP指向系统栈最上面一个栈帧的底部ESI、EDI:源索引寄存器,指向源串 / 目标串特殊EIP:CPU即将执行指令地址,无法作为他用寄存器之间的关系寄存器的修改操作mov指令传送赋值mov 目标地址,源地址二、内存与内存地址内存虽然CPU可以存储数据,但是有原创 2021-01-31 10:18:17 · 213 阅读 · 0 评论 -
re的学习记录从入门到入狱【1】
一、进制计算机只认识二进制,也就是0和1。计算机中存储的任何文件,接收的任何指令都是由0和1组成的。1、进制的定义八进制:八个符号组成,0、1、2、3、4、5、6、7,逢8进1十六进制:十六个符号组成,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢16进12. 进制书写方式列:0 1 2 3 4 5 6 7 8 9 A B C D E F这是十六进制的十六个数,如果想继续写15以后的数,就得进位,就好像9+1 = 10。八进制没有八,十六进制没有十六,先用00占位,原创 2021-01-21 13:34:35 · 212 阅读 · 0 评论 -
对于数据库的简单认识(web了解)
学习目标:1.了解什么是数据库?2. 数据库的表,列,字段,数据之间的联系。3. 选择MySQL数据库进行学习增、删、查、改简单操作。建议:最好使用PHPstudy集成环境。不用下载单独的MySQL。检查:在CSDN记录自己的学习成果,发布博客。学习内容:1、数据库是什么,为什么要用Mysql数据库2、数据库的表,列,字段,数据之间的联系3、MySQL数据库的增、删、查、改简单操作学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午原创 2021-01-15 15:58:35 · 468 阅读 · 2 评论 -
工具和指令简单使用
一、zsteg1、安装zsteg$gem install zsteg2、简单使用查看帮助zsteg -h查看LSB信息zsteg xxx.png二、git stash常用git stash命令:(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。(2)git stash list :查看stash了哪些存储(3)git stash show :显示做了哪些改动,默认sh原创 2020-12-07 20:53:03 · 1275 阅读 · 0 评论 -
Hello world !你懂吗?
Hello world !第一篇博客当然是以"Hello world !"开始了,对于"Hello world !"这个东西,我简单说两句,至于我的身份,你明白就行,总而言之,这个事呢,现在就是这个情况,具体的呢,大家也都看得到,我因为这个身份上的问题,也得出来说那么几句,可能,你听的不是很明白,但是意思就是那么个意思,我的身份呢,不知道的你也不用去猜,这种事情见得多了,我只想说懂得都懂,不懂的我也不多解释,毕竟自己知道就好,细细品吧。你们也别来问我怎么了,利益牵扯太大,说了对你我都没好处,当不知道就行了原创 2020-11-30 09:23:59 · 238 阅读 · 3 评论