nginx配置学习
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100server { listen 80; listen [::]:80; server_name 1.mathming.top; return 301 https://$server_name:443$request_uri;}server { listen 80; listen [::]:80; server_name cv.mathming.ltd; return 301 https://$server_name:443$request_uri;}server { listen 80; listen ...
dockerfile
使用dockerfile定制镜像下面先来尝试一个nginx镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
空目录下新建一个名为Dockerfile的文件,并且添加以下内容
12FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
1RUN 命令行命令
exec格式
1RUN ["可执行文件","参数1","参数2"]
dockerfile的指令每执行一次都会在docker上新建一层,所以过多无意义的层,会造成镜像过度膨大,比如
1234FROM centosRUN yum -y install wgetRUN wget -O redis.tar.gz "http:// ...
No title
12345678910111213141516171819202122232425262728293031323334首先每一行是160个字节,一共25行80列。初始显存位B800:0000开始show_str:push cx push dx push si mov ax B800 mov es,ax#先把段地址放起来 mov ax,0 mov al,160 mul dh#一行160,✖️行数结果存在ax中 mov bx,ax#行偏移地址(乘法保存在哪来着) mov al,2 mul dl add bx,ax#行偏和列偏加起来 mov di,0 mov al,cl#字符属性 mov ch,0 show:mov cl,ds:[si] jcxz ok#如果放进来直接就是0,那么直接就推出了。 ...
汇编语言(十二)标志寄存器
我们先来看上一章的实验十
实验十 编写子程序一.显示字符串
也就是我们要自己编写子程序显示的部分!
代码如下:
1234567891011121314151617181920212223242526272829303132333435show_str:push cx push dx push si#先把这些跳出程序还要用的寄存器的值先入栈! mov ax,B800h#先找到每个字符对应的偏移地址!这是段地址 mov es,ax#先把段地址放es存着,接下来还要算偏移地址 mov ax,0 mov al,160 mul dh#因为是第八行,每一行160字节 mov bx,ax#找到行偏移地址。 mov ax,0//清零 mov al,2 mul dl add bx,ax#把行偏和列偏加起来。 mov di,0 mov al,c ...
lab6-二进制文件分析
第一题首先我们进入服务器,然后通过服务器进入内网服务器,这里只需要ssh。
进入之后使用sftp将文件下载到我们自己的服务器上。或者使用sz传输等。
之后根据提示,文件名叫strings_attached,我们用strings查看二进制文件里的字符串
1strings strings_attached
得到以下结果
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596$ wk6_re strings strings_attached/usr/libexec/ld.soOpenBSD_csu_finishexit_Jv_RegisterClassesatexitputs_endlibc.so.96.0A string that pulled me Out of all the ...
汇编语言(十一)call和ret指令
call和ret指令都是用来修改ip的或者同时修改cs和ip。
ret和retf指令作用如下:一个是近转移,一个是远转移。
执行ret指令相当于执行
1pop IP
CPU执行retf指令时相当于执行
123pop IPpop CS//注意是先出IP再出CS
举个例子我们来看看。下面的程序中ret指令执行之后,(ip)=0,cs:ip指向代码段第一条指令。
12345678910111213141516171819assume cs:codestack segment db 16 dup (0)stack endscode segment mov ax,4c00h int 21h start:mov ax,stack mov ss,ax//定义栈 mov sp,16//栈的指针位置。 mov ax,0//置0 push ax//将0入栈 mov bx,0 ret//0出栈到ip code ends end start
那么下面retf执行之后,CS:I ...
汇编语言(十)
第九章 转移指令的原理我们8086cpu的转移行为有以下几类:
123只修改IP,成为段内转移,比如:jamp ax同时修改CS和IP时,成为段间转移,比如jmp 1000:0
对于IP的修改范围不同,段内转移又分为:短转移和近转移。
短转移的IP的修改范围为-128~127。
近转移IP的修改范围为-32768~32767。
操作符offset功能为取得标号的偏移地址,比如下面的程序:
1234assume cs:cosdegcosdeg segment start:mov ax,offset start相当于mov ax,0,即取得了start的偏移地址 s:mov ax,offset s相当于mov ax,3
下面看问题
所以只需要添加:
12mov ax,cs:[si]#先将s处的偏移地址放进axmov cs:[di],ax#再把s处的偏移地址送入s0处,这也就是我们前面定义si,di的原因,就是为了获取偏移地址便于传参。
jmp指令给出两种信息:
12转移的目的地址转移的距离。
依据位移进行转移的jmp指令比如
1jmp short 标号#表示短转移,因为对IP修改 ...
sed用法及练习
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
引用自菜鸟教程https://www.runoob.com/linux/linux-comm-sed.html
我们来练习,先新建一个testfile
1cat testfile内容
以行为单位的新增/删除然后在第四行后面加一行,使用
1sed -e 4a\newLine testfile
下面将testfile内容列出并印出行号,同时将第2-5行删除,使用
1nl testfile | sed '2,5d'
其实可以看出前面的输出作为后面的输入!详见管道符原理。
注意sed后面接的动作必须要用两个单引号引起来。如:
1nl testfile | sed '2d'
如果要删除第三行到最后一行,就是用
1nl testfile | sed '3,$d'#也就是说这里$表示末尾的意思!
注意sed的操作没有-i时并不改变原文件!只是在管道中改变并且 ...
汇编语言(九)
第八章 数据处理的两个基本问题我们用描述性的符号reg表示寄存器,用sreg表示段寄存器。
123reg: ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,disreg:ds,ss,cs,es
bx,si,di,bp只有这4个寄存器可以用在[]中进行内存单元寻址。比如
1mov ax,[bx+si]
在[]中这4种寄存器可以单个出现,如果组合出现,只能出现4种组合,即
1[bx+si],[bx+di],[bp+si],[bp+di]其他都是错误的。
如果[]中使用bp但是指令中没有给出段地址,则段地址默认在ss中。
比如:
1mov ax,[bp]含义:(ax) = ((ss)*16+(bp))
机器指令处理的数据在什么地方大部分机器指令都是进行数据处理的指令,分为三类:读取,写入,运算。
机器指令并不关心数据的值,而是关心指令执行前一刻,将要处理的数据所在的位置。
一般所处理的数据出现在3个地方:CPU内部,内存,端口。
举例:
123mov bx,[0] 内存,ds:0单元mov bx,ax. CPU内部,ax寄存器mov bx,1 ...
汇编语言(八)
第七章 更灵活的定位内存地址的方法简单的逻辑运算1234and al,01111111B代表将第七位设置为0or al,10000000B代表将第七位设置为1
ASCII码在汇编中的应用比如我们要将一系列字母存储进数据段,我们可以直接输入字母,汇编会自动存储他们的ascii码比如:
123456789101112assume cs:code,ds:datadata segment db 'unIX' db 'foRK'#这里存入的是其ascii码也就是db 66h,6fh,52h,4bh相当于四个字节,也就说明一个字母代表一个字节data endscode segmentstart: mov al,'a' mov bl,'b' mov ax,4c00h int 21hcode endsend start
存入之后我们可以查看段数据-d可以看到右边就是ascii转换成的字符形式。
并且还能验证:因为ds = 0B2D,所以程序从0B3DH开始也就是直接对应第一个段data segment
...