自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode远程开发配置

1. 环境介绍1. 本地为windows2. 远程为linux2. 本地安装ssh环境我这里下载了git,所以在环境变量里把/git/usr/bin加进去就可以了3. 本地vscode安装远程开发插件Remote-development是一个集成插件,安装它就可以了4. 生成ssh秘钥对,并将公钥放入远程机# 本地机生成秘钥对$ ssh-keygen -t rsa -f "~/.ssh/authorized_keys"# 在远程机上使用rz将authorized_keys.pub下

2021-08-18 13:21:01 819 1

原创 通过读取maps信息获取可执行文件头装载的地址

1. 通过maps文件获取进程的文件头和段表想要实现这一功能,根据书上所写,首先要找到代码段的首地址BaseVaddr,然后文件头就从这个地址开始,用ptrace从这个地址读一个sizeof(Elf64_Ehdr)大小的数据出来就可以了但是,我在实现的时候遇到的一个问题,读出来的结果压根不对,其结果如下所示$ sudo ./reconstruct 12127BaseVaddr: 0x401000ELF header:magic: f3 f 1e fa ff ff ff ff 48 8b

2021-06-18 22:26:27 548

原创 通过ptrace跟踪进程2

相关连接项目地址 —— linux binary analysis: 《linux二进制分析》学习 (gitee.com)上一篇博客 —— 通过ptrace跟踪进程 - bunner - 博客园 (cnblogs.com)1. 任务环境和目标1.1 实验机器Ubuntu 20.04 64位1.2 任务目标给定一个可执行文件或进程pid,其进程执行内容为:执行20次print_string函数,要求本程序跟踪print_string函数,并在目标进程每次执行print_string函数时

2021-06-11 11:30:29 202 2

原创 通过ptrace跟踪进程

1. 任务环境与目标1.1 实验机器Ubuntu 20.04 64位1.2 任务目标给定一个可执行文件,该程序调用两次print_string函数,分别输出Hello 1,Hello 2,要求在print_string处下断点,并输出该处时的各寄存器值2. 原理2.1 ptraceptrace的函数原型为:long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);那么有关本任务中涉及到的一些re

2021-06-10 12:15:22 814 1

原创 解析ELF可执行文件-C语言

解析代码/* gcc elfparse.c -o elsparse */#include <stdio.h>#include <string.h>#include <errno.h>#include <elf.h>#include <unistd.h>#include <stdlib.h>#include <sys/mman.h>#include <stdint.h>#include &lt

2021-06-09 10:34:12 597

原创 ubuntu桌面出现两个dock

问题如图,ubuntu桌面出现了两个dock原因gnome-tweak安装的dash-to-dock与ubuntu自带的dock重叠了解决方式$ cd /usr/share/gnome-shell/extensions# 将自带的dock移到其他地方$ sudo mv [email protected] ~/然后重启即可解决该问题...

2021-06-07 18:41:00 1697

原创 ret2dir漏洞复现

参考的博客:linux kernel pwn 之 ret2dir 学习ioctl系统调用过程(深入Linux(ARM)内核源码)ret2dir漏洞复现原理ret2dir是利用内核空间和用户空间的隐性地址共享来实现对一些SMEP和SMAP保护机制进行绕过SMAP保护机制保证了内核只可以对内核空间里的数据进行访问,而physmap恰好处在内核空间中,却可以映射用户空间映射的物理地址SMEP保护机制保证了内核态下无法执行用户空间的代码liinux x86_64内存布局低128TB为用户空间

2021-03-19 23:52:06 409

原创 浏览器打开时自动跳转到搜狗页面

原因因为在第三方网站下载了流氓软件,安装时给我所有的浏览器都修改成打开时自动跳转到搜狗页面解决拿edge举例打开edge所在位置右键edge,属性在快捷方式页面中删除目标项的后缀网址在常规页面中取消"只读"属性应用再将属性修改为只读第三方下载还是需谨慎...

2021-03-16 11:22:43 5436 7

原创 信息安全复习

一、米特尼克圣诞攻击1、前提环境介绍A:目标机B:被目标机信任的主机X:不可到达的主机Z:攻击机2、Z对B进行DOS攻击Z利用SYN包洪泛使得B的内存空间被占满。具体原理如下:每一台主机会维护一个TCP连接队列,这个队列里面存放的是未完成的连接和已完成但尚未取出的连接,其大小由backlog控制,如果队列满,那么该主机会丢弃之后发过来的SYN包。那么Z利用虚假的ip X对B大量发送SYN包,而X并不会对B发过来的SYN + ACK包进行响应,所以该连接就一直会处在未完成状态占用B的

2021-03-07 15:14:29 435

原创 算法导论复习

一、数据结构1、红黑树、序统计树、区间树1.1 红黑树的性质每个节点是红色或黑色的根节点是黑色的叶节点是黑色的红色节点的两个孩子节点都是黑色的从一个节点到后代任意叶节点的简单路径上,黑色节点数相同,即黑高相同1.2 红黑树的应用 - 顺序统计树、区间树的定义、构造顺序统计树顺序统计树是一种支持快速顺序统计操作的一种数据结构其可以在 O(lg(n))O(lg(n))O(lg(n)) 复杂度下去定位一个节点的秩,或找到秩为 xxx 的节点它在红黑树的基础上,在每个节点中添

2021-03-04 22:50:08 189 1

原创 Linux二进制分析-ELF格式分析及符号重定位

ELF文件类型ET_NONE:未知类型。ET_REL:重定位文件。通常是还未被链接到可执行程序中的一段位置独立的代码,例如linux中的.o格式的文件。ET_EXEC:可执行文件。ET_DYN:共享目标文件。ELF类型为dynamic,意味着该文件被标记为了一个动态的可连接的目标文件,也称为共享库,这类共享库会在程序运行时被装载并链接到程序的进程镜像中。ET_CORE:核心文件,在程序崩溃或进程传递了一个SIGSEGV信号(分段违规)时,会在核心文件中记录整个进程的镜像信息。ELF文件结构

2021-03-04 17:10:08 951 1

原创 Buuoj-reverse-ACTF新生赛2020_usualCrypt

1. 分析文件类型,是否加壳将文件扔进exeinfope中查看,发现是无壳的32位可执行程序2. 使用IDA对文件进行分析此处的main函数代码较为简单,其逻辑为接收输入,用 sub_401080 函数对其进行处理,处理后的结果若与byte_40E0E4 处字符串相同,则该输出即为flag。所以我们的重点应该放在 sub_401080 函数上。分析 sub_401080 函数的逻辑从上面两幅图的分析中可以得到,函数sub_401080的作用就是进行base64编码,**只是它还将原本的编

2021-02-23 22:02:23 242

原创 BUUOJ-[BIDCTF2020]-easy

拿到一份exe可执行程序,按照下面步骤进行解题分析文件是否加壳等将文件扔进exeinfope,发现为32位无壳的exe文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owAZcvk3-1614067093793)(https://ae01.alicdn.com/kf/Uaf68ad7a08b04919b35674d2274b19bbq.jpg)]...

2021-02-23 16:19:46 131

原创 IDA动态调试

1. 加载目标文件,选择调试器使用IDA打开目标文件。使用菜单项上的"Debugger",单击"Select Debugger",再根据当前的文件类型选择合适的调试器。我这里调试exe文件时一般使用 Local Windows debugger 或 Remote Windows Debugger。...

2021-02-23 15:50:23 8499 2

原创 进程的虚拟内存

程序和进程的区别程序是一个静态的概念,它就是预先编译好的指令和数据集合的一个文件(狭义上讲它就是一个可执行文件)。进程是一个动态的概念,它是程序运行时的一个过程。虚拟地址空间程序在被运行起来后,也即进程,拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小由计算机硬件平台所决定,具体的是由CPU地址线的数量所决定,例如16位CPU决定了其虚拟地址空间的地址为 0 到 216−12^{16}-1216−1,也即 0x0000 ~ 0xFFFF,而32位CPU则具有32位寻址能力。...

2021-02-21 22:38:14 766 3

原创 如何使用Burpsuite进行爆破?

拿buuoj中 GUET-CTF2019-re 来举例首先我们已经知道了该题的flag为flag{e$x$65421110ba03099a1c039337}其中 x 就是我们需要爆破的点,所以我们需要先生成爆破用的payload"flag{e065421110ba03099a1c039337}""flag{e165421110ba03099a1c039337}""flag{e265421110ba03099a1c039337}""flag{e365421110ba03099a1c03933

2021-02-08 17:06:47 10383 2

原创 我的git分支工作流程

1、pull远程main分支,更新本地main分支与远程main保持同步$ git pull2、创建本地dev分支$ git branch dev$ git switch dev3、在本地dev分支上进行开发4、本地dev分支开发完成,先将本地dev分支内容提交到暂存区$ git add .$ git commit -m ""5、切回main分支,再次与远程main分支保持同步$ git switch main$ git pull6、合并本地dev分支到本地main分支$

2021-01-31 12:59:16 157

原创 git切换分支时自动同步

问题描述在dev分支下创建一个文件用git switch main切换回主分支发现主分支下也出现了这个文件解决在dev分支上进行的修改操作后,若没有使用git add .及git commit命令提交到缓存区的话,直接切换分支就会出现这种情况...

2021-01-27 11:26:34 866

原创 安卓逆向-jeb的安装及使用

安装1、首先去下面给出的网站下载jeb-2.2.7.201608151620_crack_qtfreet00.ziphttps://down.52pojie.cn/Tools/Android_Tools/2、安装jdk1.8.0_121,亲测高版本不行3、启动jebwindows系统上使用jeb_wincon.bat来启动使用查看源码打开Bytecode,选中任意文件后通过q键可以查看源码,例如下面可以单击A2再按q来查看源码查看函数的引用若想查看某个函数的调用,右键该函数,点

2021-01-17 20:12:08 6118 1

原创 buuoj-相册

解题拿到手解压后是一个apk文件,扔到 jeb 中根据题目提示,拿到完整邮箱即可,以及查看cn包下的文件名,用字符串搜索mail 【ctrl+F】从上图中可以发现一个名为sendMailByJavaMail的函数,用快捷键q来看看源码从上图发现v1.set_to(new String[](arg6)),该代码意为将arg6设置为邮件接收者,所以我们需要寻找调用该函数的代码【右键该函数,单击Cross references】进入MainTask查看发现第一个参数为C2.MAILSE

2021-01-17 20:01:30 292

原创 icmp重定向攻击实验

使用netwox测验实验环境:攻击机:kali linux 192.168.181.129靶机:ubuntu20.04 192.168.181.131默认网关:192.168.181.21、安装必要工具# 安装 ifconfig 等网络命令$ sudo apt-get install net-tools# 安装 traceroute$ sudo apt-get install traceroute# 安装 netwox 工具, 攻击机需要$ sudo apt-get install

2020-12-27 21:32:37 2859

原创 adworld-crypto-onetimepad

有限域GF,本原多项式PGF上的加法为异或运算GF上的减法为异或运算GF上的乘法为移位异或,且乘法群为循环群GF上的除法即为乘上逆元有限域上的运算实现拿到题目,给了三段密文和一段加密代码af3fcc28377e7e983355096fd4f635856df82bbab61d2c50892d9ee5d913a07f630eb4dce274d29a16f86940f2f35253477665949170ed9e8c9e828794b5543ce913db07cbe4f433c7cde.

2020-10-25 16:18:51 353

原创 adworld-crypto-Easy_Crypto

拿到文件是一段加密代码,吐槽一句,格式过于粗糙 ,所以我用python重写一下就是这样:s = []t = []key = 'hello world'falg = '???????'for i in range(256): s.append(i) t.append(ord(key[i % len(key)]))j = 0for i in range(256): j = (j + s[i] + t[i]) % 256 s[i], s[j] = s[j], s

2020-10-24 20:07:27 234

原创 adworld-pwn-guess_num

本题考查知识点srand()函数和rand()函数的随机数生成规则gets()函数漏洞 – 实现栈溢出check_sec扔到IDA分析代码逻辑srand()函数和rand()函数前者设置随机种子,后者产生随机数设置随机种子之后,随机数是循环产生的从上图中可以看到v8和seed之间的位置关系,而v8是通过gets()函数输入的,我们可以通过栈溢出,从而达到设置seed的目的v8 占用0x20个字节seed 占用8个字节所以我们构造下面的payload即可设置se.

2020-10-21 23:47:16 196

原创 adworld-crypto-说我作弊需要证据

参考:大佬的题解入手一个pcapng文件,拿到wireshark看一下初步想法:从所有文件里找data length不一样的,于是在所有的文件里面发现了42号包,其data length为113,拿出data内容用base64解码一下,得到如下结果:b'SEQ = 9; DATA = 0x26debd9510c16fbed4f6264e8b60L; SIG = 0x4ae0f894af2e414835513891bd55L;'发现了三个元素,seq为序号,data为数据,sig为签名那么

2020-10-21 22:43:21 292

原创 adworld-crypto-Easy-one

大致思路:根据加密代码和已知明文和密文,解出秘钥,进而解给定密文拿到题目,给了一份加密代码,一份测试明文和测试密文,以及一份密文加密代码在这里可以分析出来加密逻辑就是c = (p + (k[i % strlen(k)] ^ t) + i*i) & 0xff;其中k是秘钥,t是上一个字符(初始为0)#include <stdlib.h>#include <stdio.h>#include <string.h>int main(int ar.

2020-10-21 13:51:15 159

原创 adworld-crypto-RSA_gcd

给定两个不同的n的时候一定要看看n1,n2有没有最大公约数(素数),如果有,那么该最大公约数就是两者共同的p给定两个相同的n的时候,那就要考虑共模攻击了拿到题目,有两个文件,里面分别有n,e,c看了一下两份文件的e相同,n不同题目的名字是RSA_gcd,自然想到了求n1n_1n1​,n2n_2n2​的最大公约数求出的最大公约数若为素数的话,那么它就是p,题目自然就解出来了import gmpy2def get_p(n1, n2): p = gmpy2.gcd(n1, n2)..

2020-10-21 11:56:18 605

原创 adworld-crypto-enc

拿到题目用cat命令看一下,发现全是’ZERO’, ‘ONE’于是转成01串,再转成16进制串,再转成字符串,变成了这样:Li0gLi0uLiAuIC0uLi0gLS4tLiAtIC4uLS4gLSAuLi4uIC4tLS0tIC4uLi4uIC0tLSAuLS0tLSAuLi4gLS0tIC4uLi4uIC4uLSAuLS0uIC4uLi0tIC4tLiAtLS0gLi4uLi4gLiAtLi0uIC4tLiAuLi4tLSAtIC0tLSAtIC0uLi0gLQ==用 base64 解码一下

2020-10-21 11:33:38 183

原创 adworld-crypto-cr2-many-time-secrets

题目信息没给全,看了别人的博客才发现还有一段描述This time Fady learned from his old mistake and decided to use onetime pad as his encryption technique, but he never knew why people call it one time pad! Flag will start with ALEXCTF{.从上面这段描述来看,Fady 使用 OTP(一次性密码本) 来加密他的文件,但是他不

2020-10-21 11:02:04 330

原创 adworld-crypto-equation-2

参考:大佬的题解拿到了一张上半部分被遮掉的RSA的私钥照片,以及一份密文openssl私钥结构version | pad | n | pad | e | pad | d | pad | p | pad | q | pad | x1 | pad | x2 | pad | x3其中 pad 表示填充信息,用来表示接下来的大数所占字节数等信息pad 以 '\x02’开头,后接信息有两种情况‘\x81’或’\x82’ + length表示接下来的length所占字节数为1或2,length表示后面

2020-10-20 21:02:26 299 2

原创 adworld-crypto-banana_princess

拿到了一个打不开的pdf文件用hex_editor打开一下看看再看一下正常的pdf文件猜测是用了rot13映射了一下字母字符解密脚本:def load_data(filename): content = [] with open(filename, 'rb') as fp: for data in fp.read(): content.append(data) return contentdef rot13(data):

2020-10-19 20:08:36 177

原创 poem_encrypt(内含Decrypt-the-message的解密脚本)

poem_encrypt是一种非常有意思的加密方式 介绍今天学习了一下这种加密方式,所以在这里讲一下我的理解poem_encrypt举例说明1、一首诗for my purpose holds to sail beyond the sunset, and the baths of all the western stars until I die.2、从一首诗中选出k个单词(这里是6个),去掉特殊字符,组成一个字符串,给每个字符(该字符串字典序后的)序号选取:“for”, “sail”, “all

2020-10-18 23:56:23 584

原创 adworld-pwn-level2

必要知识点:32位系统函数调用使用堆栈传参其调用时栈的结构如下:返回地址 -> 参数n -> 参数n-1 -> … -> 参数1将elf文件扔到IDA中跟进到vulnerable函数,里面有输入函数,可以用来做栈溢出再看到有system函数又在shift+f12字符串窗口里面看到/bin/sh所以就是构造ROP链,通过栈溢出调用system函数,并将/bin/sh压入栈中作为参数找到system的地址: 0x08048320找到/bin/sh地址:0x080

2020-10-17 00:23:03 164

原创 adworld-pwn-int_overflow

查保护机制NX,查架构32位扔到IDA中,发现是让你登录,输入用户名,输入密码,再绕过检测即可所以这里就是控制密码位数,然后在相应位置插入我们的目标地址,使得check_password函数的返回地址为目标地址目标地址怎么找?传统艺能[shift+F12]找到了what_is_this函数,其首地址为0x0804868B绕过长度限制需要我们的payload的长度为[260, 264]目标地址填充在哪?dest的首地址为[ebp - 14h]栈的结构是这样的:位置内容

2020-10-16 21:41:34 87

原创 adworld-pwn-level0

工具:kali + IDA + pwndbg + pwntools1、将文件扔到IDA中,跟着main函数走找到vulnerable_function上述可以看出来buf的空间只有0x80B,而_read却读入了0x200B的数据,明显的栈溢出利用shift+F12查看字符串发现了这玩意,跟过去发现它被callsystem函数调用那么,我们接下来的操作就是通过栈溢出让vulnerable_function的返回指令返回到callsystem来根据vulnerable的汇编代码来看

2020-10-16 11:15:23 213

原创 kali下安装pwndbg

环境:kaliconda创建的虚拟环境python3.8.5(不知道有没有影响)$ git clone https://github.com/pwndbg/pwndbg$ cd pwndbg$ sudo ./setup.sh完成以后,需要进入.gdbinit将pwndbg添加进去$ vim ~/.gdbinit把source ~/software/pwndbg/gdbinit.py写在peda(如果有的话 )上面然后再gdb就ok了...

2020-10-16 09:53:53 2924 1

原创 adworld-handcrafted-pyc

拿到一个文件,打开查看一下是这样子的。#!/usr/bin/env python# -*- coding: utf-8 -*-import marshal, zlib, base64exec(marshal.loads(zlib.decompress(base64.b64decode('eJyNVktv00AQXm/eL0igiaFA01IO4cIVCUGFBBJwqRAckLhEIQmtRfPwI0QIeio/hRO/hJ/CiStH2M/prj07diGRP43Hs9+MZ2fWMxbnP6

2020-10-15 20:32:17 1176

原创 adworld-EasyRE

1、拿到exe文件,扔到exeinfo里面看一下,发现是32位无壳2、扔到IDA里面,通过[shift+F12]找字符串发现"right",双击跟过去发现sub_401080调用了这个字符串,跟过去,F5反编译对于23行到30行的代码我们猜测是将输入串赋值到byte_40336C里面来,但是不是很确定,我们可以去OD里面确认一下把文件扔进OD,根据sub_401080函数在IDA中相对位置(汇编代码textview可看见)可以在OD中找到其位置,然后该循环之后打断点从图中发现byte_

2020-10-14 10:52:45 147

空空如也

空空如也

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

TA关注的人

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