- 博客(59)
- 收藏
- 关注
原创 《大话数据结构》2
第二章 算法算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每次指令表示一个或多个操作算法具有五个特点:输入、输出、有穷性、确定性和可行性2.5.1 输入输出算法具有零个或多个输入算法至少有一个或多个输出2.5.2 有穷性有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限性循环,并且一个步骤在可接受的时间内完成2.5.3 确定性确定性:算法的每一步骤都具有确定的含义,不会出现二义性2.5.4 可行性可行性:算法的每一步都必须是可行的,也就是说,每一步
2021-07-17 00:00:58 257
原创 《大话数据结构》(1)
前言想想还是觉得有意思,618穷的衣服都不舍得买,看到书降价了,竟然狠心买了下来,我可真是个憨憨既然买了,就学习一下,把自己觉得有用的记录总结一下第一章 数据结构绪论1.3 数据结构起源早期人们认为计算机解决问题应该是先从具体问题抽象出一个适当的数据模型,设计一个解决此模型的算法,然后编写程序,得到实用软件,是以一个数值计算的工具。但是现实中有许多情况非数据,需要其他手段(表、数和图等数据结构)帮助解决问题,所以:数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等
2021-06-22 21:30:31 292
原创 linux动态链接
关于动态链接与静态链接简单理解:如果我的文章引用了别人的一部分文字,在我发布文章的时候把别人的段落复制到我的文章里面就属于静态连接,而做一个超链接让你们自己去看就属于动态链接了PLT&GOT在介绍PLT和GOT表之前,先列举一个例子#include <stdio.h>void print_banner(){ printf("Welcome to World of PLT and GOT\n");}int main(void){ print_banner()
2021-05-24 02:53:05 651 5
原创 x86 assembly
RegistersGeneral-purpose registersEAX EBX ECX EDX - 32 bitAX BX CX DX - 16 bitAH BH CH DH - 8 bit (high)AL BLCLDL - 8bit (low)Buffer pointer (缓冲区指针)EDI ESI - 32 bitDI SI - 16 bitStack PointerESP - 32 bit指向 stack 顶端Base PointerEBP.
2021-05-18 19:55:54 323 1
原创 ELF文件
看视频学习C语言编译流程编译由C语言代码生成汇编代码汇编由汇编代码生成机器码链接 Object将多个机器码的目标文件链接成一个可执行文件英文解释compiler编译器Assembly汇编object file目标文件link链接Executable可执行Static Library静态链接库Linux下的可执行文件ELF什么是可执行文件?广义:文件中的数据是可执行代码的文件.out、.e
2021-05-16 20:52:21 139
原创 Executin
Binary Format执行档的格式的格式会根据 OS 不同,而有所不同执行档:可执行文件在计算机科学上,指一种内容可被电脑解释为程序的电脑文件。通常可执行文件内,含有以二进制编码的微处理器指令,也因此可执行文件有时称为二进制档。OS:一般指操作系统Linux - ELFWindows - PE在 Binary 的开头会有个 magic number 栏位,方便让 OS 辨认是属于什么类型的档案在 Linux 下可以使用 file 来 检视(检视:检验查看)Segment
2021-05-16 19:55:01 139
原创 GDB
看视频学习traceltraceGDBrdisas function name - 反编译某个functionbinfo breakpoint - 查看已设定那些断点info register - 查看所有register状态x/wx address -查看address中的内容w可换成 b/h/g 分别是取 1/2/8 byte/后可接数字 表示一次列出几个第二个 x 可换成 u/d/s/i 以不同方式表示u : unsigned intd : 10 进位s :
2021-05-08 01:50:35 196
原创 Canary bypass
Canary bypass格式化字符串绕过canary格式化字符串读取canary的值//字符串泄露canary,最简单常用Canary爆破(针对有fork函数的程序)fork作用相当于复制出一个相同的程序,逐位爆破canary的值,如果程序崩溃,则不是canary,反之为canary//局限性比较大,必须有fork函数Stack smashing(故意触发canary_ssp leak)劫持_stack_chk_fail修改got表中_stack_chk_fail函数的地址,在
2021-05-04 02:38:53 423
原创 基本ROP
学习地址:https://wiki.x10sec.org/pwn/linux/stackoverflow/basic-rop-zh/#_10之前在本地写了一遍,竟然没保存,重写一次。。。小白一枚,如有错误,请多指教ret2text检查保护,只开了NX发现有gets溢出找到有system(/bin/sh),记录地址查看偏移量,可以用pattern_creat,pattern_offset (有的程序算出来少一位)wiki中最简单的是在gets的地址下断点,从中找出esp和ebp的地址,算出偏移
2021-05-03 03:36:46 118
原创 初识虚拟化技术
初识虚拟化技术虚拟化技术的分类全虚拟化技术完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化技术(Full Virtualization),它在虚拟机(VM)和硬件之间加了一个软件层–Hypervisor,或者叫做虚拟机监视器(VM)。hypervisor可直接与硬件交互hypervisor 直接运行在物理硬件之上 - KVMhypervisor 运行在另一个操作系统中 - QEMU 和 WINE半虚拟化技术半虚拟化技术,也叫做准虚拟化技术。它就是在全虚拟化
2021-04-01 18:31:37 154
原创 git clone速度慢
第一步Ubuntu:sudo vim /etc/hosts第二步 追加域名IP地址利用https://www.ipaddress.com/ 来获得以下两个GitHub域名的IP地址:(1) github.com(2) github.global.ssl.fastly.net第三步 IP写入hosts文件第四步 刷新DNS缓存sudo /etc/init.d/nscd restart参考链接:https://www.jianshu.com/p/0493dcc15d6f...
2021-03-22 21:30:11 171
原创 docker的简单使用
docker的简单使用学习地址:https://www.bilibili.com/video/BV1og4y1q7M4跟着视频学习的,一点点跟着视频打了一遍帮助命令docker version # 显示docker的版本信息docker info # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令帮助文档地址:https://docs.docker.com/engine/reference镜像命令docker images
2021-01-20 03:35:15 744
原创 攻防世界 新手题get_shell
get_shell题目描述:运行就能拿到shell呢,真的解题:事实就像题目描述那样,运行就能拿到flagida查看直接就调用/bin/shexpfrom pwn import *p = remote('220.249.52.133','32182')p.interactive()
2020-12-07 20:39:52 1195 1
原创 pwn四种基本保护
前言学习pwn,了解到的四种basic protection1.Stack Guard• 做完function prologue①的时候回将随机生成的乱数压入stack中,function return前会检查乱数是否又被更动过,若发现被更动则立即结束程式• 又称canary 金丝雀②注释:①function prologue:移动 RSP 和保存寄存器的动作一般处在函数的开头,叫做 function prologue②canary:看视频讲的有一个了解,在煤矿中有毒或易燃气体的存在,常引起井
2020-12-03 12:12:59 764
原创 gdb的基本使用
前言学习对gdb的简单使用一、gdb是什么?UNIX及UNIX-like下的调试工具二、简单使用命令1.运行run两种运行方式:r filenamegdb //运行gdbfile filename2.退出quitq //退出gdb3.设置删除断点break/deleteb main //在main函数下断点b filename:9 //在第九行下断点d //删除全部断点d number //删除指点断点4.继续执行continuec //到达断点后继续执行.
2020-12-02 11:39:27 134
原创 pwn学习(1)
pwn简介”Pwn”是一个黑客语法的俚语词 ,是指攻破设备或者系统 。发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——砰的一声,被“黑”的电脑或手机就被你操纵了
2020-11-30 20:43:39 653 2
原创 指针学习(3)
0x01 数组为参数#include "stdafx.h"void PrintArray(int arr[],int nLength){ for(int i=0;i<nLength;i++) { printf("%d\n",arr[i]); }}int main(int argc, char* argv[]){ int ar[101] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x07,0x09, 0x00,0
2020-11-24 17:29:55 126
原创 IDA简单使用
0x00前言写这个是因为看了学长发的PPT,发现自己对IDA的许多功能并不是那么的熟悉,所以就把PPT上边的内容手打下来,加深印象,方便查看0x01IDA Pro简介•交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!•IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Li
2020-11-19 21:18:04 1655 2
原创 一般术语解释(持续更新)
前言看pwn入门视频,有许多属于不知道是什么意思,搜索记录一下正文名称解释exp (Exploit)漏洞利用,,一般是个demo(演示)程序poc (Proof of Concept)漏洞证明,一般是个样本,用来证明和复现vul (Vulnerability )泛指漏洞shellcode可提权代码(偷个小故事说明一下,缓冲区溢出攻击相当于一辆坦克,如果要攻破一座堡垒,那么总重要的是什么呢?就是炮弹,shellcode就相当于炮弹,没有打补丁的主机就相当
2020-11-15 16:11:15 678
原创 pwntools安装与简单使用(初学习持续更新)
小白一枚,初学轻喷0x01.pwntools简介pwntools 是一款专门用于CTF Exploit的python库,能够很方便的进行本地与远程利用的切换,基本涵盖了pwn题利用脚本所需要的各种工具。0x02.pwntools安装在Ubuntu中安装,这个是python2的,python3不能pip安装,还要安装其他东西,在这里就不详述了sudo pip install pwntools0x03.pwntools的常用模块Pwnlib.asm :通过capstone进行汇编与反汇编,支持x
2020-11-15 00:03:31 2780
原创 指针学习(1)
1、“带*类型” 的特征探测:宽度注:对于一个变量来说,最重要的一个特征就是数据的宽度。2、“带*类型”的特征探测:声明推荐不推荐char* x;char *x;short* y;short *y;int* z;int *z;float* f;float *f;double *d;double *d;Student* st;Student *st;总结:1.带有 * 的变量类型的标准写法: 变量类型* 变量名2.任何类型都可以带*
2020-11-05 20:23:45 210
原创 滴水逆向 C语言基础学习
前言在想自己该怎么去写博客,该写些什么,不知道有哪些东西需要去记录,就记录一下自己做的练习和中间需要记录的知识点吧准备安装Windows XP虚拟机安装VC6VC6找了好久也没有找到英文版的,现在都是中文版,感觉有那么一点的麻烦,视频让安装XP的虚拟机,但是我也用不习惯,之前win10安装过,就先用着吧知识点VC6中要用到的一些快捷键,我按照我理解的意思记录,可能有些地方不够准确F7 编译F5 运行Shift+F5 结束运行F9 设置断点Alt+5 打开寄存器窗口Alt+6 查看内
2020-10-15 20:39:00 776
原创 简单密码集合
前言做一些简单密码题,觉得记录一下密码,方便以后查找圣堂武士密码(Templar Cipher)标准银河字母猪圈密码参考:https://blog.csdn.net/dyw_666666/article/details/89973048
2020-10-04 17:08:40 1745
原创 二进制、八进制、十进制、十六进制英文表示
前言写这个是因为再一次使用计算器分不清进制表示。。。正文二进制是Binary,简写为B或BIN八进制是Octal,简写为O或OCT十进制为Decimal,简写为D或DEC十六进制为Hexadecimal,简写为H或HEX
2020-10-04 09:13:00 10542
原创 Linux vi 修改后无法保存
前言:之前自己上Linux课的时候,一直出现这个问题,但又是英文界面,一直都没有找到解决的问题,今天要用到ssh,也需要修改,就找到了,保存一下,以后可能还会用到原因:因为实在普通用户界面下去修改文件,所以无法成功解决方法:保存时输入下列代码,会要求输入root密码,以root权限修改 :w !sudo tee %...
2020-09-29 10:36:17 1553
原创 快速查找指定代码的四种方法
前言:在《核心工程逆向原理》中看到的,记录一下,所有流程都是以Hello World.exe为例正文:1.代码执行法注:仅适用于被调试的代码量不大、且程序功能明确的情况原理:程序功能非常明确时,逐条执行指令来查找所需查找的位置2.字符串检索法鼠标右键菜单–Search for–All referenced text strings当OD载入程序时,会经历一个预分析过程。这个过程中,程序中被引用的字符串和被调用的API都会被摘录出来,整理至另外一个列表中。使用All referenced t
2020-09-27 18:00:44 8652
原创 JCC学习
汇编指令条件标志寄存器状态1JE,JZ结果为零则跳转ZF=12JNE,JZE结果不为领则跳转ZF=03JS结果为负则跳转SF=14JNS结果为非负则跳转SF=05JP,JPE结果中1的个数为偶数则跳转PF=16JNP,JPO结果中1的个数为偶数则跳转PF=07JO结果溢出了则跳转OF=18JNO结果没有溢出则跳转OF=09JB, JNAE小于则跳转 (无符号数)CF=110J...
2020-09-27 11:02:55 15082
原创 六个汇编指令
1、ADC:带进位加法格式:ADC R/M,R/M/IMM 两边不能同时为内存 宽度要一样2、SBB:带借位减法格式:SBB R/M,R/M 两边不能同时为内存 宽度要一样3、XCHG:交换数据格式:XCHG R/M,R/M/IMM 两边不能同时为内存 宽度要一样4、MOVS:交换数据...
2020-09-21 19:23:52 393
原创 buu 这是什么
题目:小明是一个软件专业的高材生,但是老师布置的这次的作业似乎不怎么靠谱,因为他们老师以前是学物理的!喜欢乱七八糟命名文件,还喜欢奇奇怪怪的编码。你快帮小明看一下这题,小明准备好了一箱子辣条。 注意:得到的 flag 请包上 flag{} 提交解题步骤:下载是一个apk文件,用apk改之理打开,反应是一个无效PE文件,读题,喜欢乱改文件名,所以改为text后缀打开后发现一大段[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]
2020-09-20 20:29:53 1587
原创 标志寄存器(六个状态标志位)
1、进位标志CF(Carry Flag)如果运算结果的最高位产生了一个进位或错位,那么,其值为1,否则其值为02、奇偶标志(Parity Flag)由于反应运算结果中(转化为二进制),"1"的奇偶性,也就是个数。"1"的个数为偶数,PF为1。个数为奇数,PF为0.3、辅助进位标志AF(Auxiliary Carry Flag)在发生下列情况时,AF的值为1,否则其值为0(1)、在字操作时,发生低字节向高字节进位或错位时;(2)、在字节操作时,发生低4位向高4位进位或错位时;4、零标志ZF(.
2020-09-19 16:27:42 33780 3
原创 buu 变异凯撒
题目:加密密文:afZ_r9VYfScOeO_UL^RWUc格式:flag{ }看到凯撒密码,第一时间想到的就是移位2.题目给予的格式是flag{},可能a对应着f,根据ascll码发现a-f=5、f-l=6、Z-a=7,以此类推3.写脚本a='afZ_r9VYfScOeO_UL^RWUc'flag=''l=len(a)j=5for i in range (0,l): flag += chr(ord(a[i]) + j) j=j+1print(flag)flag
2020-09-19 15:06:25 252
原创 32位通用寄存器
32位通用寄存器寄存器编号存储数据的范围EAX00 - 0xFFFFFFFFECX10 - 0xFFFFFFFFEDX20 - 0xFFFFFFFFEBX30 - 0xFFFFFFFFESP40 - 0xFFFFFFFFEBP50 - 0xFFFFFFFFESI60 - 0xFFFFFFFFEDI70 - 0xFFFFFFFF理解范围:32个0,还是表示0。32个1,就是32/4=8个F。所以存储数据范围
2020-08-06 17:33:54 2595
原创 数据宽度与逻辑运算
链接:https://pan.baidu.com/s/1QvkCQPTxJf_FbYlPiwmGBw提取码:kn3a数据宽度1.计算机中只存在0和1。数学上的数字可以无限大,但计算机数据大小有限,超过最多的宽度舍弃2.了解计算机中正负数的本质这张图假设为4位宽度,只是假设,没有4位宽度的从中间分开0-7为正,8-F为负7 -0111 第一位0就代表正数8-1000 1就代表负数3.几个重要的计量单位BYTE 字节 8BI
2020-08-06 15:56:03 219
原创 1-9 A-F 二进制对应十六进制
00000001001000110100010101100111100010011010101111001101111011110123456789ABCDEF
2020-08-06 02:50:26 2149
原创 kali 64位安装pwntools
找了很长时间去安装pwntools,都是先安装capstone,然后安装pwntools,但是第一步就安装错误,错误中止后来终于翻到了有用的apt-get updateapt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essentialpip install --upgrade pippip install --upgrade pwntools虽然后有一段说python2.7中止了什么
2020-08-06 02:27:34 1703
原创 Linux kali 转换root用户
1.sudo命令kongzhou@kali:~$ sudo默认可以有5分钟root权限sudo命令介绍:https://www.runoob.com/linux/linux-comm-sudo.html2.sudo -ikongzhou@kali:~$ sudo -i直接转换root用户
2020-08-06 02:11:50 822 1
原创 buu reverse Check_1n
这个题是真的有意思,看了wp,也是迷半天,第一次知道base58Check_1n先查看一下,32bit拉入32位ida中,F5一下,看到一堆地址,直接Shift+F12void main_0(){ dword_1C76720 = 0; sub_401019(); sub_40105F(); sub_401019(); while ( 1 ) { if ( dword_1C7672C == 2 ) sub_40101E(); if ( sub_4
2020-08-05 07:40:19 295
原创 buu reverse 8086
8086查看一下,没有任何头绪拖入ida中,F5用不了,发现调用了一个地址sub_10030,点进去,什么都没有,Shift+F12查看字符串,发现一串字符,查看下边同样有一串字符,没有头绪,查了一下说,选中区域,按C,选择force,强制转换为汇编代码,发现1Fh与ptr xor异或,其他的没什么用写脚本a="]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;"flag=''for i in a: flag += chr(ord(i)^0x1f)prin
2020-08-05 06:41:08 168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人