自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pwn入门07--整数安全

概述:前面的文章介绍了基础的栈溢出,其实还有进阶的栈溢出,但是我累了,进阶的栈溢出留着以后写。先来学习整数溢出。整数溢出在ctf中还是很常见的,但是整数溢出并不能直接getshell,通常配合栈溢出或堆溢出来利用。在 C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无符号,每种数据类型都有各自的大小范围,(因为数据类型的大小范围是编译器决定的,所以之后所述都默认是 64 位下使用 gcc-5.4),如下所示:当程序中的数据

2021-10-30 15:33:14 403

原创 pwn小白入门06--ret2libc

概述:前文介绍了ROP的基本原理,但前面的方法有一些局限性,一旦目标程序调用的函数较少,或者使用动态编译,就会导致我们可以利用的gadget变少,从而无法达到利用效果。为了解决这种问题,我们可以选择使用ROP的方式,到动态链接库里面寻找gadget。即ret2libc。动态链接库:说动态链接库之前,先简单介绍一下库,库是一种软件组件技术,库里面封装了数据和函数,比如常用的printf,get函数。前文所说的ret2syscall所使用的程序是静态链接的,即在程序编译的时候就将整个库链接到程序中,一般这

2021-10-25 21:42:56 8133 3

原创 GCC 参数详解

PWN——GCC编译中几种保护打开和关闭的参数NX:-z execstack / -z noexecstack (关闭 / 开启) 栈不可执行,开启后不会把栈上的数据当作代码来执行Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启) 打开后会向栈中插入一段特殊数据,在函数返回的时候验证这段特殊数据是否被改变,如果改变,则终止该程序。防止栈溢出。PIE:-no-pie / -

2021-06-19 11:58:34 1946

原创 rust开发内核01---环境配置

想深入学习操作系统,了解到Linux内核将引入rust,于是产生了想拿rust写内核的想法,一次偶然机会,发现了清华的教材,正好一边学习一边用博客记录下来。电子版教材官网: https://rcore-os.github.io/rCore-Tutorial-Book-v3/实验环境配置:系统环境配置Rust 开发环境配置Qemu 模拟器安装其他工具安装运行 rCore-Tutorial-v3系统环境配置:个人使用的是Windows内置的wsl2,Ubuntu20.04;具体配置方法可自

2021-06-17 18:20:44 719

原创 pwn小白入门05---ret2syscall

ret2syscallROP原理:随着 NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。攻击者们也提出来相应的方法来绕过保护,目前主要的是 ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。gadget:所谓 gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。

2021-02-21 22:18:59 3341

原创 pwn入门08---堆利用之uaf

use_after_free原理简单的说,Use After Free 就是其字面所表达的意思,当一个内存块被释放之后再次被使用。但是其实这里有以下几种情况:内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。内存块被释放后,其对应的指针没有被设置为 NULL ,然后在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序很有可能可以正常运转。内存块被释放后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使

2021-02-21 16:36:13 1437 3

原创 pwn小白入门04---ret2shellcode

原理ret2shellcode,当程序当中没有system函数时,我们需要自己往栈上写入一段shellcode,然后控制eip使其指向shellcode的地址。shellcode 指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的 shell。在栈溢出的基础上,要想执行 shellcode,需要对应的程序在运行时,shellcode 所在的区域具有可执行权限。即必须关闭堆栈不可执行功能。例题(来自ctfwiki):首先checksec:发现程序没有开启任何保护,并且存在可读可写

2021-02-21 15:56:05 1855 3

原创 pwn小白入门03---ret2text

什么是栈溢出:栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变(比如gets函数,他不会去验证你输入的值的长度,通过这个函数,你可以往一个本身大小为4字节的数组中填入任意大小的数据,如果填入8字节的数据,将会导致栈溢出,进而程序报错)。就像是往杯子里倒水,水满了溢出来最后烫到你一样。最简单的栈溢出利用:ret2text通过栈溢出修改call指令保存在栈上的返回地址(eip的值),这样cpu执行ret指令的时候,就会将被修改的值从栈上取

2021-02-21 15:30:47 6282 1

原创 pwn小白入门02---汇编函数调用过程

C语言函数调用栈测试程序:#include<stdio.h>int sum(int x,int y){ int a=x+y; return a;}int main(){ sum(1,2); return 0;}编译指令gcc -m32 test.c -o test32位ida反汇编之后:main函数:sum函数:汇编指令:push ebp:将ebp寄存器中的值压入栈中pop esi :将栈中的数据

2021-02-21 13:17:48 1063

原创 pwn小白入门01---环境配置

操作系统:任意Linux或wsl;推荐:Ubuntu18.04+Ubuntu16.04IDA pro7.5(Windows):链接: https://pan.baidu.com/s/1pCMudY3RNBLQ3uobf8xBVg 提取码: asqa 复制这段内容后打开百度网盘手机App,操作更方便哦下载完后解压打开,免安装,双击即可运行;用来打开32位程序;用来打开64位程序;pwntoolspwntools是python的一个库,目前已适应python3,建议同时安装python2和p

2021-02-20 15:29:04 590

原创 python学习笔记(四)

第6章 字典6.1 一个简单的字典来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同。下面是一个简单的字典,存储了有关特定外星人的信息:alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points'])字典alien_0存储了外星人的颜色和点数。使用两条print语句来访问并打印这些信息,如下所示:green 56.2 使用字典在Python中,字典是一系列

2020-07-06 19:37:02 318

原创 python学习笔记(三)

第5章 if语句5.1 一个简单示例cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': print(car.upper()) else: print(car.title())这个示例中的循环首先检查当前的汽车名是否是’bmw’。如果是,就以全大写的方式打印它;否则就以首字母大写的方式打印:Audi BMW Subaru Toyota5.2 条件测试每条if语句的核

2020-07-06 19:29:37 158

原创 python学习笔记(二)

第3章 列表简介3.1 列表是什么列表由一系列按特定顺序排列的元素组成。在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车:bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles)如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号:['trek', 'cannondale', 'redline', '

2020-07-06 13:57:14 355

原创 python学习笔记(一)

阅读《python编程:从入门到实践》整理的笔记。第1章 起步1.1搭建编程环境安装python安装vs code1.2 在不同操作系统中搭建python环境1.3 解决安装问题1.4 从终端中运行python程序print("hello world!")1.5 小结在本章中,你大致了解了Python,并在自己的系统中安装了Python。你还安装了一个文本编辑器,以简化Python代码的编写工作。你学习了如何在终端会话中运行Python代码片段,并运行了第一个货真价实的程序——hell

2020-07-06 13:40:38 173

空空如也

空空如也

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

TA关注的人

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