- 博客(11)
- 收藏
- 关注
原创 缓冲区溢出攻击
缓冲区溢出(buffer-overflow)是一种非常普遍、同时非常危险的漏洞,在各种操作系统、应用软件中广泛存在。缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击,轻则可以导致程序失败、系统关机等,重则可以利用它执行非授权指令,甚至获取系统特权,从而进行其它的非法操作。缓冲区攻击有栈溢出、堆溢出、格式化字符串漏洞、整形变量溢出等。本文将主要介绍堆栈溢出攻击,并实现对一个ubuntu 16.04系统的简单的栈攻击,获取其root权限。实验平台操作系统:SEED Ubuntu16.04 VM (32-bit
2021-02-06 20:32:48 4507 2
原创 DRF序列化和反序列化
声明序列化器先声明对象from datetime import datetimeclass Comment(object): def __init__(self, email, content, created=None): self.email = email self.content = content self.created = created or datetime.now()comment = Comment(email='le
2020-12-06 11:37:26 182
原创 Django rest framework创建新用户,并登录
目的:创建新用户,创建成功后让新用户登录视图类通过Ctrl+B查看CreateAPIView的源码,可以看到该类继承于CreateModelMixin和GenericAPIView在CreateAPIView里就只有一个post,里面调用了CreateModelMixin的create用于创建模型实例,于是我们可以自定义perform_create,让模型实例创建好后,登录# 成功创建用户后,让新用户登录class UserRegister(generics.CreateAPIView):
2020-12-05 09:43:24 602
原创 c语言指针偏移量的单位
有下面一段代码#include<iostream> using namespace std;int main(){ int list[5]; int* p1=&list[4]; cout<<p1-list<<endl;}输出是4,而不是4*sizeof(int)(偏移量),说明2个同类型的指针相减,结果的单位不是byte,而是该类型的大小...
2020-06-17 09:17:32 476
转载 关于句柄handle
句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。这个数字是一个对象的唯一标示,和对象一一对应。这个对象可以是一个块内存,一个资源,或者一个服务的context(如 socket,thread)等等。这个数字的来源可以有很多中,只要能保证和它代表的对象保持唯一对应就可以,比如可以用内存地址,也可以用句柄表的序号,或者干脆用一个自增ID,再或者用以上的值去异或一个常...
2020-04-30 23:02:36 203
原创 关于TCP与UDP的接收recv和recvfrom
1.UDP发包的问题问:udp 发送两次数据,第一次 100字节 ,第二次200字节, 接包方一次recvfrom( 1000 ), 收到是 100,还是200,还是300?答:UDP是数据报文协议,是以数据包方式,所以每次可以接收100,200,在理想情况下,第一次是无论recvfrom多少都是接收到100。当然,可能由于网络原因,第二个包先到的话,有可能是200了。对可能会由于网络原因乱序...
2020-04-30 16:19:44 1334
原创 关于org指令的一些理解
ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址在编写引导程序是,在程序的开通通常有org 0x7c00作用是改变标号的位置(不是真正的地址,只是加上了一个偏移量),比如org 0x7c00mov ax,msgmsg: db "hello,world"mov ax,msgmsg: db "hello,wor...
2020-04-29 15:03:58 5004
原创 判断一个点是否在三角形的外接圆上
主要有两种方法先求出三角形的外接圆的圆心的坐标,然后判断该点到圆心的距离设三角形为ABC,判断D点是否在ABC的外接圆内,假设设点C和点D在AB同侧,则比较∠ADC和∠ACB的大小就可以判断点C是在圆上、圆内、圆外了...
2020-04-27 20:12:54 1582
原创 一种二维数组的引用方法
一种二维数组的引用方法#include<iostream>using namespace std;void f(int* a){ cout<<a[3]<<endl;}int main(){ int a[2][2]; fill(a[0],a[1]+4,1); f(a[0]);}说明c或c++里,二维数组本质上以一维数组的形式储存。但是二...
2020-04-27 19:39:03 585
转载 进度条实现
c/c++ #include<iostream> #include<Windows.h> int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO CursorInfo; GetConsoleCursorInfo(handle, &am...
2020-04-20 15:58:39 108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人