✍前言

简单的过一遍基础面试题目。

1.同源策略以及绕过此限制的方法

https://blog.csdn.net/duzm200542901104/article/details/85870019

2.三大数据库写马方式

https://fstraw.cn/posts/ffe60f3c.html

3.代码审计的思路

  1. 寻找敏感功能点
  2. 根据敏感关键字回溯
  3. 直接通读全文代码
  4. 查找可控变量,正向追踪变量传递过程

4.应急响应思路

断开异常连接、排查入侵源头、避免二次入侵

一、发现异常点

  1. 网站部分:篡改、丢失乱码

  2. 文件部分:丢失、篡改、泄露

  3. 系统部分:系统卡顿、CPU爆满、服务宕机

  4. 流量部分:大量数据包、陌生外部连接、网速网络卡顿

  5. 第三方服务部分:服务异常、运行异常

二、收集信息

  1. 操作系统:linux、windows、mac

  2. 具体收集内容:对外服务、开放端口、系统版本、网络环境、漏洞情况、软件平台、口令整理、有无防护

  3. 具体什么时间段出现异常

1.WEB漏洞-检查源码类别及漏洞情况

**2.**中间件漏洞-检查对应版本及漏洞情况

**3.**第三方应用漏洞-检查是否存在漏洞应用

**4.**操作系统层面漏洞-检查是否存在系统漏洞

**5.**其他安全问题(口令,后门等)-检查相关应用口令及后门扫描

三、模拟攻击

  1. web攻击:漏洞攻击、结合攻击、流量攻击

  2. 第三方攻击:数据库、远程网站、服务平台

  3. 操作系统攻击:权限提升、内网渗透、远程漏洞

基于时间 基于操作 基于指纹 基于其他

告诉你什么时间出现异常,就可以筛选时间 减少看垃圾日志浪费的时间

客户告诉你他的数据库崩了(数据更改了) 数据库安全问题

修改了哪个网站 就会想到要是你来攻击你会怎么入手 连接会用哪些工具(软件就有指纹) 就可以直接在日志中定位这个指纹 就可以第一时间找到攻击者攻击的数据包在哪

四、追查

日志分析、后门分析、流量分析、脚本软件分析、模拟渗透分析

参考链接:

https://blog.csdn.net/qq_51577576/article/details/121582451

5.如何处理勒索病毒,文件被加密,怎么处理呢?

  1. 在网上查找有没有破解工具。如果是老款的勒索病毒,网上有可能可以找到加解密工具。

这里注意一点,如果找到了解密工具,最好是先备份,再解密。

因为如果版本不一致,会解密失败,但同时文件底层扇区会进行相应的解密修改,导致后期就算找到一致的解密工具或解密秘钥,都是没办法再成功解密的,因为加密信息已经不一致了。

几个解密工具集下载地址:
No More Ransom

Emsisoft

卡巴斯基

MalwareHunterTeam

  1. 寻找专业团队进行恢复或修复

  2. 有些数据库可以恢复

  3. 等待解密工具出现

6.渗透测试流程

目标确认–>信息收集–>漏洞发现–>漏洞利用–>权限维持/内网渗透–>目标获取/痕迹清理

7.有没有复现过经典的漏洞

永恒之蓝、Apache Shiro、log4j rce

8.谈谈 sql 注入

含义、原理、条件、危害、防御、分类、利用、常用函数、绕waf等等的方面

https://fstraw.cn/posts/7b6ed634.html

9.对数据库的了解讲一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Mysql、MsSQL、Oracle、Access

Access:是由微软发布的关联式数据库管理系统。小型数据库,当数据库达到100M左右的时候性能就会下降。数据库后缀名:.mdb。一般是asp的网页文件用access数据库

SQL Server:1433:是一个比较大型的数据库。数据库后缀名 .mdf

MySQL:3306:是一个关系型数据库管理系统。MySQL数据库大部分是php的页面。

Oracle:1521:关系数据库管理系统。常用于比较大的网站。

差异:

成本上的差距:access是不要钱的,mysql也是开源的,sql server 是收费的一般也就几千,Oracle的费用则数万。

处理能力:access支持千以内的访问量,sql server支持几千到上万的访问,而Oracle则支持海量的访问。

数据库的规模:access是小型数据库,,mysql 是中小型数据库,sql server是中型数据库,Oracle是大型数据库。

10.预编译的原理

在sql参数未注入之前,提前对sql语句进行预编译,后面注入的参数将不会再进行sql编译。即后面注入进来的参数系统将不会认为它会是一条SQL语句,而默认其是一个参数。

预编译是通过PreparedStatement和占位符来实现的

预编译防止不了排序处的注入。

https://forum.butian.net/share/1559

11.phpinfo你会关注哪些信息

  1. PHP版本、服务器信息、网站安装的绝对路径
1
2
3
4
网站安装的绝对路径
_SERVER["SCRIPT_FILENAME"]
真实IP
_SERVER["SERVER_ADDR"]
  1. 支持的程序

    比如redis、memcache,那么可以通过ssrf来getshell

  2. GOPHER

ssrf来getshell

  1. 数据库IP、用户名、密码

  2. fastcgi

查看是否开启fastcgi和fastcgi的版本,可能导致解析漏洞、远程命令执行、任意文件读取。

  1. 泄露缓存文件地址
1
_FILE["file1"]

向phpinfo() post 一个shell可以在该位置看到上传的临时文件,如果有lfi,可以直接getshell

  1. 敏感配置
1
2
3
4
5
6
7
8
9
allow_url_include
远程文件包含
allow_url_fopen
disable_functions
禁用函数,绕过执行
open_basedir
用p牛的绕过open_basedir的方法有可能读一些没权限的目录
short_open_tag
...
  1. 环境信息

如Environment中的path、log等

12.有没有了解过权限维持

https://fstraw.cn/posts/8035962c.html

https://fstraw.cn/posts/b0237af4.html

13.json格式的CSRF如何防御

1)用户操作验证,在提交数据时需要输入验证码

2)请求来源验证,验证请求来源的referer

3)表单token验证

现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)。

这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构造一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。

14.fastjson相关漏洞

  1. Fastjson<1.2.24远程代码执行(CNVD-2017-02833 )
  2. Fastjson<=1.2.47远程代码执行漏洞(CNVD-2019-22238)
  3. Fstjson < 1.2.60 远程拒绝服务漏洞
  4. Fastjson <=1.2.68 反序列化远程代码执行漏洞

15.说一个你知道的python相关的漏洞(SSTI原理,利用过程,payload相关的东西)

16.过滤limit后的逗号如何绕过

17.浏览器解析顺序和解码顺序

18.samesite防御CSRF的原理

19.信息收集如何处理子域名爆破的泛解析问题

目前最好的解决方式是通过先获取一个绝对不存在域名的响应内容,再遍历获取每个字典对应的子域名的响应内容,通过和不存在域名的内容做相似度比对,来枚举子域名,但这样的实现是以牺牲速度为代价

20.你是怎么做资产搜集的

Fofa、Goby、子域名在线收集。这些都没有收获的话,就会去扫一下C段,手工去收集一些比如公众号、小程序、app之类的信息。

21. 你对linux和windows的常用命令了解吗,如何查看linux的计划任务

Windows

常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. 查看网络连接具体信息 netstat
netstat -ano
2. 查找本机ip的网络连接具体信息 find
netstat -ano |find "ip"
3. 创建用户
net user 用户名 密码 /add
4. 将用户加入到管理员组
net local group administrators 用户名 /add
5. 查看当前进程列表
tasklist
6. 杀死某个进程
taskkill /PID
7. 计划任务
2003 以下版本 at
2003 以上版本使用 schtask

Linux常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1. 查看系统所有的进程数据 
ps aux
2. 强制杀死某个进程
kill -9 PID
3. 判断文件的类型
file filename
4. tar
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
5. chgrp
chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users
6. chmod
chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
chmod g+w file # 向file的文件权限中加入用户组可写权限
chmod +x file # 给文件执行权限
7. crontab命令选项
# crontab -u
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务

用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

1
2
3
/etc/cron.deny     该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

cat /etc/crontab 查看

22.挖到过逻辑漏洞吗

逻辑漏洞挖到过很多,比如支付金额修改、用户名枚举、短信轰炸、验证码绕过

23.挖到过框架漏洞吗

没有

24.讲一下宽字节注入

当某字符的大小为两个字节时,称其字符为宽字节

数据库使用的的是GBK编码而PHP编码为UTF8,%df%27或%81%27数据为空,%27的url解码为单引号 ,所以php为给引号增加一个转义字符 \,而转义字符的url编码为%5c和前面的%df结合就组成了一个新的字符,准确的说是一个汉字

就是说客户端发送的数据编码为gbk时,那么可能会吃掉转义字符\反斜杠,闭合之后页面恢复正常,存在宽字节注入

25.你绕过waf吗,怎么做的

绕过waf的方式有很多,简单绕过是 大小写

特殊字符替换空格或注释绕过:union select 1,2可转换为union/xx/select/xx/1,2

编码绕过:少数waf不会对普通字符进行URL解码,还有一部分waf只会进行一次url解码,所以可以对payload进行二次url编码。常见的SQL编码有unicode、HEX、URL、ascii、base64等,XSS编码有:HTML、URL、ASCII、JS编码、base64等等。

关键字替换绕过:也就是在关键字内部复写

多请求拆分绕过:对于多个参数的语句,可以将注入语句分割插入。
如这样的请求:?a=[inputa]&b=[inputb]可将参数a和b拼接如:and a=[inputa] and b=[inputb]

利用cookies绕过、云WAF绕过之寻找网站源ip

还有发送大量垃圾数据绕过,条件竞争让waf处理不了。

26.说一下nmap的默认扫描方式

-sS 执行半开扫描,不完成TCP握手流程。只向目标端口发送一个SYN报文,然后等待响应。SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。如果多次重发后仍没响应, 该端口就被标记为被过滤。

27.说一下xss、csrf和ssrf的区别

XSS和CSRF的相同点,它们都是利用浏览器发送数据包,而SSRF是在服务器上执行让服务器偷偷发送数据包;另外,CSRF和XSS都会利用到Cookie,但CSRF是利用它让浏览器偷偷发送数据包,而XSS是直接窃取Cookie。

csrf 存在的原因一般都可以是因为表单没有token参数校验。

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

csrf 一般可以结合 xss 进行攻击。

ssrf 一般可以结合 内网的redis、log4j等大规模存在的漏洞进行攻击

28.说一下CSRF的适用场合

一般适用于后台的密码修改、用户权限提升,用户添加等。

29.说一下XSS的绕过方式

  1. 大小写绕过
  2. 空格/回车(换行符)/Tab
  3. 堆叠绕过

类似于 输出为 为变量$str

$str2=str_replace(“script”,””,$str);
$str3=str_replace(“on”,””,$str2);
$str4=str_replace(“src”,””,$str3);
$str5=str_replace(“data”,””,$str4);
$str6=str_replace(“href”,””,$str5);
可以采用oonn避开过滤 机制是吧中间的on过滤了

  1. 事件绕过

就是加入一些事件 此方法可绕过大部分SRC域名过滤器,它允许将事件替换为任何标签中可用的事件类型,例如onblur,onclick

  1. 伪协议绕过

利用 在a标签里插入 javascript: 伪协议

  1. 前端抓包绕过

可修改,可以编码抓包绕过

  1. html5新标签绕过

30.说一下文件上传的绕过方式

修改文件名后缀

图片一句话木马

htaccess文件绕过上传

IIS6.0 解析漏洞

编辑器漏洞

IIS高版本上传–畸形解析漏洞

aspx漏洞

双写filename绕过waf

目录穿越

https://fstraw.cn/posts/b96d5de5.html

31.怎么合成图片马

1
copy mm.jpg/b+ma01.php/a mm-ma01.jpg

也可以加上图片标识头,改为gif后缀

1
2
GIF89a
<?php assert($_POST[whuctf]); ?>

32.你遇到过竞争条件吗

验证码发送,短信爆破

33.你对log4j有什么理解

其他题目

https://mp.weixin.qq.com/s/dd3Mi7T8hF70t2MtmyDOTA

自我介绍