BP 误差反向传播法数学知识
BP 误差反向传播法数学知识前言在学习李宏毅老师的机器学学习的前两节课的时候,学到了关于机器学习的多层感知机的知识,也就是深度学习,想到了前面学习的BP误差反向传播我没理解其中的数学办法,于是有了这篇笔记
反向传播算法我们知道其实多层感知机算法也就是通过构造函数,然后算构造函数得到的预期值和实际值的差值去不断优化函数,直到找到一个函数能够去最好的处理这个问题,也是就李宏毅老师说的,深度学习其实就是looking for Function
构造函数在前面学习linear model的时候(也就是线性模型)我们寻找的函数是$y=b+ax_1$这种,但是由于无论我构建多少层这样的函数,最后的结果也只能是一个直线,我们实际上的模型中是需要线性和曲线的。
于是诞生出了Piecewise Linear model,我们可以通过下图来理解什么是piecewise Linear,我们可以通过将线1+线2+线3+线0+常量得到一个折线。
[我们寻找的函数是$y=b+ax_1$这种,但是由于无论我构建多少层这样的函数,最后的结果也只能是一个直线,我们实际上的模型中是需要线性和曲线的。
于是诞生出了Piecewise Linear model,我们可以通过下图来理解什么是piecewise Linear,我们可以通过将线1+线2+线3+线0+常量得到一个折线。
我们将形如线1,2,3的线称作RELU,我们还可以使用$y=c\frac{1}{1+e^{-(b+wx_1)}}$这样的算式来近似RELU,我们叫 ...
BLECTF低功耗蓝牙CTF change
BLECTF:低功耗蓝牙CTF change前言环境配置需要的设备
esp32(含有wifi和蓝牙模块的板子)
CSR4.0(外接蓝牙模块)
这里需要注意的是esp32的设备需要用好一点的连接线才可以连接成功,有时候连接不成功可能是连接线的问题
https://blog.csdn.net/qq_40589912/article/details/108301290
下载ESPtools可以直接通过apt-get安装,但是可能会存在包不对的情况,之类的
1sudo apt-get install esptool
也可以直接下载github库
1git clone https://github.com/espressif/esptool
烧录BLECTF根据这个教程去烧录
https://github.com/hackgnar/ble_ctf/blob/master/docs/setup.md
首先下载blectf
1git clone https://github.com/hackgnar/ble_ctf.git
然后进入blectf目录
1cd ble_ctf
最后直接烧录(我 ...
awd出题笔记
awd出题笔记前言第一次出线下的pwnAWD,记录一下,以后留给学弟什么的学习一下。
CTFpwn环境搭建其实和出线上赛是一样的,注意加一下setvbuf设置一下缓冲流就行了。
搭建pwn题目环境的时候,可以先本地测试一下
1socat tcp-l:888 , frok exec:./pwn
上面的命令可以用来实现本地的监听端口,这样在写check脚本的时候会比较方便
端口问题在写docker脚本的时候,记得在dockerfile上加上EXPOSE port 用来开放端口,否则会出现无法nc的情况。当然,如果用的是服务器的话,记得服务器端也要开启对应防火墙设置。
build 镜像时 无法交互式设置时区如果你搭建的环境是基于unbuntu18.04之后的镜像的话,需要手动设置时区,因为18.04后面就没有默认时区了,需要在Dockerfile 开头(FROM后面)加上
12ARG DEBIAN_FRONTEND=noninteractiveENV TZ=Asia/Shanghai
pwn编译gcc开关保护在编译pwn文件的时候,需要设置pwn的保护,于是总结了一下保护的相关参数
12 ...
ASLR和PIE的区别和作用
ASLR和PIE的区别和作用
ASLR的作用
首先ASLR是归属于系统功能的, aslr是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术。
在传统的操作系统里,用户程序的地址空间布局是固定的,自低向高依次为代码区, BSS区,堆栈区,攻击者通过分析能轻易得出各区域的基地址,在此情况下,只要攻击者的 注入代码被执行,攻击者就能随意跳转到想到达的区域,终取得计算机的控制权,试想如 果一个程序在执行时,系统分配给此进程三个区域的基地址是随机产生的,每次该程序执行 都不一样,那么攻击者注入的代码即使被执行,也终会因为无法找到合法的返回地址而产 生错误,终进程停止,攻击者无法入侵,这就是地址空间布局随机化的基本思想。
在ASLR的实现中,系统将进程的 用户空间分为三个区域,可执行区,映射区和栈区,可执行区存放可执行代码,初始化数据 和未初始化数据,映射区包括堆,动态库和共享内存,栈区 ...
ARM的ATPCS调用约定
ARM的ATPCS调用约定ATPCS标准,可以理解为ARM是怎么使用堆栈的。
那么在此之前需要熟悉调用约定的知识。X86的栈操作知识等。
调用约定调用约定分为如下:
cdecl调用约定
该调用约定遵循以下规则
参数入栈顺序是从右向左
栈平衡是调用者来负责
stdcall 调用约定
入栈规则:参数从右向左入栈
栈平衡负责:被调用者负责
fastcall调用约定
参数入栈顺序:函数的第一个第二个参数通过ecx和edx入栈。x64的结构下还有r8 ,r9 (寄存器),剩余的参数则从右向左入栈。
栈平衡:被调用者进行栈平衡。(x64是调用者负责)
返回值的存放:
返回值放在EAX和RAX(x64)中
ARM调用约定ARM函数之间相互调用遵循的规则就是ATPCS(ARM-Thumb Procedure Call Standard)ATPCS主要是定义了函数调用时参数的传递规则以及函数的返回规则。它类似于X64下的fastcall调用。
它们有个共同的特点就是寄存器多,有大量寄存器可以使用。
传参方式
R0~R3是传递函数的第一个到第四个参数的,超出的部分从右向左通过栈传 ...
ARM环境搭建
ARM环境搭建1.安装qemu,multiarch,和依赖库12345apt-get install qemu-userapt-get install qemu-use-binfmt qemu-user-binfmt:i386apt-get install gdb-multiarchapt-get install qemu-user-staticapt install gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu
2.安装对应架构的共享库,使用apt来搜索一下12apt search "libc6-" | grep "arm" # aarch64apt install libc6-arm64-cross
3.交叉编译1234567apt search "gcc-" | grep "arm" # aarch64apt install gcc-arm-linux-gnueabi# arm-linux-gnueabihf-gcc# aarch64-linux-gn ...
ARM汇编指令详解
ARM汇编指令详解ARM的编程模式和七种模式基本设定
架构(32位)
约定
Byte(字节):8bits
Halfword(半字) :16 bits (2 byte)
Word(字):32bits(4 byte)
指令集
ARM指令集(32位)
Thumb指令集(16位)
Thunmb指令集 (16位&32位)
工作模式
种类:七种
非特权模式(Normal:普通模式)
User (用户模式):非特权模式,大部分时候在这个模式下工作
特权模式(privilege:特权模式)
FIQ(快速中断模式):当一个高优先级(fast)中断产生时将会进入这种模式
IRQ(普通中断模式):当一个低优先级(normal)中断产生时会进入这种模式
SVC(管理模式):当复位或软中断指令执行时进入
Abt(数据访问终止模式):当存取异常时进入
und(未定义指令终止模式):当执行未定义指令时进入
sys(系统模式):使用和User模式相同的寄存器的特权模式
Privilege除了System模式外,其他几种为异常模式
各种模式的切换,程序员通过代码切换(CPSR寄存器); ...
ARM架构基本知识
ARM架构基本知识1.ARM架构的诞生1974年IBM提出了精简指令集计算机 (Reduced Instruction Set Computer )旨在通过减少指令的数量和简化指令的格式来提高CPU的指令执行效率。典型的代表有ARM处理器,MIPS处理器和DECAlpha处理器等。以ARM处理器为例子,1985年Acorn推出了基于ARMv1指令集的第一代ARM1处理器,2011年推出的ARMv8将指令集扩展到64位,称为AArch64,继承自ARMv7的指令集称为AArch32。在Linux发行版中,将AArch64称为aarch64,AArch32称为arm。由于RISC较高的执行效率以及较低的资源消耗。当前包括IOS,Android在内的大多数移动操作系统核嵌入式系统都运行在这类处理器上。
长期以来,CISC和RISC都处于你追我赶的竞争中,同时也在不断地相互借鉴对方的优点。从Intel P6系列处理器开始,CISC指令在解码阶段向RISC指令转化。将后端流水线转换成类似RISC的形式,即等长的微操作,弥补了CISC流水线实现上的劣势。同期,ARMv4也引入了代码密度更高的Thu ...
AFL++fuzz测试路由器固件
AFL++fuzz测试路由器固件前言在做fuzz的时候发现很多其实都是基于AFL工具的,以前学过一点AFL++的,但很久不用都忘记了,刚好再来测试一下路由器固件来加固一下
AFL++的使用环境搭建我就不讲了,这篇文章做了较为详细的介绍
https://c0ke.github.io/2024/07/10/AFL++fuzz%E6%B5%8B%E8%AF%95/?highlight=afl
使用如下命令进行测试
1afl-fuzz -M master -m none -x xml.dict -i /path/to/corpus -o output -- /path/to/xmllint --valid @@
-M 表示使用分布式fuzz
-m 表示子进程的内存限制,这里为0
-x 指定了模糊测试的字典
-i 表示测试用例的输入目录
-o 表示fuzz的结果输出目录
显示图如下
下面会详细介绍一下各个部分的含义
process timing :
run time: 已经运行的时间。
last new find: 上一次找到新的漏洞或问题的时间。
last saved crash ...



