Target
了解Windows的基本系统信息,常用cmd命令的使用
基础
1. 操作系统简介
- Windows操作系统:由微软开发的一系列操作系统,广泛应用于个人电脑和企业服务器。
2. 攻击者视角
- 攻击者通常从低权限访问开始,需要提升权限或进一步渗透网络,因此理解Windows系统基础知识对于攻防双方都很重要。
-windows最高权限:system
3. 系统配置
- Linux系统配置信息存储在/etc和/proc目录中。
- Windows系统配置信息存储在注册表中。
4. Windows Shell接口
- GUI(Graphical User Interface):图形化用户界面,操作简单直观。
- cmd(Command Prompt):命令行用户接口,包含一组预定义命令。
- WMIC(Windows Management Instrumentation Command-line):基于WBEM(Web-Based Enterprise Management)的实现,用于管理Windows系统,从Windows 21H1版本开始已弃用。
- PowerShell:自动化脚本框架,支持.NET架构,用于任务自动化和配置管理。
5. WSL(Windows Subsystem for Linux)
- 在Windows上运行的Linux子系统,允许用户在Windows环境中运行Linux命令、工具、应用程序。
6. 安全性 - 用户账户控制(UAC):限制应用程序的权限,防止恶意软件获取过多权限。
- Windows Defender:内置的防病毒和反恶意软件工具。
- BitLocker:提供磁盘加密功能,保护数据安全。
7.系统管理
-注册表:存储系统和应用程序的配置信息
-控制面板:提供系统设置和应用程序管理界面
注册表
1. 注册表概述
- Windows注册表是一个包含系统和应用程序配置信息的数据库,它存储在Windows操作系统中。
2. 功能和作用
- 存储硬件配置信息,如设备驱动程序和系统服务。
- 存储应用程序设置,如用户界面偏好和网络连接。
- 存储系统启动和运行所需的关键信息。
3. 结构
- 注册表由键(Key)和值(Value)组成,类似于文件系统中的文件夹和文件。
- 键是分层的,可以包含子键,形成树状结构。
4. 主要部分
- HKEY_CLASSES_ROOT (HKCR):存储文件类型关联和COM对象的信息。
- HKEY_CURRENT_USER (HKCU):存储当前登录用户的配置信息。
- HKEY_LOCAL_MACHINE (HKLM):存储所有用户和计算机的配置信息。
- HKEY_USERS (HKU):存储所有用户账户的配置信息。
- HKEY_CURRENT_CONFIG (HKCC):存储当前硬件配置文件的信息。
5. 注册表编辑器
- regedit.exe:Windows自带的注册表编辑器,允许用户查看和编辑注册表项。
- 注意:不当的编辑可能导致系统不稳定或无法启动。
6. 注册表文件
- 注册表数据存储在Windows目录下的多个文件中,如system.dat、user.dat等。
- 这些文件在系统启动时被加载到内存中。
7. 安全性
- 注册表包含敏感信息,不当的修改可能导致安全风险。
- 可以通过权限设置限制对注册表的访问。
8. 备份和恢复
- 可以备份注册表,以便在出现问题时恢复。
- 使用注册表编辑器或第三方工具进行备份和恢复。
9. 注册表清理
- 随着时间的推移,注册表可能会积累无效或过时的条目。
- 可以使用注册表清理工具来优化和清理注册表。
10. 注册表与系统性能
- 注册表中的无效条目可能会影响系统性能。
- 定期维护注册表有助于保持系统性能。
11. 注册表与软件安装
- 软件安装过程中会向注册表添加条目,以存储其配置信息。
- 卸载软件时,相关注册表条目也应被清理。
12. 注册表与硬件驱动
- 硬件驱动程序的配置信息存储在注册表中。
- 更新或移除硬件时,注册表中的相应条目也会更新。
13. 注册表与系统策略
- 系统管理员可以使用组策略编辑器(gpedit.msc)来配置注册表设置,以控制用户和计算机的行为。
14. 注册表与Windows服务
- Windows服务的配置信息存储在注册表中,控制服务的启动类型和依赖关系。
15. 注册表与环境变量
- 环境变量存储在注册表中,影响系统和应用程序的运行环境。
实操
备份注册表
win+r 输入 regedit 打开注册表编辑器,文件 --》 导出
当更错误更改注册表信息造成计算机某些功能无法正常使用时,可将原先备份好的注册表导入。
新建和修改
创建项之后--》修改--》数值 即可
CMD
1. CMD概述
- CMD(Command Prompt)是Windows操作系统中的命令行解释器,允许用户通过命令行界面与操作系统交互。
2. 功能
- 执行各种命令来管理系统、运行程序、配置网络设置、管理文件和目录等。
3. 启动CMD
- 可以通过搜索“cmd”或“命令提示符”在开始菜单中启动。
- 使用快捷键Win + R,输入“cmd”并按回车键。
4. 命令行界面
- 提供文本界面,用户可以输入命令并接收文本形式的输出。
5. 基本命令
- `dir`:列出当前目录下的文件和文件夹。
- `cd`:更改当前工作目录。
- `copy`:复制文件。
- `move`:移动或重命名文件。
- `del`:删除文件。
- `mkdir`:创建新目录。
- `rmdir`:删除目录。
6. 环境变量
- 允许用户访问操作系统级别的变量,如`PATH`、`TEMP`和`USERPROFILE`。
7. 管道和重定向
- 使用`|`(管道)将一个命令的输出作为另一个命令的输入。
- 使用`>`(重定向)将命令的输出保存到文件中。
- 使用`>>`追加输出到现有文件。
8. 批处理文件
- 使用`.bat`或`.cmd`文件存储一系列命令,可以一次性执行。
- 允许创建自动化脚本,用于执行复杂的任务。
9. 命令别名
- 使用`alias`命令为常用命令创建快捷方式。
10. 命令历史
- 使用上下箭头键可以浏览之前输入的命令。
11. 通配符
- 使用`*`和`?`作为通配符,匹配文件名中的多个字符或单个字符。
12. 权限
- 以管理员身份运行CMD可以执行需要更高权限的命令。
13. 网络命令
- 如`ping`、`ipconfig`、`netstat`等,用于网络诊断和管理。
14. 文件比较
- 使用`fc`命令比较两个文件的内容。
15. 任务自动化
- 可以编写脚本自动执行常规任务,如系统备份、文件同步等。
16. 系统信息
- 使用`systeminfo`命令查看系统详细信息。
17. 任务管理
- 使用`tasklist`和`taskkill`命令查看和管理正在运行的进程。
18. CMD与PowerShell
- CMD和PowerShell都是命令行工具,但PowerShell提供了更高级的功能和面向对象的命令。
19. 安全性
- 通过限制对CMD的访问,可以提高系统的安全性。
- 避免在CMD中运行未知来源的脚本或命令。
20. CMD的局限性
- 与PowerShell相比,CMD的功能和灵活性有限,但在某些情况下,CMD仍然是快速执行简单任务的有效工具。
常用命令详解
1. cd /d [directory] - 更改目录到指定路径
2. copy [source] [destination] - 复制文件到指定位置
3. del /q [file] - 删除文件
4. dir /p - 列出目录内容,分页显示
5. echo [text] - 显示文本信息
6. mkdir [directory] - 创建新目录
7. rmdir /s /q [directory] - 删除目录及其内容
8. move [source] [destination] - 移动或重命名文件
9. cls - 清除屏幕
10. ver - 显示操作系统版本
11. ipconfig /all - 显示所有网络适配器的配置信息
12. ping [address] - 测试网络连接
13. nslookup [hostname] - 查询域名的IP地址
14. netstat -an - 显示所有网络连接和监听端口
15. tasklist - 显示当前运行的进程
16. taskkill /im [processname] - 终止指定进程
17. systeminfo - 显示系统详细信息
18. shutdown /s /t [seconds] - 关闭计算机
19. restart /r /t [seconds] - 重启计算机
20. chkdsk /f - 检查磁盘并修复错误
21. diskpart - 磁盘分区管理工具
22. format [drive:] - 格式化指定驱动器
23. fsutil - 显示或配置文件系统属性
24. robocopy [source] [destination] - 高级文件复制工具
25. xcopy [source] [destination] - 复制文件和目录
26. assoc [.ext] - 查看或更改文件扩展名关联
27. ftype [filename] - 查看或设置文件类型关联
28. sc [create|delete|query] [servicename] - 服务管理
29. schtasks /create - 创建计划任务
30. certmgr.msc - 证书管理器
cmd本身不提供创建文件命令,但可以使用以下方法创建
echo flag{whoami} > flag.txt
help
显示所有预定义命令
type
用于显示文本内容
type flag.txt //显示内容
type nul > flag.txt //创建新文件
type flag1.txt flag2.txt > flag.txt //合并文件内容
type *.txt //查看当前目录下所有以 .txt 结尾的文件
type flag1.txt > flag2.txt //将文件内容输出到另一个文件
type flag.txt | findstr /I "flag" //不区分大小写在文件中搜索flag
findstr
搜索文本文件中特定字符串
findstr "flag" flag.txt //基本文本搜索
/s //递归搜索
findstr "flag" flag1.txt flag2.txt //多文件搜索
/i //忽略大小写
/n //显示匹配的行号
copy
复制一个或多个文件
格式:
copy [source] [destination]
copy flag1.txt flag3.txt //单个文件复制到指定位置
如果目标是现有文件,且源文件和目标文件同名,将覆盖目标文件
copy [source] [destination newname] //复制并重命名
copy *.txt D:\flag //利用通配符复制多个文件
del
del
命令(也称为 erase
命令)在 Windows 命令提示符(CMD)中用于删除文件
删除单个文件:
- 删除指定的单个文件。
- 格式:
del [filename]
删除多个文件:
- 删除当前目录下符合指定模式的多个文件。
- 格式:
del [filename1] [filename2] ...
使用通配符:
- 删除符合特定模式的文件,如删除所有文本文件。
- 格式:
del *.txt
删除并提示确认:
- 在删除文件之前提示用户确认。
- 格式:
del /p [filename]
强制删除:
- 忽略只读属性,强制删除文件。
- 格式:
del /f [filename]
删除前移动到回收站:
- 将文件删除并移动到回收站,而不是永久删除。
- 格式:
del /s [filename]
删除所有属性的文件:
- 删除具有任何属性的文件。
- 格式:
del /a [filename]
del
命令只能删除文件,不能直接删除目录。要删除目录及其内容,需要使用 rmdir
或 rd
命令。此外,使用 del
命令时要小心,因为删除操作是不可逆的,一旦文件被删除,就无法恢复。
dir
用于显示目录(文件夹)中的文件和子目录列表
基本文件列表:
- 显示当前目录中的文件和子目录。
- 格式:
dir
指定路径:
- 显示指定路径下的文件和子目录。
- 格式:
dir [path]
分页显示:
- 以分页形式显示文件列表,每页之后暂停。
- 格式:
dir /p
显示隐藏文件:
- 显示包括隐藏和系统文件在内的所有文件。
- 格式:
dir /a
递归显示:
- 递归显示所有子目录中的文件。
- 格式:
dir /s
建议 dir /s | more 分页查看
使用通配符:
- 显示符合特定模式的文件。
- 格式:
dir *.txt
dir
命令的参数包括:
/a
:显示所有文件,包括隐藏和系统文件。/d
:按日期排序,而不是默认的文件名排序。/p
:分页显示。/q
:显示文件的所有者。/s
:递归显示所有子目录中的文件。/w
:以宽格式显示,即每行显示多个文件名。
查找文件 dir/s flag.txt
简单解释
1. rmdir (remove directory): 删除现有目录(空目录)。
格式:rmdir [/s] [/q] dirname
2. move: 移动文件或目录,也可以用于重命名。
格式:move [source] [destination]
3. ipconfig: 显示当前网络配置信息,如IP地址、子网掩码等。
格式:ipconfig [/all] [/renew [adapter]] [/release [adapter]]
4. nslookup (name server lookup): 查询域名的IP地址或域名的相关信息。
格式:nslookup [hostname] [server]
5. netstat (network statistics): 显示网络连接、路由表、接口统计等网络信息。
格式:netstat [-a] [-e] [-n] [-o] [-p protocol] [-r] [-s] [interval]
6. xcopy: 复制文件和目录,包括子目录,比copy命令功能更强大。
格式:xcopy [source] [destination] [命令选项]
7. find: 在文件中搜索指定的文本字符串。
格式:find "text" [/n] [/v] [/c] filename
8. tree: 以树状图的形式显示目录结构。
格式:tree [/a] [/f] [/x] [drive:] [path]
9. ren (rename): 重命名文件或目录。
- 格式:`ren [oldname] [newname]`
10. comp (compare): 比较两个文件的内容是否相同。
- 格式:`comp [source] [destination]`
11. mklink: 创建符号链接或硬链接。
- 格式:`mklink [/D] [/H] link [target]`
12. set: 显示、设置或删除环境变量。
- 格式:`set [variable_name=variable_value]`
13. shutdown: 关闭或重启Windows计算机。
- 格式:`shutdown [/s] [/f] [/t [seconds]] [/r] [/comment:"message"]`
14. start: 启动一个程序或命令。
- 格式:`start [title] [/D directory] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVE_NORMAL | /BELOW_NORMAL] [/AFFINITY process_affinity] [/WAIT] [command/program] [parameters]`
15. systeminfo: 显示本地或远程计算机的配置信息。
- 格式:`systeminfo [/fo format] [/nh] [/s Computer] [/u username [/p [password]]]`
16. tasklist: 显示当前运行的进程及其信息。
- 格式:`tasklist [/fo format] [/nh] [/si] [/v] [/m module] [/svc] [/uid username] [/fi filter] [/fo csv] [/fo list] [/fo table]`
17. taskkill: 终止一个或多个正在运行的进程。
- 格式:`taskkill [/s Computer] [/u username] [/p [password]] [/fi filtername] [/pid processid] [/im imagename] [/f] [/t]`
18. tracert: 显示数据包到达目标主机所经过的路由。
- 格式:`tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name`
环境变量
环境变量是操作系统中的一种机制,用于存储有关系统环境的信息。它们是一系列的键值对,其中键是环境变量的名称,值是相应的数据。环境变量可以被操作系统、运行在系统上的应用程序以及用户在命令行中使用。
特点
动态获取信息:应用程序可以在运行时读取环境变量,以获取所需的配置信息,而无需在程序代码中硬编码这些信息。
影响命令搜索路径:环境变量如
PATH
指定了系统在执行命令时搜索可执行文件的目录。。。。
1. 查看当前环境变量:
- 命令:`set`
- 显示当前会话的所有环境变量及其值。
2. 设置环境变量(当前会话有效):
- 命令:`set variable_name=variable_value`
- 设置一个环境变量,只对当前CMD会话有效。
3. 查看特定环境变量的值:
- 命令:`echo %variable_name%` 比如 echo %path%
- 显示指定环境变量的值。
4. 删除环境变量(当前会话有效):
- 命令:`set variable_name=`
- 删除指定的环境变量,使其在当前会话中不再存在。
5. 在系统环境变量中添加或修改变量:
- 通过“系统属性”窗口中的“环境变量”按钮进行设置。
- 在“用户变量”区域添加或修改用户级别的环境变量。
- 在“系统变量”区域添加或修改系统级别的环境变量。
6. 永久删除系统环境变量:
- 通过“系统属性”窗口中的“环境变量”按钮进行设置。
- 在“用户变量”或“系统变量”区域选择要删除的变量,点击“删除”。
7. 导出环境变量到文件:
- 命令:`set > environment_variables.txt`
- 将当前会话的所有环境变量及其值导出到文本文件。
8. 从文件导入环境变量:
- 命令:`set /p | set`
- 从标准输入(如文件)导入环境变量设置。
9. 使用CMD脚本设置环境变量:
- 在批处理文件(.bat或.cmd)中使用`set`命令设置环境变量,这些变量将在脚本执行期间有效。
请注意,通过CMD会话设置的环境变量仅对当前会话有效。要永久设置环境变量,需要通过系统属性中的“环境变量”对话框进行设置,或者在系统启动脚本(如注册表或系统启动批处理文件)中设置。```