- 博客(40)
- 收藏
- 关注
原创 BUUCTF Reverse [ACTF新生赛2020]easyre WriteUp
easyre-WP打开后先查查有无壳,发现是UPX加密kali直接脱壳,命令为upx -d easyre.exe脱完壳直接放入IDA查看反汇编代码int __cdecl main(int argc, const char **argv, const char **envp){ _BYTE v4[12]; // [esp+12h] [ebp-2Eh] BYREF _DWORD v5[3]; // [esp+1Eh] [ebp-22h] _BYTE v6[5]; // [esp+2Ah]
2021-09-11 16:15:23 541
原创 BUUCTF Reverse rsa WriteUp
rsa-WP打开文件,发现有有两个文件,拖入HxD发现一个是公钥一个是密文,那么本题的目标就是求解私钥进行解密。先将公钥放入在线工具:http://ctf.ssleye.com/pub_asys.html解析得到e=65537n=86934482296048119190666062003494800588905656017203025617216654058378322103517然后打开RSA-Tool2,将n填入n处,点击Factor N即可分解,但是大数分解特别慢,建议使用在线工具:h
2021-09-11 16:15:05 598
原创 BUUCTF Reverse [GWCTF 2019]pyre WriteUp
pyre-WP首先发现是pyc文件,使用在线工具进行反编译,得到源码#!/usr/bin/env python# visit http://tool.lu/pyc/ for more informationprint "Welcome to Re World!"print "Your input1 is your flag~"l = len(input1)for i in range(l): num = ((input1[i] + i) % 128 + 128) % 128 c
2021-09-11 16:14:47 299
原创 BUUCTF Reverse 简单注册器 WriteUp
简单注册器-WP一个apk文件,直接用jdax-gui打开定位到核心加密部分,将其复制出来,写一个c的解密程序#include <iostream>using namespace std;int main(){ char x[] = "dd2940c04462b4dd7c450528835cca15"; x[2] = (char)((x[2] + x[3]) - 50); x[4] = (char)((x[2] + x[5]) - 48); x[
2021-09-11 16:14:30 327
原创 BUUCTF Reverse [BJDCTF2020]JustRE WriteUp
JustRE-WP首先打开看看,发现有个getflag标签,点击会显示现在点了多少次。拖入IDA中,按shift+F12查看字符串,发现一个很像flag的值双击转到地点,再双击转到汇编窗口再按F5显示反汇编代码INT_PTR __stdcall DialogFunc(HWND hWnd, UINT a2, WPARAM a3, LPARAM a4){ CHAR String[100]; // [esp+0h] [ebp-64h] BYREF if ( a2 != 272 )
2021-09-11 16:14:10 250
原创 BUUCTF Reverse findit WriteUp
findit-WP下载发现是一个APK文件,直接丢进jadx-gui进行反编译,查看源码发现两个奇怪的数组final char[] a = new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'};final char[] b = new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5',
2021-09-11 16:13:51 182
原创 BUUCTF Reverse [GXYCTF2019]luck_guy WriteUp
luck_guy-WP首先用hxd打开看一下,发现是elf文件,直接拖入ida64中F5反编译。进入patch_me进入get_flagunsigned __int64 get_flag(){ unsigned int v0; // eax int i; // [rsp+4h] [rbp-3Ch] int j; // [rsp+8h] [rbp-38h] __int64 s; // [rsp+10h] [rbp-30h] BYREF char v5; // [rsp+18h
2021-09-11 16:13:32 340
原创 BUUCTF Reverse Java逆向解密 WriteUp
java逆向解密-WP扔进jd-gui中进行反编译,得到源代码import java.io.PrintStream;import java.util.ArrayList;import java.util.Scanner;public class Reverse{ public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Please i
2021-09-11 16:12:57 275
原创 BUUCTF Reverse SimpleRev WriteUp
simplerev-WP使用exeinfope查看发现没壳,扔入IDAint __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax char v4; // [rsp+Fh] [rbp-1h] while ( 1 ) { while ( 1 ) { printf("Welcome to CTF game!\nPlease input d/
2021-09-10 18:44:08 775
原创 BUUCTF Reverse 不一样的flag WriteUp
不一样的flag-WP首先双击打开,发现4个选项对应4个操作,猜测是走迷宫放入IDA查看,通过以下两部分判断出*为我们当前位置,1不能走,#为出口又直接看出第一步是向下走,且这里面有25个成员,应该是5x5的大小,最后的得到迷宫图* 1 1 1 10 1 0 0 00 1 0 1 00 0 0 1 01 1 1 1 #最后得到flagflag{222114411222}...
2021-09-10 18:43:23 203
原创 BUUCTF Reverse reverse3 WriteUp
reverse3-WP首先扔到IDA里面,解析出主函数如下int __cdecl main_0(int argc, const char **argv, const char **envp){ int v3; // ebx int v4; // edi int v5; // esi int v6; // eax const char *v7; // eax size_t v8; // eax char v10; // [esp+0h] [ebp-188h] char v
2021-09-10 18:42:24 574
原创 BUUCTF Reverse helloword WriteUp
helloword-WP将apk直接放入jadx-gui点击函数直接看见了flagflag为flag{7631a988259a00816deda84afb29430a}
2021-09-10 18:41:18 155
原创 BUUCTF Reverse xor WriteUp
xor-WP首先吧xor文件扔进IDA里面int __cdecl main(int argc, const char **argv, const char **envp){ int i; // [rsp+2Ch] [rbp-124h] char __b[264]; // [rsp+40h] [rbp-110h] BYREF memset(__b, 0, 0x100uLL); printf("Input your flag:\n"); get_line(__b, 256LL);
2021-09-10 18:40:36 592
原创 BUUCTF Reverse 新年快乐 WriteUp
新年快乐-WP首先放入ExeinfoPE,查出来是UPX的壳放入kali脱壳upx -d 1.exe脱壳后扔入IDA__main(); strcpy(Str2, "HappyNewYear!"); Str1 = 0; memset(v6, 0, sizeof(v6)); printf("please input the true flag:"); scanf("%s", &Str1); if ( !strncmp((const char *)&Str1,
2021-09-10 18:39:52 1060
原创 BUUCTF Reverse 内涵的软件 WriteUp
内涵的软件先打开看一看,发现不管输入啥都报错退出。拖到x32dbg中,执行到exe本体中,搜索字符串找到每次输出语句,向上看一看,发现flag
2021-09-10 18:36:52 189
原创 BUUCTF Reverse reverse2 WriteUp
reverse_2拖入HxD中看见ELF,linux平台的程序,但是懒得开虚拟机了,顺手搜索了一下,看见了一个很像flag的字符串,结果提交试了下,错误的,那么应该是程序对这个字符串做了一些操作。拖入IDAv8 = __readfsqword(0x28u); pid = fork(); if ( pid ) { waitpid(pid, &stat_loc, 0); } else { for ( i = 0; i <= strlen(&f
2021-09-10 18:35:53 214
原创 BUUCTF Reverse reverse1 WriteUp
reverse_1先打开软件看一看,是一个要求输入flag的题目。拖入x64dbg,先从dll执行到本身,然后查找字符串,flag拿到了,注意是0不是o!!
2021-09-10 18:34:37 276
原创 BUUCTF Reverse easyre WriteUp
easyre拿到题目先打开看看,输入两个值后会执行完毕,看不见信息,那么只能确定有两个输入。拖IDA看看代码就出来了。
2021-09-10 18:33:01 219
原创 逆向学习笔记之汇编04
ESP寻址ESP--栈顶指针寄存器,存储了堆栈现在用到的地方优点:调用方便缺点:如果函数同时使用多个寄存器,则寄存器的值要保存入栈,此时ESP的值会发生改变所以在读取堆栈中所需数据时,要灵活使用ESP+4,8,16等最后注意堆栈平衡!EBP寻址EBP--栈底指针寄存器具体为在进入函数前让EBP的值等于ESP,这样后续存入的数据影响ESP的值但是我们使用未受影响的EBP进行寻址,同时让ESP减去一个自然数,相当于开辟了一块空间专供此函数使用PUSH EBPMOV EBP,ESPSUB
2021-02-01 11:08:23 121
原创 逆向学习笔记之汇编02
常用汇编指令MOV指令r代表通用寄存器,m代表内存,imm代表立即数,r8代表8位通用寄存器,m8代表8位内存,imm8代表8位立即数MOV 目标操作数,源操作数MOV r/m8,r8MOV r/m16,r16MOV r/m32,r32MOV r8,r/m8MOV r16,r/m16MOV r32,r/m32MOV r8,imm8MOV r16,imm16MOV r16,imm32源操作数:立即数,通用寄存器,段寄存器,内存单元目标操作数:通用寄存器,段寄存器,内存单元二者数据
2021-01-30 16:51:12 183
原创 逆向学习笔记之汇编03
堆栈[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ugzcSnXD-1611996212242)(http://pb.plumpboy.com/blog/20210129/CQDQ1Hpvi1wx.png?imageslim)]什么是堆栈?程序执行的过程中由操作系统分配可使用的一块内存,要是用超了就是堆栈溢出。ESP寄存器被称为栈指针寄存器,存储了当前的堆栈用到了哪里。 堆栈的使用堆栈使用时是大地址往小地址用,每次使用后要修改栈顶指针ESP寄存器,防止数据被顶掉
2021-01-30 16:43:52 168
原创 逆向学习笔记之汇编01
寄存器电脑可以在三个地方存储数据,CPU>RAM>ROM寄存器就是CPU内的存储器存储格式:32位CPU:8 16 3264位CPU:8 16 32 64通用寄存器16位是32位的低位,两个8位组成一个16位。32位 16位 8位EAX AX AH+ALECX CX CH+CLEDX DX DH+DLEBX BX BH+BLESP SP EBP BP ESI SI
2021-01-28 14:04:32 131
原创 逆向学习笔记之汇编00
数据宽度计算机中数据有长度限制,超过最高宽度的数据会被丢弃。1.位(bit):一个0或12.字节(byte):8位3.字(word):16位4.双字(doubleword):32位存储范围1.字节:0~0xFF2.字:0~0xFFFF3.双字:0~0xFFFFFFFF有符号数和无符号数无符号数的编码规则无符号数没有负数,全为正数,这个数是多少就存多少例:1001 1010=0x9A有符号数的编码规则若有符号数最高位是0时为正数,最高位是1时为负数。1.原码:最高位为符号位
2021-01-26 17:11:04 141
原创 超详细教程用云服务器+Hexo搭建个人博客
一.准备工作一台云服务器(我用的是CentOS8.0)一个域名(提前解析到云服务器)Xshell或者MobaXterm等ssh连接服务器的软件二.服务器端配置1.安装Nginxyum install nginx ##安装Nginx,后续要输入一个Ysystemctl start nginx ##启动Nginxsystemctl enable nginx ##设置开机自启此时在浏览器地址栏输入服务器公网IP,若出现下面画面则安装完成2.配置Nginx创建托管文件目录cd
2021-01-23 13:03:25 751 1
原创 C语言简易的学生信息管理系统2.0
实现增删改查,每项数据的最大最小值,从高到低,从低到高排序。添加大量误操作提示。#include<stdio.h>#include<math.h>struct student{ int num; char name[10]; int chinese,math,english,science,total; }; struct student s[30];in...
2020-03-23 12:15:37 344
原创 机器人行走问题
机器人行走问题#include<stdio.h>int main(void){ int u,d,r,l,i,a,c,result; char b; r=u=l=d=result=0; scanf("%d",&a); b=getchar(); for(i=1;i<=a;i++) { scanf("%d",&c); if(c==1) ...
2020-03-17 12:15:41 258
原创 计算邮费
计算邮费#include<stdio.h>int main(void){ int m,n,N; double p; while(scanf("%d%d",&m,&n)!=EOF) { scanf("%d%d",&m,&n); if(m==1) { n=n-5000; if(n<=5000) { p...
2020-03-17 12:14:07 1375
原创 查验身份证
查验身份证一个合法的身份证号码由17位数字(包含地区、出生日期和顺序编号)加1位校验码组成。校验码的计算规则如下:(1)首先对前17位数字加权求和,权重分配为: (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4,3,)(2)然后将计算的和对11取模得到值Z;(3)最后按照以下关系对应Z值与校验码M的值Z: 012345678910M:...
2020-03-17 12:03:54 150
原创 函数实现字符串逆序
函数实现字符串逆序本题要求实现一个字符串逆序的简单函数。函数接口定义:void f( char *p );函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。输入样例:Hello World!输出样例:!dlroW olleH#include <stdio.h>#define MAXS 20void f( char *p...
2020-03-17 11:47:34 1939
原创 使用函数的选择法排序
使用函数的选择法排序本题要求实现一个用选择法对整数数组进行简单排序的函数。函数接口定义:void sort( int a[], int n );其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。输入样例:45 1 7 6输出样例:After sorted the array is: 1 5 6 7#include <...
2020-03-17 11:45:40 1677
原创 使用函数求1到10的阶乘和
使用函数求1到10的阶乘和本题要求实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算1!+2!+⋯+10!的值。函数接口定义:double fact( int n );其中n是用户传入的参数,其值不超过10。如果n是非负整数,则该函数必须返回n的阶乘。输入样例:本题没有输入。输出样例:1!+2!+…+10! = 4037913.000000#include <st...
2020-03-17 11:44:28 9660
原创 使用函数验证哥德巴赫猜想
使用函数验证哥德巴赫猜想本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式...
2020-03-17 11:40:28 1599
原创 使用函数求特殊a串数列和
使用函数求特殊a串数列和给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。函数接口定义:int fn( int a, int n );int SumA( int a, int n );其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。输入样例:2 3输出样例:fn(2, 3) = 222s = 246#include ...
2020-03-17 11:38:48 645
原创 使用函数求余弦函数的近似值
使用函数求余弦函数的近似值本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x)=x0 /0!−x2 /2!+x4 /4!−x6 /6!+⋯函数接口定义:double funcos( double e, double x );其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差...
2020-03-17 11:37:24 672
原创 使用函数统计指定数字的个数
使用函数统计指定数字的个数本题要求实现一个统计整数中指定数字的个数的简单函数。函数接口定义:int CountDigit( int number, int digit );其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。输入样例:-21252 2输出样例:Number of digit 2...
2020-03-17 11:35:36 1935
原创 C语言版简易的学生成绩管理系统
主要功能有增加信息,改动信息,查找信息,从低到高和从高到低排序,最大值最小值等#include<stdio.h>#include<math.h>struct student{ int num; char name[10]; int chinese,math,english,science,total; }; struct student s[30];int...
2020-03-15 22:35:35 1049 3
原创 使用函数求素数和
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入...
2020-03-13 23:41:48 759
原创 使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1 ,y1)和(x2,y2 ),求这两点之间的距离。函数接口定义:double dist( double x1, double y1, double x2, double y2 );其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函数dist应返回两点间的距离。输入样例:10 10 200 100输...
2020-03-13 23:36:24 1423
原创 符号函数,本题要求实现符号函数sign(x)
符号函数,本题要求实现符号函数sign(x)。其中x是用户传入的整型参数。符号函数的定义为:若x大于0,sign(x) = 1;若x等于0,sign(x) = 0;否则,sign(x) = −1。输入样例:10输出样例:sign(10) = 1#include <stdio.h>int sign( int x );int main(){ int x; ...
2020-03-13 23:33:31 8438
原创 (长期贴)C语言易错点总结
本帖主要汇总我在学习C语言过程中自己出现的一些错误,踩的一些雷区,希望你看完之后能少犯一些错误 ヾ(๑╹◡╹)ノ"标识符规范: 标识符必须由字母,下划线或数字组成。 标识符必须以字母或下划线开头。 关键字不可作为标识符。 由于C语言中严格区分大小写,故某一字符大写的标识符仍为合法标识符,例如Int或printF(使用时不建议如此命名标识符)整数除以整数结果还是整数,这个结果为...
2019-11-15 08:40:55 628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人