网络破防实践先导实验二————ROP攻击
1.前言终于在熬过了第一个实验之后,来到了老师所说的,比第一个简单一点的实验。然而,事实证明,老师在画大饼: (。第二次实验直接让我们利用二进制漏洞对程序进行攻击,拿到Flag。这有多难呢,这次上课在讲解实验的时候,就有好多人退课了,你没听错,上着上着课就退课了他们。不过抛开难度不谈,这次实验确实很有趣,不仅有种打游戏收集成就的感觉,还学到炒鸡多东西(没错,比上一个实验学到太多太多东西了),所以我很快啊,啪的一下就来写博客记录了。
2.实验概览这次实验的主题是二进制漏洞,课上,Aidai学长给我们讲解和演示了如何利用二进制漏洞进行ROP。关于ROP:
ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓 gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。之所以称之为 ROP,是因为核心在于利用了指令集中的 ret 指令,改变了指令流的执行顺序。ROP 攻击一般得满足如 ...
网络破防实践先导实验一————数组越界检测心得
1.前言网络攻防实践先导,听着名字很高大上吧,正如它的名字那般,它的难度也是非常的大: (。作为一门今年新开的课,属于四门先导课程之一(剩下三门分别是软件工程先导、人工智能先导和忘了叫啥先导)。在上学期选课的时候,110人的课,选了139人,可见其火爆程度,也许是网络和攻防这两个要素吸引人,所以这门课的第一个实验——数组越界的检测,与上述两点看起来似乎没有丝毫关系,但是难度还极大,这就造成了,很多人退课(毕竟才0.5学分)。截止至2022年4月1日02点54分,139的课现在还剩39人…….我捏,有幸忝列其中。这足以看出这门课有多难了吧,接下来我给大家分享一下我写这门课的一些心得与体会吧(主要是写给自己看的,要是有不认识我的人看到了这篇博客,算你厉害🤔)
2.实验介绍实验的要求很简单,编写一个文件checker.cpp,要求实现数组越界的检测。以下是原话:
本次实验自拟了一种类似C语言数组的语法,称为easy C,其仅包含简单的变量声明,算术表达式和数组操作,文件后缀为.ec。本次实验的目的是使用c++语言编写一个检测程序,检测输入的.ec文件中数组使用的索引值是否超过数组定义的最 ...
用ssh连接服务器和使用pycharm把代码同步上服务器的方法
1.SSH连接服务器首先需要安装一个远程连接客户端(我用的是Final shell,用别的也行)
然后在软件里新建一个连接
这里,主机名是服务器的公网IP,端口默认22,底下,使用密码登录,
连接成功后就可以操作服务器了
2.用pycharm把代码同步上服务器(需要pycharm专业版)首先打开pycharm专业版(社区版没有这个功能好像),打开项目,左上角选择File–settings
新增一个SFTP连接,然后点右边的SSH configuration的三个点,新增SSH连接
账号密码同之前SSH远程登录时的账号密码
然后重点来了,接下来这几步不能错,不然可能会把文件覆盖掉
首先在Root path中,选择你想要的根目录,之后在Web server URL处填入你的远程服务器地址。
然后选择上方Mappings栏
本地路径设置,这里就设置你本地的Django项目的路径(就是manage.py的路径)
配置完成后,点击OK,接下来就是从服务器下载和上传代码
在pycharm项目的首页,文件树那里,右键,往下滑选择Deployment,里面的下载和上载就是同步操作
...
基于uwsgi+nginx+centos的Django项目部署经历
1.起因寒假之前,我滴帅部长召哥给我们布置寒假作业:要求我们每个人把上个学期写的电商项目给部署到远程服务器上面。然后他也没告诉我们具体怎么去部署。我就自己在网上找教程,跌跌撞撞摸索出了部署的流程。
2.选择服务器要把Django部署上远程服务器,首先得有一台远程服务器。之前寄导课做实验,给了我们每个人华为云两百大洋的代金券,我才用了几块钱,本来想买华为云的,但是召哥推荐我们买良心云(腾讯云)和套路云(阿里云),然后我就用学生优惠花40大洋买了一年的腾讯云2H2G+40G的轻量应用服务器,性能对我来说还是够用的。
镜像我装了centos,至于为什么没用宝塔,主要使我想体验一下比较纯正的服务器体验。
3.配置环境我配置服务器主要参考腾讯云服务器部署 django项目整个流程 - lvye001 - 博客园 (cnblogs.com)这篇文章,剩下的细节和问题都是在网上不停搜索解决的。
1)安装Python3.9.5在安装python之前,先升级一下包管理工具,在安装一下可能用到的依赖。
123yum update -yyum -y groupinstall "Developme ...
基于proteus的可视化设计(6)——一些自己写的程序介绍
这篇文章来介绍一下我自己写的一些程序,仅供参考,同时附上网盘链接,感兴趣可以下载看看
链接:https://pan.baidu.com/s/17sitBKqXfq3YgIHTPdrTBg提取码:uc6i
1.简易数字电压表要求:采用Arduino UNO板,外接1个电位器和4个BCD码输入的带有译码器的LED数码管,4位数码管显示电压测量值。
原理图设计
流程图设计
SETUP流程图设计
LOOP流程图
仿真验证
2.简易篮球计分器要求
采用 Arduino UNO 板,外接 6 个按键和 1 个 4 位 LED 数 码管,4 位数码管显示篮球比赛得分情况。 在原理图设计中,在元件中添加 2 个元件:1 个 GROVE 中的 TM1637 控制的 4 位数码管显示器元件(GROVE4DIGIT), 和按键(BUTTON)。 假如,A 队和 B 队进行篮球比赛,数码显示器显示比赛 得分情况,扩展 6 个按键,它们分别定义为:A 队+1 分、A 队+2 分、A 队+3 分、B 队+1 分、B 队+2 分、B 队+3 分。实现 按篮球比赛规则手动计分功能。
原理图设计
流程图设计
...
基于proteus的可视化设计(5)——传感器
上一篇文章介绍了电机的一些用法,这次来介绍——传感器。
传感器(sensor)
传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。
通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
1.距离传感器
模块介绍:
1、本模块性能稳定,测度距离精确。模块高精度,盲区(2cm)。 2 、主要技术参数:
使用电压:DC5V
静态电流:小于2mA
电平输出:高5V
电平输出:低0V
感应角度:不大于15度
探测距离:2cm-450cm
高精度:可达0.3cm
TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TR ...
基于proteus的可视化设计(4)——电机控制
在上一篇文章中,我介绍了显示屏的一些用法,今天给大家介绍proteus可视化设计中,电机的一些用法
1.直流电机(1).直流电机简介直流电机有有刷电机和无刷电机两种,两者不同之处在于结构和原理不同,且两者各有优劣。
直流电机的一些特点:
1、调速性能好,调速范围广,易于平滑控制
2、起动、制动转矩大,易于快速起动、停车
3、易于控制
4、通过调整直流电压可以实现电机的调速
5、改变供电电压极性可以实现改变电机旋转方向
(2).proteus提供的模块介绍proteus可视化设计中,提供了许多的电机模块
介绍一个直流电机驱动模块——L298双路直流电机驱动器
关于L298双路直流电机驱动器:
L298是一个集成的单片电路,它有两种封装。它是一个高压,高电流双全桥驱动器设计到接受标准化TTL逻辑电平和驱动感应负载,例如:继电器,螺线管,直流电机。有以下特点:
双H全桥驱动;
电源工作电压最高达46V;
总输出直流电流高达4A;
过热的保护。
这里介绍这个模块:Arduino Motor Shield (R3) with DC Motors
电机模块方法:
1.run ...
用pyinstaller在64位电脑上打包32位exe
hello大家好,这里是LMark。今天给别人写程序的时候,用pyinstaller打包成exe,但是对方是32位Win7,而我的是64位,所以用pyinstaller打包出来的exe文件运行不了,后来去网上找了些资料,解决了这个问题。
1.安装32位的python下载python去官网,可以找到全版本。python的版本没有什么要求,只要是32位的。附官网传送门:Python Releases for Windows | Python.org。这里我演示下的是3.4.4,因为3.4.4还支持XP。
下载并安装,安装完之后记得将python添加到环境变量中(如果电脑上已经有了64位python,建议给32位python改个名字,防止冲突)
2.安装pywin32打包成32位exe程序需要pywin32这个包,所以我们先安装一下,这里先去下载一下Pywin32
找到适合的版本(这里以python3.4为例),貌似下载需要科学上网。
下载好后直接双击运行,按照默认值,一直下一步即可。
3.更新pip、whell、setuptools和安装future、pefile在cmd命令行中依次 ...
基于proteus的可视化设计(3)——显示屏控制
上一篇文章介绍了LED模块的用法,这次来给大家介绍介绍一下显示屏的用法,列举一些常见的显示屏:
本文给大家讲解一下这三种显示屏的用法。
1.LED数码管显示屏(1)LED数码管介绍什么是数码管呢?
LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成”日”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成日字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
常见的数码管是七段数码管,就是上面第一张图。此外,还有十六段数码管:
七段数码管:
这里稍微介绍一下七段数码管的工作原理,可以看到,一个数码管有十个引脚,每个引脚对应关系如上图所示。由于每个引脚只有高低电平两种状态,所以一般用高电平表示某一段数码管发光,低电平表示某一段数码管不发光,这样,就可以表示出0-9这是个数字了。举个例子,当数码管要显示数字1时,只要b,c引脚输出高电平,其他引脚输出低电平即可。其他数字同理可得。
显示一个数字如此,如果显示多个数字呢?比如下面的四位数码管:
可以看到,四 ...
基于proteus的可视化设计(2)——LED模块
在上一篇文章中,介绍了proteus可视化设计的一些基本操作,今天我们来介绍第一种组件的使用——-LED控制。
1.LED模块的选择在Proteus中,一共有7种软件自身提供的模块,如下图:
这里可使用的LED模块有Breakout Perifherals里的和Grove里的,这两种LED灯都有红、黄、蓝、绿四种颜色,两种LED灯的区别在于接线方式不同
在原理图中双击Grove LED,可以看到connector ID,这里用的是D2到D8这6个数字端口,当你有多个Grove LED时,应该设置不同的端口,否则在编译过程中会报错;双击Arduino LED可以看到,Arduino LED可以使用IO0到IO19这20个输入输出端口,比Grove LED的可用端口要多,当你的程序所需的LED灯数量比较大时,Arduino LED是不错的选择。
这里补充一点,Grove LED的四个引脚都代表什么,如图,第一和第二引脚都是数字端口,第三个引脚是VCC,第四个引脚GND也就是接地。虽然Grove LED只使用一个引脚(即图中的D2,第二个引脚为proteus自动设置的),但是在编 ...