- 博客(34)
- 收藏
- 关注
原创 逆向工程入门
逆向工程 REVERES1.逆向工程简介及发展方向软件逆向工程是一种探究应用程序内部组成结构及工作原理的技 术. 运用逆向分析技术, 窥探程序内部结构, 掌握其工作原理.– 《逆向工程核心原理》逆向工程,顾名思义,将已经完成的程序经行反编译以找到其内部隐藏细节的过程,我们将其称之为逆向工程第一步,我们将通过各种信息收集工具,对要进行逆向分析的程序进行信息处理第二步,我们将存在保护的目标程序经行去加密,并且备份其源文件第三步,将目标程序拖入静态分析或动态调试软件中经行处理(代码审计或debug)
2021-10-24 16:52:51 14035 2
原创 BUUCTF - [FlareOn6]Overlong
交流逆向工程相关知识 +Q1906661021下载题目之后,打开看到了一个安装程序一开始还以为是对这个安装程序逆向,后来发现只是个下发题目的软件找个地方把题目弄下来打开题目之后,发现如上窗口弹出,既无输入也无按钮,总感觉冒号后面有东西没有写完利用逆向软件分析一通进入ida之后发现,代码简短的吓人,基本只是对数据进行处理之后,直接用messagebox输出,来看看是怎么处理的数据。
2022-11-10 10:55:15 684 1
原创 BUUCTF-[FlareOn5]Minesweeper Championship Registration
打开压缩包,发现.jar文件,扔到jd-gui里看看。额,好像就是让输入这个邮箱,可能是个签到题吧。
2022-11-09 11:16:07 249
原创 [MRCTF2020]Transform
直接打开main函数,没有混淆,分析逻辑,做了一次异或操作之后与res数组进行比较。打开die把程序扔进去,64位PE文件,扔到ida64里。交流逆向工程相关知识 +Q1906661021。这道题目还是挺简单的。
2022-11-09 10:57:41 299
原创 BUUCTF - [GWCTF 2019]xxor 1
[GWCTF 2019]xxor 1其实看到这道题的名字,我感觉它做了两次异或操作 ,废话不多说,开始分析64位ELF,打开Linux运行一下大概是输入6个字符,经行位操作,然后判断吧,拖进ida分析下思路很清晰的一道逆向题目,应该考验的是对数据存储的理解和写脚本的能力,研究一下它的逻辑这应该就是它的关键函数了,之前的input1数组是把输入的数据存起来,然后经行操作后存到v7中进行判断注意HIDWORD()和LODWORD()的宏定义#define HIDWORD(x) (*((_
2021-11-27 11:41:57 1773 1
原创 BUUCTF - [2019红帽杯]easyRE
BUUCTF - [2019红帽杯]easyRE个人认为这道题是最近我刷的题目中难度较高的了,也是自己能力问题,不多说了,开始做题这篇文章配图规律为,图片在上文字在下,希望大家还看到习惯拖入die分析,elf64位文件,打开Linux跑跑看输错就退出,毫不讲理…那咱直接上静态分析吧,这里跟大家说一下哈,我的做题的习惯一般是静态分析无果,才去寻求动态调试,并不是说这道题用动态的方法做不出来,有能力的师傅可以自己去动态,我就继续坚持我的习惯了。shift+F12看看字符,看到字符表,肯定用到了
2021-11-23 16:16:29 1071 2
原创 BUUCTF - [WUSTCTF2020]level1
BUUCTF - [WUSTCTF2020]level1题目给了我们两个文件一个程序,一个output开始分析程序文件64位ELF文件,无保护进入64位ida进行分析很简单的main函数,有output数据,咱去写个python脚本,应该就出来了ls = [198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000]for i in range(0,1
2021-11-20 23:50:20 2664
原创 BUUCTF - [BJDCTF2020]JustRE 1
BUUCTF - [BJDCTF2020]JustRE 1十分简单的逆向题目,但是涉及到WindowsAPI的使用,可以作为这类题目的入门1.正向观察程序,发现一个突破点2.拖入逆向工具进行分析32位程序,无壳3.拖入IDA分析观察后发现,程序是WindowsAPI的使用,跳过前期初始化,找咱们感兴趣的点,查看字符串跟进分析点击19999次后显示flag(倒是也没骗人hh)把sprintf里面的format带入进去得到flag:BJD{1999902069a45792d2
2021-11-18 19:32:33 2066
原创 HTML(三)
第三次培训 :伪类动画一 伪类:hover选择鼠标指针浮动在其上的元素,并设置其样式<div class="a"></div>.a{ height: 400px; width: 100%; background-color: cadetblue;}.a:hover{ background-color: gray;}:active选择鼠标点击时的元素,并设置其样式<div class="a"></div>.a{ h
2021-11-06 16:03:13 91
原创 HTML(二)
第二次培训:开始魔改div一 . div选择器1. class 类<div class="class_name"> <div class="content"></div> <span></span></div>.class_name{ background-color:blue;}.class_name span{ }2. id 身份<div id="id_num">
2021-11-06 16:02:19 151
原创 HTML(一)
HTML概念什么是HTML?HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)那么什么是超文本呢?超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。这些信息可以是文字、图片、链接、视频,超文本将这些东西整合在一个页面或者一系列的页面里,用链接将他们联系起来。一个最基本的HTML结构<!DOCTYPE html
2021-11-06 16:00:10 326
原创 BUUCTF-Reverse reverse2
BUUCTF-Reverse reverse2所用软件1.IDA PRO(静态分析工具)逆向步骤1.下载reverse_2并将其改为.exe格式尝试打开,失败。2.将reverse_2放入IDA中进行分析摁shift+F12查看字符串找到两个神奇的东西,尝试进行分析3.寻找线索虽然没有找到flag这个字符串但有上图这个东西4.找到main函数找线索代码将字符串里的i和r变化成1我们替换后可以找到flag{hack1ng_fo1_fun}...
2021-05-20 00:14:32 325
原创 BUUCTF-Reverse reverse1
BUUCTF-Reverse reverse1所用软件1.IDA PRO(静态分析工具)2.exeinfope(查壳工具)逆向步骤1.下载reverse_1.exe,并将其打开无可用信息,继续下一步2.将reverse_1.exe放入exeinfope中进行查壳可知reverse_1.exe没有加壳。3.将reverse_1.exe放入IDA中、摁shift+F12查看程序字符串从最可疑的部分入手,并摁F5进行反编译。找到如下函数,此函数的功能大概率为将我们所输入的字符串与fla
2021-05-19 21:14:44 821
原创 BUUCTF-Reverse easyre1
BUUCTF-Reverse easyre1所用软件1.IDA PRO(静态分析工具)2.exeinfope(查壳工具)操作步骤1.下载easyre.exe并将其打开(只有控制台,无提示信息)2.将easyre.exe放入exeinfope中查壳发现程序没有加壳,直接放入IDA中进行静态分析。3.静态分析进入IDA中后,摁Shift+F12,查看程序所包含字符串。找到flag{this_Is_a_EaSyRe}...
2021-05-19 20:21:36 843
原创 PTA - B1013 数素数【c/c++】
PTA - B1013 数素数【c/c++】令 PiP_iPi 表示第 $i $个素数。现任给两个正整数 M≤N≤104,请输出 PMP_MPM 到 PNP_NPN 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从PMP_MPM到 的PNP_NPN所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71
2021-04-28 20:34:30 112
原创 PTA-B1012 数字分类【c/c++】
PTA-B1012 数字分类【c/c++】给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1 = 能被 5 整除的数字中所有偶数的和;A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4n_1−n_2+n_3−n_4n1−n2+n3−n4⋯;A3 = 被 5 除后余 2 的数字的个数;A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A5 = 被 5 除后余 4 的数字中最大数字。输入格式:每个输入包
2021-04-28 19:48:58 281
原创 PTA-B1010 一元多项式求导【c/c++】
PTA-B1010 一元多项式求导【c/c++】设计函数求一元多项式的导数。(注:xnx_nxn(nnn为整数)的一阶导数为 nxn−1nx^{n−1}nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。输入样例:3 4 -5 2 6 1 -2 0输出样例:1
2021-04-28 17:41:39 144
原创 PTA-B1007 素数对猜想【c/c++】
PTA-B1007 素数对猜想【c/c++】让我们定义dnd_ndn为:dn=pn+1−pnd_n=p_{n+1}−p_ndn=pn+1−pn,其中pip_ipi是第iii个素数。显然有d1=1d_1=1d1=1,且对于n>1有dnd_ndn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10510^5105),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的
2021-04-14 17:27:59 211
原创 《算法笔记》4.1.2 节 —— 插入排序
《算法笔记》4.1.2 节 —— 插入排序 插入排序是最简单的一类排序方法,也是笔者在学习《算法笔记》的过程中,第一个感觉需要细心研究的排序方法相比于选择排序和冒泡排序来讲,选择排序对数组操作的要求上升了一个等级,个人认为对入门算法有很好的启蒙作用。原理阐释:我们先避开概念不谈,直接来看一个实例:这里有一个顺序混乱的整型数组 {5,2,4,6,3,1}\{5,2,4,6,3,1\}{5,2,4,6,3,1} 我们将按照插入排序的方法对其进行排序我们假设前面的单个数字 5 是有序的后面的数字皆
2021-04-04 15:08:15 93
原创 《算法笔记》 5.4.2 节 —— 素数表的获取
《算法笔记》 5.4.2 节 —— 素数表的获取一般方法的分析:根据一般的判断素数方法,我们已经可以从 111 ~ nnn 中打印素数表,即从111 ~ nnn 进行枚举,判断每个数是否为素数,如果是素数就加入素数表,这种方法的时间复杂度是 O(n)O(n)O(n) 而判断素数的时间复杂度为O(n)O(\sqrt{n})O(n) ,因此总时间复杂度为 O(nn)O(n\sqrt{n})O(nn) 这个复杂度对于 n 不超过 10510^5105的大小是没有问题的。例(求解100以内所有的素数)
2021-04-03 22:16:23 160
原创 PTA-B1008 数组元素循环右移问题 【c/c++】
PTA-B1008 数组元素循环右移问题 【c/c++】一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯A**N−1)变换为(A**N−M⋯A**N−1A0A1⋯A**N−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中
2021-04-03 00:02:51 96
原创 《算法笔记》 5.4.1 节——素数的判断
《算法笔记》 5.4.1 节——素数的判断素数的定义:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。我们可以理解为一个整数 n 需要被判定为素数,需要判断 n 能否被 2,3⋯(n−1)2,3\cdots (n-1)2,3⋯(n−1)中的一个整除。都不能整除的数即可判定为素数。但这种方法的时间复杂度为 O(n)O(n)O(n),在许多题目中,判断素数只是题目的一部分,如此的时间复杂度实际上对程序可通过性影响很大,需要更加快速的判定方法。改进:我们假设在
2021-04-01 16:23:24 235 3
原创 PTA-B1009 说反话【c/c++】
PTA-B1009 说反话【c/c++】给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come输出样例:Come I Here World Hello
2021-04-01 15:42:16 143
原创 PTA-B1006 换个格式输出整数【c/c++】
PTA-B1006 换个格式输出整数【c/c++】让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出 n。输入样例 1:234输出样例 1:BBSS
2021-04-01 11:43:50 68
原创 PTA-B1011 A+B 和 C【c/c++】
PTA-B1011 A+B 和 C【c/c++】给定区间 [−231,231] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。输入样例:41 2 3
2021-04-01 11:28:32 85
原创 PTA-B1004 成绩排名【c++】
PTA-B1004 成绩排名【c++】读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成
2021-04-01 11:19:35 183
原创 PTA-B1002 写出这个数 【c/c++】
PTA-B1002 写出这个数 【c/c++】读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输出样例:yi san wu#include <stdio.h>#include
2021-04-01 09:03:56 115
原创 PTA-B1001 害死人不偿命的(3n+1)猜想【c/c++】
PTA-B1001 害死人不偿命的(3n+1)猜想卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,
2021-03-31 16:43:24 84
原创 《算法笔记》4.5.3 节——快速幂
《算法笔记》4.5.3 节——快速幂首先由一个问题引出:给定三个正整数a,b,m(a < 10910^9109,b < 10610^6106,1< m < 10910^9109),求aba^bab%m:long long a, b, m;long long ans = 1;for (int i = 0; i < b; ++i){ ans = ans * a % m;}return ans;这种最简单的写法时间复杂度为O(b)但如果对于(a < 10
2021-03-31 15:54:52 124
原创 [极客大挑战 2019]Upload1
[极客大挑战 2019]Upload1STEP1:绕过前端并且更改文件后缀名显示:STEP2:更改文件头和php文件表示方式显示:得到结果:STEP3:利用蚁剑连接服务器得到flag:
2021-03-31 10:15:51 107
原创 [MRCTF2020]你传你呢1
[MRCTF2020]你传你????呢1STEP1:尝试改写文件头和和文件内容显示:判断可能与user.ini或.htaccess文件有关STEP2:上传.htaccess文件显示:上传成功,上传一个1.png文件STEP3:上传1.png文件包含一句木马显示:STEP4:蚁剑连接显示:得到flag...
2021-03-31 09:50:20 1636 1
原创 [ACTF2020 新生赛]Upload1
[ACTF2020 新生赛]Upload1STEP1:尝试正常进行上传显示:STEP2:尝试绕过前端检验利用burp抓包更改传输文件并且将文件后缀名改为.phtml。显示:STEP3:利用蚁剑连接服务器得到flag
2021-03-31 09:48:28 605
原创 [PTA B1022] D 进制的 A+B
[PTA B1022] D 进制的 A+B题目描述:输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数 A、B 和 D。输出格式:输出 A+B 的 D 进制数。输入样例:123 456 8输出样例:1103int a, b, D;scanf("%d %d %d", &a, &b, &D);int sum = a + b;int ans[40], nu
2021-03-31 09:46:03 73
原创 《算法笔记》3.5节——进制转换
《算法笔记》3.5节——进制转换对于一个P进制数x如果要转换为Q进制,需要分为两步:① 将 P 进制数 x 转换为十进制数 y对于一个十进制的数 y = d1d2⋯dnd_1d_2\cdots d_nd1d2⋯dn,它可以写成:y = d1∗d_1\astd1∗10n−110^{n-1}10n−1 +++ d2∗d_2\astd2∗10n−210^{n-2}10n−2+++ ⋯\cdots⋯ +++dn−1∗d_{n-1}\astdn−1∗101010 +++ dnd_ndn同样的,
2021-03-31 09:27:44 122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人