自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PWN简单学习ret2shellcod,ret2syscall

testret2shellcodeROP---ret2syscallret2shellcode在程序中往往不会直接留给回门程序这时候可以篡改栈帧上的返回地址为攻击者手动传入的 shellcode 所在缓冲区地址,初期往往将 shellcode 直接写入栈缓冲区。目前由于 the NX bits 保护措施的开启,栈缓冲区不可执行,故当下的常用手段变为向 bss 缓冲区写入 shellcode 或向堆缓冲区写入 shellcode 并使用 mprotect 赋予其可执行权限。首先看一下基本信息,是一个

2021-07-19 14:57:09 297

原创 pwn简单学习

最简单的栈溢出以ret2text题目为例篡改栈帧上的返回地址为程序中已经有的后门函数首先用cheksec查一下文件的一些基本信息:是一个32位的文件,NX enabled开启就是意味着栈中数据没有执行权限。拿IDA看一下函数:vulnerable()显然是一个有问题的函数跟进去这里使用了gets指令来读入数据,buffer[8]很明显,向gets读大于8的数据就会溢出。还发现该程序留有后门在程序中:思路很明确了,要返回到get_shell这个函数就能获得交互界面。现在只需要确定

2021-07-14 07:59:46 299

原创 调试学习【10】

逆向后的Delphi特色破解练习演示程序:Teksched查看PEiD可以查到这是一个Delphi程序。我们之间载入它:那么根据以往的经验,首先的需要搜索字符串:看到一个关键的字符串,直接跟进。我们现在想的是:如何操作才能是程序运行到这个位置。然而经过观察,没有哪个指令是可以直接跳转到这个位置的。向上看,可以观察到Delphi程序的一个特色:利用PUSH和RETN来做到跳转的目的相当于jmp 004A5841。现在来从上往下看代码函数入口处:各种验证以及跳转我们最终的

2021-06-10 19:41:52 132

原创 调试学习【9】

目录

2021-06-02 17:11:11 95

原创 调试学习【8】

目录爆破,是最初级的破解方案,不到万不得已,我们不直接修改JNZ通关。演示程序:MrBills.exe打开之后是一个需要注册的程序在这里我们随便输入一个东西,跳出窗口可以以这个为突破口,来搜索相关字符串找到突破口而影响jnz的是上面的test(与运算)因此,如果al为0则未注册,al为1或非0则已注册jnz跳转但是哪有影响了al呢?看到上面存在一个函数CALL,而函数的返回值有存在eax中,进而影响al,因此需要进入这个CALL。在这里设置一个断点到这里,随便输入一个东西

2021-06-01 20:35:58 301

原创 调试学习【7】

目录破解练习两种破解方法1、打补丁的方式破解练习演示程序:pcsurgeon.exe打开跳出一个NAG,而往往破解的入口点就是NAG一打开就说我没有注册,而且还要20dollar进入主界面可以看到这是一个系统探测程序两种破解方法1、打补丁的方式首先观察到上面在程序帮助上面也有这边是输入注册码开搞,打开od载入,跑起来,就以unregistered为切入点,查找字符串跟容易就可以找到对应的位置:...

2021-05-31 20:20:53 80

原创 调试学习【6】

软件破解软件破解破解的思路OD的两种断点操作软件破解演示程序:VisualSite Designer该软件限制使用次数并且在关闭的时候弹出广告破解的思路仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制。那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等。也就是说,程序的代码的走法也会跟未注册的时候截然不同。因为程序的行为改变了,那么决定它所有行为的代

2021-05-23 20:43:04 85

原创 调试学习【5】

调试学习5

2021-05-20 20:40:53 108

原创 调试学习【4】

调试学习【4】去除NAG窗口演示程序:RegisterMe.exe方法一和二方法三PE结构方法四去除NAG窗口nag本意是烦人的意思,nag窗口是软件设计者用来时不时提醒用户购买正版的警示窗口。软件设计者可能认为当用户忍受不了试用版中的这些烦人的窗口时,就会考虑购买正版。但在天朝,我们不允许有这样欺负用户的软件[doge]一般在启动或退出的时候弹出来,或者在程序运行的某个时刻突然蹦出来吓你一跳,恶心用户。一般情况下,一个注册后的软件,他是不会弹出NAG窗口的。所以,一般在程序启动的时候,他会

2021-05-16 20:23:27 234

原创 调试学习【3】

关于寄存器寄存器就好比是CPU身上的口袋,方便CPU随时从里边拿出需要的东西来使用。现在这个程序中我们涉及到九个寄存器:EAX:扩展累加寄存器EBX:扩展基址寄存器ECX:扩展计数寄存器EDX:扩展数据寄存器ESI:扩展来源寄存器EDI:扩展目标寄存器EBP:扩展基址指针寄存器ESP:扩展堆栈指针寄存器EIP:扩展指令指针寄存器这些寄存器的大小是32位(4个字节),他们可以容纳数据从0-FFFFFFFF(无符号数),除了以下三个寄存器,其他我们都可以随意使用:EBP:主要是用于栈和

2021-04-29 08:46:30 145

原创 调试学习【2】

TraceMe序号验证程序流程图加载目标文件调试设置OD中断在程序的入口点。名词注释:(1)System breakpoint:系统断点,OD用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统空间里。(2)Entry point of main module:主模块的入口点,即文件的入口点。(3)WinMain:程序的WinMain()函数入口点·-------------------------------

2021-04-23 16:09:06 316 5

原创 调试学习【1】

OD和IDA ProOD和IDA Pro分别是调试逆向的倚天剑和屠龙刀。虽然二者都兼容动态调试和静态的调试方式,但是就动态调试而言,OD更为灵活和强大,而静态调试工具的王者则为功能极为强大的IDA Pro。ODF2 下断点,也就是指定断点的地址F3 加载一个可执行程序,进行调试分析F4 程序执行到光标处F5 缩小、还愿当前窗口F7单步步入F8单步步过F9直接运行程序,遇到断点处,程序暂停Ctrl+F2 重新运行程序到起始处,一般用于重新调试程序Ctrl+F9 执行到函数返回处,用

2021-04-20 20:22:09 184 1

原创 re刷题【6】

logmein看源码:输入的s不能满足一下两种条件,可以根据第二个条件来写脚本:v7 = 'harambe'v8 = ':\"AL_RT^L*.?+6/46'flag = ""for i in range(len(v8)): flag += chr(ord(v7[i % 7]) ^ ord(v8[i]))print(flag)RC3-2016-XORISGUD...

2021-04-18 17:08:03 79

原创 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 62

原创 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 57

原创 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 79

原创 re刷题【5】

python-tradepy文件,反编译:import base64def encode(message): s = '' for i in message: x = ord(i) ^ 32 x = x + 16 s += chr(x) return base64.b64encode(s)correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'flag = ''print 'Input

2021-04-08 20:47:18 136

原创 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

原创 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 63

原创 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 93

原创 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 109

原创 每日亿道misc【8】

穿越时空的思念音频转为摩斯密码,用Audacity…-./-----/…—/----./-…/-…/-…/…-./…/…/.----/.----/…–/----./././-…/./-…/—…/./…-/…/.-/.----/–…/…/-…/-----/–…/—…/-…解为:f029bd6f551139eedeb8e45a175b0786flag{f029bd6f551139eedeb8e45a175b0786}...

2021-04-01 21:07:35 202

原创 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 60

原创 每日亿道misc【7】

[GXYCTF2019]佛系青年压缩包里面一张图片和一个txt文件,但是文件打不开所以选择修复文件头或者是尾修复完成后打开txt与佛论禅解码:flag{w0_fo_ci_Be1}给的图片似乎没什么卵用

2021-03-30 20:15:25 94

原创 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 86

原创 re的学习记录从入门到入狱【6】

函数嵌套调用

2021-03-28 10:30:20 102

原创 每日亿道misc【6】

[SWPU2019]神奇的二维码好家伙,扫码吧得到flagswpuctf{flag_is_not_here}显然不正确正常分析图片发现个压缩包,分离出来:当然压缩包里面的图片只有:这个密码再第二个压缩包里面,base64解码为:asdfghjkl1234567890这个密码再第二个压缩包里面,base64解码里面依然是一张很显然出题人再挑衅,第三个和第四个压缩包分别为flag.doc和good,那么真的flag再good里面base64解码20次得到:comEON_Y

2021-03-28 09:14:22 360

原创 每日亿道misc【5】

梅花香之苦寒来是一张图片,那010分析,png文件尾FFD9后面有大串十六进制字符将他们转为字符串:得到坐标点,将他们替换成使用gunplot绘图:flag{40fc0a979f759c8892f4dc045e28b820}

2021-03-23 19:45:39 93

原创 团队内部阴间比赛

文章目录MISCMISC1、The goddess of regression of打开一张图片binwalk分析提取出来压缩包这一个hint成功的误导了我以为是伪加密,修压缩包这类的,结果不是。真加密所以需要找到key

2021-03-22 16:54:36 469 2

原创 re刷题【4】

Java逆向解密java逆向,使用jd-jui反编译查看代码:很显然:输入的字符串经过循环变换之后与某list比较,正确为flag这里给了KEY编写脚本:key = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 ]flag = ""for i in range(0,len(key)): flag += chr(key[i] - 64 ^ 0x20)

2021-03-19 15:34:31 71

原创 每日亿道misc【4】(假)

告诉你个秘密打开文档是一堆十六进制的字符尝试转为字符串像是base64编码,于是解开得到这个就再熟悉不过了:键盘密码,圈着的文字就是flagTONGYUANflag_in_your_hand两个文件。第一个打开看一下应该要输入一个正确的Token,目前不知道是什么。查看源码:要让ic为ture才能得到flag现在的打开第二个文件,观察到了关键性信息:要让的二组字符串不成立ic才为ture所以根据题意编写脚本;a = [118, 104, 102, 120, 1

2021-03-19 14:27:29 78

原创 每日亿道misc【3】

就在其中打开流量包,搜索flag,发现先进行tcp连接,再是FTP传输,应该是在传输某些文档。搜索关键词key,追踪TCP可以看到有公匙,那么可能有私匙加密某个文件。搜索rsa追踪TCP,可以发现私匙分离流量包:key.txt应该是被加密的文档将私匙复制保存为rsa.key采用openssl解密:openssl rsautl -decrypt -in key.txt -inkey rsa.key -out flag.txtflag{haPPy_Use_0penSsI}.

2021-03-18 17:56:30 72

原创 re刷题【3】

xor无壳,用ida打开,F5看伪代码。输入的v6的长度为33,也就是flag的长度。从第二项开始,每一项都与前一项异或之后得到的v6再和v3比较,相同得Success。现在查看v3是什么给了一堆字符串,将他们导出正好为33个根据题意编写脚本s = [102,10,107,12,119, 38, 79, 46, 64, 17, 120, 13, 90, 59, 85, 17, 112, 25, 70, 31, 118, 34, 77, 35, 68

2021-03-16 20:22:00 105

原创 每日亿道misc【2】

Hidden-MessageWireshark打开分析340134003401…个位数在不断的变化猜测是某密文10110111100110101001011010001100100110101001000110011101100110101000110110011000

2021-03-16 13:33:24 79

原创 re刷题【2】

一、内涵的软件扔进ida看字符串,得到:DBAPP{49d3c93df25caad81232130f3d2ebfad}然而这就是flagflag{49d3c93df25caad81232130f3d2ebfad}二、新年快乐看为伪代码意思为:如果v4跟输入的字符串相等时,输出this is true flag!而v4 = HappyNewYear!因此flag{HappyNewYear!}三、[BJDCTF 2nd]guessgameida查看字符串BJD{S1mple_

2021-03-14 16:50:35 104

原创 re刷题记录【1】

一、不一样的flag用IDA打开搜索字符串,可以发现两个关键信息:第一个看不出来什么,第二个意思是我的路线就是flag看伪代码这一行的意思是:XX=“1”则exit,xx=“#”则puts(xx)根据第一条信息:*11110100001010000101111#可以得出,第一条信息在主函数中也参与了使用,所以我们再走迷宫。画出路线从*开始,到#结束,我们的路线就是flag*11110100001010000101111#flag应该是222441144222二、eas

2021-03-14 14:59:09 113

原创 每日亿道misc【1】

misc_pic_againStegSolve分析】得到压缩包分析得到

2021-03-14 11:11:56 70

原创 re的学习记录从入门到入狱【5】

C语言的变量一、变量在C语言里,我们存储数据就要把数据存到变量里。变量,就是一个存储数据的容器。声明变量变量类型 变量名;变量类型和函数类型相似,用来说明存储数据的宽度是多大。int 整数型 4字节char 字节型 1字节变量命名规则1、只能以字母、数字、下划线组成,第一位必须是字母或者下划线2、区分大小写3、不可使用关键字二、变量代码的学习1、int a;void main(){ a = 1; return;}2、void main(){ int a;

2021-03-14 09:31:58 61

原创 朴实无华的misc刷题(四)

一、我们的秘密是绿色的这一题用到了我没有见过的工具文档加密工具Our Secret这个软件居然翻译也是我们的秘密我们的秘密是绿色的,所以password是图上的绿色得到了zip压缩包flag是需要密码的,而且注释给出了提示。coffee的生日8位纯数字爆破得出出现了出现了套娃小丑竟是我自己发现他们的readme.txt CRC32的数值是一样的,考虑明文攻击...

2021-03-10 20:40:26 174

原创 re的学习记录从入门到入狱【4】

C语言基础

2021-03-10 20:29:28 174

空空如也

空空如也

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

TA关注的人

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