自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通过一个例子来介绍OD的简单使用

OllyDbg是一个32位的动态调试器,在平常做逆向的题中用的比较多,下面用bugku一个简单的例子Eazy-Re来介绍一下OllyDbg的使用。首先打开程序,看一下是干什么的,他提示你输入flag,这里我随便输入几个字母,提示我不正确。我们用OD打开程序,会看到下面的这个样子,如果没接触过OD的人可能直接被劝退了,这是啥乱七八糟的,别急,一点点来看,打开程序后会出现5个面板(我更喜欢称之为...

2019-12-04 10:24:25 3399

原创 pwntools的简单使用

pwntools是一个CTF框架和漏洞利用开发库,用Python开发,旨在让使用者简单快速的编写exploit。这里简单的介绍一下pwntools的使用。首先就是导入包from pwn import *你将在全局空间里引用pwntools的所有函数。现在可以用一些简单函数进行汇编,反汇编,pack,unpack等等操作。将包导入后,我一般都会设置日志记录级别,方便出现问题的时候排查错误...

2019-09-20 16:54:48 8355 5

原创 通过一个例子来介绍IDA的简单使用

通过一个简单的题来了解一下IDA的基本操作,题目是bugku的一个简单的逆向,Easy_re。将题目下载下来,发现是一个exe可执行文件,先运行一下看看[外链图片转存失败(img-ub5SlY5B-1567387294256)(https://i.loli.net/2019/09/01/bU5XpG3EYDOjigP.png)]有一些字符串提示,让你输入一个字符串,提示输入flag,随便输入...

2019-09-02 09:22:43 3106

原创 函数调用的过程

前两篇文章介绍了栈帧和函数调用约定,这篇文章通过一个简单的程序来具体说明一下调用函数时都经历了哪些步骤。(建议结合着栈帧的介绍和调用约定的介绍这两篇来理解这篇文章,然后通过一个buffer overflow的实例进行深入的理解)。首先看一下源码,非常简单的一个例子,定义了一个foo()函数,将传入的参数x和y的和赋值给z,然后返回z。main()函数中调用了foo()函数,将返回结果赋值给a并打...

2019-08-26 07:59:36 893

原创 调用约定

调用惯例是调用方和被调用方对于函数如何调用的一个明确的约定,只有双方都遵守同样的约定,函数才能被正确地调用。如果不这样的话,函数将无法正确运行。假设有一个foo函数int foo0(int n, float m){ int a = 0, b = 0; ...}如果函数的调用方在传递参数时先压入参数n,再压入参数m,而foo函数却认为其调用方应该先压入参数m,后压入参数n,那么不...

2019-08-19 09:29:55 2694

原创 栈和栈帧

栈堆栈(stack)又称为栈或堆叠,是计算机科学里最重要且最基础的数据结构之一,它按照FILO(First In Last Out,后进先出)的原则存储数据。栈的相关概念:栈顶和栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。压栈:栈的插入操作,叫做进栈,也称压栈、入栈。弹栈:栈的删除操作,也叫做出栈。下面是栈的示意图,从图中可以清楚的看到,不管是插入数据还是删除数据,都是...

2019-08-12 08:29:04 4683 2

原创 大端序和小端序

字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下Big-endian:高位字节存入低地址,低位字节存入高地址Little-endian:低位字节存入低地址,高位字节存入高地址例如,将12345678h写入1000h开始的内存中,以大端序和小端序模式存放结果如下一般来说,x86系列CPU都是Little-endian字节序,PowerP...

2019-08-05 11:45:00 28542 5

翻译 apt-get: high level 软件包处理工具

apt-get: high level 软件包处理工具这里写目录标题apt-get: high level 软件包处理工具通过`apt-get`安装软件将**删除软件**而不删除其配置文件**删除软件**及其配置文件,请使用 `purge`:从 `sources.list` **更新软件包索引**文件:**升级所有** debian **系统包****更新**/**重新安装**单个软件包**ATP cache files****清除APT缓存****从 APT 缓存中删除无用的文件**Tags: Lin

2021-06-03 10:33:19 312

原创 bugku web21 WriteUp

点开链接发现进行了跳转查看源代码,发现注释中有一个1p.html页面,尝试打开发现自动跳转到了bugku首页,用burpsuite抓包或者用view-source查看源码。<HTML><HEAD><SCRIPT LANGUAGE="Javascript"><!--var Words ="%3Cscript%3Ewindow.location.href%3D'http%3A%2F%2Fwww.bugku.com'%3B%3C%2Fscript%3E%20

2021-01-09 16:30:44 645

原创 在virtualbox中centos8能联网能ping宿主机,但是宿主机无法ping通虚拟机

1. 默认网卡是NAT模式,需要添加一个网卡,使用host-only模式2. 创建一个网卡,如果想省事,就使用dhcp来动态分配ip3. 发现并没有分配ip,需要自己配置一下4. 查看/etc/sysconfig/network-scripts/目录,发现只有一个ifcfg-enp0s3的文件,自己复制一份,改名为ifcfg-enp0s8,和上图保持一致。5. 把名字改掉,uuid可以通过uuidgen去生成,最后的 HWADDR可以通过i...

2020-11-26 20:04:30 873

原创 在jupyter lab中使用tensorboard报错 UsageError: Line magic function `%tensorboard` not found.

问题:使用%tensorboard --logdir logs/fit报错 UsageError: Line magic function %tensorboard not found.解决:需要先加载扩展%load_ext tensorboard%tensorboard --logdir ./logs/fit如果是在服务器中开启tensorboard,通过本地浏览器是无法访问的,可以使用%tensorboard --logdir ./logs/fit --host=0.0.0.0,然后会给一个

2020-11-12 19:38:31 3300 2

原创 攻防世界 Mary_Morto WP 三种解法

Mary_Morto保护措施简介解题思路方法一:方法二:方法三:来自于ASIS-CTF-Finals-2017的一道题,网上的wp都千篇一律,这里记录一下我的一些思路。首先这道题可以从好几种方向去解,我这里介绍三种解法。首先我们查看一下程序的保护措施,发现开启了Stack Canary和NX,RELRO和PIE没有开启。然后运行一下,提示选择我们的武器,第一个是栈溢出漏洞,第二个是格式化字符串漏洞,说明本题应该可以利用这个两个漏洞去解决问题。保护措施简介我们先简单的回顾一下这些保护措施是做什么用

2020-08-16 14:07:59 1556 4

原创 攻防世界xctf-实时数据监测 wp

本题是一个简单的格式化字符串漏洞的利用。先查看一些文件的信息,32位的程序,保护措施没有开。用IDA查看一些伪代码,发现main函数里面只有一个locker函数,locker函数首先接受了一个字符串s,然后调用imagemagic函数,这个函数跟进去查看其实就是一个printf函数,最后比较key的值是不是为0x2223322,如果相等,返回shell,否则打印key的地址和值。我们在本地运行一下看看,由于直接把key的地址告诉你了,所以本题的思路是找到格式化字符串地址的偏移,然后覆盖key的值。格

2020-08-14 12:47:30 1253

原创 exploit-exercises Protostar Heap Walkthrough

HeapProtostar Heap0AboutSource codeProtostar heap1AboutSource codeexpProtostar heap2AboutSource codeProtostar Heap3AboutSource codeexp题目来源exploit-exercisesProtostar Heap0AboutThis level introduces heap overflows and how they can influence code flow.Th

2020-08-09 17:23:01 801

原创 exploit-exercises Protostar Stack Walkthrough

做了一组关于栈溢出的练习,题目来源exploit-exercises,提供一个虚拟机镜像,可以下载下来自己耍耍。StackStack0AboutSource codeEXPStack1AboutSource codeEXPStack2AboutSource codeEXPStack3AboutSource codeEXPStack4AboutSource codeEXPStack5AboutSource codeStack6AboutSource codeStack7AboutSource codeexp

2020-08-03 22:11:55 1016 1

原创 攻防世界 string WP

检查文件类型(file命令),检查安全措施(checksec命令)就不多说了,只有PIE没有开。首先查看一下main函数,有一个sub_400996函数,这个函数就是负责打印一些信息。然后通过malloc申请了8个字节大小的内存,返回的指针为v3,将v3的值(指针的值为地址)存入v4,实际上v3和v4都指向了刚才申请的那块内存。然后赋值,将前四个字节赋值为68,后四个字节赋值为85。后面通过printf打印了v4和v4+4的值,其实就是68和85的地址。下面有个sub_400D72(v4)函数,将v4

2020-07-28 16:55:35 1233 1

原创 bugku rev1(xman) WP

用JEB查看MainActivity的onCreate函数。首先创建了一个CheckClass类的实例c,调用c.a()函数处理输入,最后判断c.check()的返回值。this.button.setOnClickListener(new View$OnClickListener() { public void onClick(View arg4) { MainActivity.this.c = new CheckClass();

2020-07-03 18:05:39 1214

原创 keygen-me-1 picoCTF 题解

本题来自picoCTF2018目录题目描述解题思路解题脚本题目描述Can you generate a valid product key for the validation program in /problems/keygen-me-1_3_a2370158b7b72b3863212502340f2c32解题思路首先用file查一下文件信息,32位elf可执行文件。放到虚拟机里面,加上可执行权限,运行一下。可以看到要求输入16个字符的key。用IDA查看一下伪代码,可以直接在左边的

2020-06-28 09:16:47 1169

原创 circuit123 picoCTF2018 题解

本题来自于picoCTF2018的一个逆向题这里写目录标题题目描述Hints分析题目描述Can you crack the key to decrypt map2 for us? The key to map1 is 11443513758266689915.HintsHave you heard of z3?分析提供了三个文件,和一个key,这个key应该是map1的key。查看了一下map1.txt的内容,并没有看出来是个啥。再看看decrypt.py内容,首先看一下主题逻辑。if

2020-06-27 23:21:28 1243

原创 动手学深度学习PyTorch版笔记

torchvision包,它是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成:torchvision.datasets: 一些加载数据的函数及常用的数据集接口;torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;torchvision.transforms: 常用...

2020-02-14 20:29:02 723

原创 攻防世界ReverseMe-120详解

​ 网上其他的WP写的都比较简略,所以写一篇比较详细的解题思路,供新手参考,大神请绕过。​ 首先大致看一下程序的逻辑​ 可以看到成功的条件是v9,而v9是v13与字符串"you_know_how_to_remove_junk_code"比较的结果。然后追一下v13的数据流,看看v13是怎么来的。​ 可以看到v13的定义,以及一个关键函数sub_401000,为什么说是关键函数呢,...

2019-12-21 20:11:08 3097 4

原创 Bugku-pwn4详解

这道题来自bugku的第三道pwn题,pwn4。首先进行一些常规检查。一个64位动态链接的程序,没有开什么保护。然后用IDA打开,有个危险函数read,可以用来溢出。shift + F12查看有没有可疑字符串,然后在字符串上按x查看引用他的地方,找到了一个system函数但是system函数里面的字符串并不是我们想要的'/bin/sh',尝试用ROPgadget去搜索,命令为ROPg...

2019-07-14 10:59:54 4373 10

原创 BugKu - pwn2

这道题来自于bugku旧平台的第二道pwn题,还是比较简单的,一个典型的缓冲区溢出题。首先查看一下文件类型,file pwn2,可以看到是64位的程序。然后用64位IDA打开,查看程序的逻辑。可以看到这个程序的逻辑比较简单,有一个read函数,这个函数一个危险函数,可能引发缓冲区溢出漏洞。常见的危险函数还有gets、strcpy、sprintf、scanf等。然后查看字符串,看看是否有内置...

2019-07-06 09:59:57 3637

原创 pwnable.kr-uaf WP

UAF(Use After Free)释放后重用,其实是一种指针未置空造成的漏洞。首先介绍一下迷途指针的概念在计算机编程领域中,迷途指针,或称悬空指针、野指针,指的是不指向任何合法的对象的指针。当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称迷途指针。若操作系统将这部分已经释放的内存重新分配给另外一个进程,而原来的程序重...

2019-06-22 21:24:25 482

原创 pwnable.kr-cmd2 WP

这道题的ssh密码是上一道题的flag,“mommy now I get what PATH environment is for

2019-06-04 21:46:52 226

原创 手动脱壳---ESP定律

首先这篇文章不是讲ESP定律的原理,第一次接触ESP定律,跟着教程做了一遍,做个笔记,记录手动脱壳的过程。首先载入OD,F8执行到pushad下面的call,然后观察寄存器,如果只有ESP和EIP是红色的,那么可以用ESP定律。右键ESP的数据,选择数据窗口中跟随,可以看到左下角的数据窗口发生了跳转。然后选择第一个数据 --> 右键 --> 断点 --> 硬件访问 --&...

2019-06-04 11:07:12 1056

原创 pwnable.kr-cmd1 WP

首先看一下源码:#include <stdio.h>#include <string.h>int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; r...

2019-05-29 21:53:44 206

原创 pwnable.kr-lotto WP

源码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>unsigned char submit[6];void play(){ int i; printf("Submit your 6 lotto bytes : "); ...

2019-05-26 11:09:06 214

原创 pwnable.kr-blackjack WP

题目是blackjack,翻译过来是扑克牌的一种玩法,叫21点。首先看了一下源码,700多行,脑壳疼,还是先玩一局看看吧规则和百度上的一样,就是一个21点的游戏,21点就赢了,如果没到21点的话,就比较大小。初始现金是500,让你输入你的赌注(bet),输入比你现金(cash)大的数会给错误提示。随便玩了一局,赢了,可以看到我的现金加了300,然后又试了一下输入一个负数,发现没有报错...

2019-05-25 09:52:25 306

原创 攻防世界 CGfsb-格式化字符串漏洞

引用维基百科https://ctf-wiki.github.io/ctf-wiki/pwn/linux/fmtstr/fmtstr_intro/格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式。几乎所有的 C/C++ 程序都会利用格式化字符串函数来输出信息,调试程...

2019-05-21 10:54:49 679

原创 安装运行hadoop遇到的错误以及解决办法

记录一下自己安装运行hadoop踩过的坑,方便以后复习查阅在控制台中输入hdfs后提示Error: JAVA_HOME is incorrectly set. Please update D:\hadoop\conf\hadoop-env.cmd错误如下图提示JAVA_HOME不正确,让修改D:\hadoop\etc\hadoop\hadoop-env.cmd这个文件,打开看看,...

2019-05-14 15:26:54 1427

原创 Hadoop集群安装教程(CentOS/Hadoop2.7.6)

Hadoop 集群的安装配置大致为如下流程:选定一台机器作为 Master在 Master 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境在 Master 节点上安装 Hadoop,并完成配置在其他 slave 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境将 Master 节点上的 /usr/loc...

2019-05-14 10:49:48 896

原创 pwnable.kr coin1 WP

首先看一下题目题目的意思是让你玩一个游戏,给你一些金币,其中有一个假币,这个假币外表和真的金币一样,但是重量不同,真的金币重量为10,假币重量为9。你需要帮他找到100枚假币才能过关。游戏规矩如下:给你N枚硬币和C次机会选择硬币的序号,称重你获得硬币的重量第二步和第三步重复C次,然后你给出正确答案(也就是哪一枚是假币)下面给出了一个列子,比如给你4枚硬币,2次机会,你第一次选择...

2019-05-12 21:54:02 330

原创 Scala学习笔记之变量、方法、函数

变量java中的变量数据类型 变量名;数据类型 变量名 = 初始化值;Scala中定义变量var 变量名 = 初始化值var 变量名:数据类型 = 初始化值注意:​ (1) 定义变量的时候需要初始化​ (2)定义变量的时候不指定变量的数据类型,系统会根据变量的初始化值推断变量的数据类型var a = 1Scala中定义常量val 变量名 = 初始化值val 变量...

2019-05-08 10:57:16 228

原创 pwnable.kr-shellshock WP

这道题涉及的知识点是shellshock(也叫破壳漏洞)CVE-2014-6271,GNU Bash 版本小于等于4.3可能存在这个漏洞。首先查看一下有什么文件发现目录里有一个可执行文件bash,我们来查看一下bash的版本可以看到这个路径中的bash版本低于4.3,下面来测试一下这两个版本的bash是否存在破壳漏洞env x='() { :;}; echo shellshocked' ...

2019-05-08 10:34:08 299

原创 pwnable.kr-mistake WP

这道题比较简单,题目已经给你提示了,题目给的提示是运算符的优先级源码如下#include <stdio.h>#include <fcntl.h>#define PW_LEN 10#define XORKEY 1void xor(char* s, int len){ int i; for(i=0; i<len; i++)...

2019-05-01 17:04:14 342

原创 pwnable.kr-leg WP

首先看一下源码#include <stdio.h>#include <fcntl.h>int key1(){ asm("mov r3, pc\n");}int key2(){ asm( "push {r6}\n" "add r6, pc, $1\n" "bx r6\n" ".code 16\n" "mov r3, pc\n" "add r3, ...

2019-04-24 09:50:42 343

原创 python之网络编程学习笔记

python之网络编程学习笔记套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。首先介绍一下socket()函数,socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)使用给定的地址族、套接字...

2019-04-20 09:14:48 249

原创 pwnable.kr-input WP

首先连进去运行一下查看一下源码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>int main(int argc, char* argv[], char* envp[]...

2019-04-17 11:25:22 344

原创 BugKu逆向---love---WP

首先运行一下程序,随便输入一个字符串,看下返回结果,提示"wrong flag!"然后查一下壳没有壳,是C++写的程序,用OD打开调试一下。加载进去发现和以前载入的入口地址不一样,别慌,先查搜索一下ASCII,能搜到之前给出的提示"wrong flag"。跟过去看看发现在字符串"wrong flag"上面有一个判断语句,左边有个跳转的小三角,选中他,能看到跳转到下面"right f...

2019-04-03 20:58:01 1324

空空如也

空空如也

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

TA关注的人

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