网安面试三十道题(持续更新)(sql注入系列)

61 给你一个网站,一般怎么做渗透测试的

先确定黑盒测试还是白盒测试

黑盒测试

 信息收集:

   服务器相关---:系统版本,真实IP,开放端口,使用的中间件

   指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息

   whois信息--- 备案信息,邮箱,手机号,姓名

   子域名,旁站,C段

漏洞测试

   sql注入,xss,csrf,弱口令,文件包含,任意文件上传下载,远程命令执行,敏感信息泄漏,目录遍历等

   可以先用工具进行扫描,对结果进行手动验证,排查误报,对一些没办法工具扫描的漏洞,比如逻辑漏洞等通过手动测试

   最后书写报告,写出以及修复建议,整理报告,

白盒测试

直接进行漏洞扫描

  针对ip地址进行渗透测试,用工具进行漏洞扫描,得出报告,进行手动验证,

  再测试一些工具检测不出来的,一些漏洞:越权漏洞、逻辑漏洞、未授权访问漏洞。

  还有一些不让用扫描器的项目,那么就需要纯手工进行漏洞检测了,

  如果发现漏洞,一般就截图留证,写报告,一般不进行漏洞利用,最多获取出来一些数据作为证明,

  最后出具报告以及修复建议,等修复完之后,在进行复测,出复测报告。

 62 打点(打站)过程

一、信息收集

服务器相关---:系统版本,真实IP,开放端口,使用的中间件

指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息

whois信息--- 备案信息,邮箱,手机号,姓名

子域名,旁站,C段,敏感目录检测

二、漏洞扫描

用 AWVS、APPSCAN、长亭科技的 Xray 等扫描器检测 Web 漏洞,如 XSS,CSRF,sql 注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含, 远程命令执行,弱口令,上传,编辑器洞,暴力破解等

用 namp、sqlmap、天镜、Nessus扫描系统,对扫描出来的高危漏洞进行测试,以及进行漏洞验证。

三,漏洞利用

## 利用发现的漏洞,包括中间件以往爆出的漏洞,来进行命令执行、数据提取,或者getshell,或者敏感文件读取等操作

四,权限提升

 Windows提权

    微软官网找公布的exp --- 查看哪些补丁没有打,找到对应漏洞利用工具

   使用工具 ---- 很多专门提权的工具,比如我用过一个叫Pr的工具

    sc命令提权 --- 针对版本windows 7、8、03、08、12、16

    利用 kali 的msf 提权

 Linux提权

    ## 内核漏洞提权,比如老版本kali的内核漏洞

    ## 脏牛提权

    ## sudo 提权

    ## SUID提权

 数据库提权

    ## mssql提权 ------ sqlTools 工具

    ## Oracle数据库 ------ 使用oracleshell工具

    ## MySQL提权

      ## UDF自身提权

      ## MOF漏洞提权

      ## MySQL启动项提权

五,权限维持

    ## 克隆账号

    ## 添加匿名用户

    ## 激活Guest用户

    ## shift后门

    ## 添加schtasks计划任务

    ## 添加启动项,服务

    ## SSH公钥登录

    ## 进程注入

六,收集内网信息,内网渗透

 内网渗透基本步骤

   Step1、信息收集 --- ## 基本信息,用户信息,网络信息,权限信息等

   Step2、获取权限 --- ## 通过一些漏洞拿下一台主机的系统权限 

   Step3、横向移动 --- ## IPC + at/schtasks | IPC + sc | wmic 远程命令执行 | msf横向移动具,Python脚本工具

   Step4、权限维持 --- ## 添加匿名用户,激活Guest用户,添加schtasks计划任务,添加启动项,服务

   Step5、清理痕迹 ---- ## 操作记录,历史记录等

七,痕迹清理

## 操作系统、中间件、数据库等日志进行清除

63 信息收集都要收集什么

服务器相关---:操作系统版本,真实IP,开放端口,使用的中间件,web中间件,数据库版本,软件版本

指纹信息---有无cdn加速,dns解析记录,是不是cms框架信息,ssl证书信息

whois信息--- 备案信息,邮箱,手机号,姓名

子域名,旁站,C段,敏感目录泄漏

64 判断出网站的cms有什么用处?

## 判断出网站的cms就可以去网上查这个cms往常爆过什么漏洞,找对应的漏洞利用工具

## 如果是开源的话还可以下载相应的源码进行代码审计来发现漏洞。

65 扫描网站的目录有什么作用

## 可以收集敏感文件,进行二级目录扫描 获取他的目录结构,获取一些敏感数据,比如网站的备份文件,压缩文件gzip,phpinfo.php文件等

## 可能检测出程序员忘记删掉的备份文件,Git仓库文件,或者后台登录页面

66 如何判断目标主机是Windows还是Linux

## 1、Windows对大小写不敏感,Linux区分大小写。

## 2、通过ping的TTL值进行判断,Linux和widows TTL 值区段不一样

67 假如给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和 admin 目录。请问你的想法是?

直接用7KBscan或破壳工具挂字典在网站二级目录/abc/下扫描敏感文件及目录

68 在目标网站收集注册人的邮箱有什么用处

丢进社工库看有没有泄露密码,并尝试登录后台

可以进行社工,查看他平时的兴趣点,找到其常用密码进行撞库,

将其邮箱丢进搜索引擎,查找其关联的一些账号及设置密码的习惯,

利用已有的信息生成专有字典

69 信息收集用过哪些工具

收集ip:## ping、超级ping、nslookup

收集域名:## 子域名(黑暗搜索引擎,工具:二级域名爆破工具、layer子域名挖掘机),备案号查询,ssl证书查询、威胁情报查询

敏感信息收集:## C段信息收集K8、目录扫描7KBscan和破壳、源码信息泄露.git、DS_store、SVN指纹识别:wappalyzer、御剑,nmap

WAF识别:## kali自带waf识别工具

CDN识别:## ping,黑暗搜索引擎,超级ping

70 waf(安全狗)绕过有了解吗? 

## 身份认证阶段绕过

1,伪造搜索引擎 -------------------- ## 不太管用了,不过可以尝试一下

2,伪造白名单特殊目录 ---------------- ### 属于waf管理员配置规则不当导致的。

3,直接攻击源站(真实ip地址) ---------------- ## 可以绕过云waf

## 数据包解析阶段绕过

1、编码绕过 ------------------ ## 最常见的方法之一,可以进行urlencode,这是早期的方法,现在效果不是太好

2、修改请求方式和请求数据位置绕过

3、复参数绕过

## waf 触发规则绕过

1、特殊字符替换空格 # 比如在mysql中%0a是换行,可以代替空格,在sqlserver和mysql中都可以用/**/代替空格

2、特殊字符拼接 --------------------- ## 通过+拼接

3、注释包含关键字 --------------- ## /*!关键字/

5、使用大小写混合

6、双写(不好用)

7、编码与注释结合

8、利用WAF本身的功能绕过(不好用) -- ## 假如你发现WAF会把"*"替换为空,那么你就可以利用这一特性来进行绕过

9、使用其他变量或者命令对注入语句进行替换(√) -- ## 比如 ' and or 1=1 ,这里的1 可以用mod(8,7)来替换

10、组合绕过waf

11、http请求头设置分块传输(√)

71 常用的抓包工具以及功能和使用 

网安面试三十道题(持续更新)(sql注入系列)_第1张图片

72 判断是否存在CDN,CDN绕过,网站有CDN怎么找真实ip?

判断是否存在CDN:

## 多地ping(也叫做超级ping)、nslookup查询

CDN绕过,网站有CDN怎么找真实ip:

  ## 可以利用查询目标网站的根域名、子域名、泛域名甚至多级子域名来获取真实的IP。

  ## 查看网站备案号来获取真实ip

  ## ping一个不存在的二级域名

  ## 查看DNS历史记录

  ## 利用网站漏洞查找

  ## 网站邮件订阅查找

  ## 通过国外服务器ping对方网站 ------------ 对于国内访问买了cdn服务器,由于国外访问量相对较少,可能没买cdn服务器

  ## DDOS打光CDN流量

73 msf用过常用的命令--漏洞利用框架 

msf全称:## The Metasploit Framework

常用指令:

 msfconsole ## 启动msf

 search ms17-010 ## 搜索漏洞

 show options ## 查看都有哪些需要配置

  set hosts ip ## 配置IP地址

  set port 0000 ## 配置端口

 run/exploit ## 进行漏洞利用

74 AWVS工作原理

## AWVS是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。

## AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。

75 网站有登录 怎么配置AWVS Appscan等扫描器

预登录:## 提前将用户名和密码配置好

设置记录值:## 扫描到登录页面,自动弹出填写用户名和密码等进行登录页面的记录

预设值cookie:## 设置 Cookie 模拟登录网站进行全面扫描

76 蚁剑、冰蝎、菜刀、哥斯拉对比

菜刀:## 先进行URL解码,在进行base64解码,分析明显特征,eval,ua头为百度爬虫

冰蝎:## Java开发,支持跨平台运行,传输数据用的是AES加密+base64编码,AES加密是对称加密算法

冰蝎2.0:## 进行三次密钥的协商过程,最后一次协商是进行aes加密的过程,先进行base64加密,然后再进行aes对称加密,传输给服务端,服务端在进行aes解密以及base64解密,这样拿到结果进行相应的操作去执行命令获取数据。

Content-Length: 16, ## 16就是冰蝎2连接的特征

冰蝎3.0:

## 静态密钥,如果失效了还是要协商密钥

## Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征

##  ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老

冰蝎4.0:新增的功能

## 1.新增支持多线程超大文件上传、下载;

    ## 2.新增文件打包压缩;

    ## 3.新增数据库连接配置可保存;

    ## 4.新增主机扫描、端口扫描、服务识别模块;

    ## 5.新增支持Java9~java15+版本Agent内存马一键注入;

    ## 6.新增支持Java Agent无文件落地注入内存马;

    ## 7.新增多层网络子Shell穿透模块,实现多层”蝎中蝎”;

    ## 8.开放插件开发模块,可开发自定义插件,内置多款插件;

  

蚁剑:## ua有明显的antsword,能够支持自主编码,自行选择编码来传输数据,还可以使用数据分块传输。

77 用扫描和抓包https和http有什么区别 

## https的需要配置https证书,burp上导出证书,安装到浏览器上,本机开启代理,直接就可以抓https的包了

78 扫描器如何较少误报

## 1、添加对应语言的插件

## 2、降低线程数

## 3、将历史误报信息保存在某个地方,每次扫描出来的告警信息先到历史误报中去查看,如果存在表示误报,不存在在进行验证,以减少误报

79 sql注入类型、sql注入的方式?

## 搜索型,字符型,数字型,xx型

## 除此之外 还可以细分比如

 ## 报错注入

 ## 时间型注入

 ## 布尔型注入

 ## JSON注入

 ## 宽字节注入

 ## 编码注入

 ## 加密注入

 ## 堆叠注入

 ## 二次注入

80 sql注入比较了解那个数据库? 

MySQL数据库 ------------------- 系统的去学过MySQL数据库基础,对DQL,DML,DDL,DTL有一定的了解。

5.0之后information-sechma,存着所有的表明库名 ------------------- 可以利用此特性可以进行

表结构数据的获取

81 sql注入的流程

1、# 判断是否存在注入点,在输入框的地方进行sql注入测试,用SQL注入的万能语句判断是什么类型,是数字型、字符型、搜索型还是XX型。

2、## 猜解sql查询语句的字段数

3、## 获取当前数据库的数据版本信息

4、## 获取数据库中的表

5、## 获取表中的字段名

6、## 获取字段里的数据

#3 当然了如果可以利用工具的话用工具进行SQL注入测试,效率高,节省时间

82 sql注入绕过方法

服务端后台绕过

  1、## 编码、可以进行两次编码

  2、## 参数绕过,复制参数(参数污染),id=1&id=1

  3、## 采用内联注释 /*!select*/

  4、## 组合法 如 and 可以用&&再 URL 编码

  5、## 替换法,如 and 改成&&;=可以用 like 或 in 等

 绕过空格(注释符/* */,%a0) ---## 两个空格代替一个空格,用Tab代替空格,%a0=空格:用注释替换空格:

 括号绕过空格 ---- # 任何可以计算出结果的语句,都可以用括号包围起来。而括号的两端,可以没有多余的空格。

 引号绕过(使用十六进制)-- ## 会使用到引号的地方一般是在最后的where子句中

 逗号绕过(使用from或者offset) -- ## 在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号

 比较符号(<>)绕过(过滤了<>:sqlmap盲注经常使用<>,使用between的脚本)

 or and xor not绕过 --- ## and=&& or=||  xor=|  not=!

 绕过注释符号## (#,--(后面跟一个空格))过滤

 使用注释符绕过

 使用大小写绕过

 内联注释绕过

 双关键字绕过

 通用绕过(编码)

 等价函数绕过 ## sleep() ==>benchmark() | concat_ws()==>group_concat() | mid()、substr() ==> substring()

waf 绕过

## 单独说过了

83 为什么要使用or 1=1来测试

## 这是进行sql注入的万能语句,获取所有的数据,可以认为拼接一个永真条件来获取所有数据

84 盲注了解什么

## 这是针对没有回显的情况下来获取数据的方法

布尔型盲注:## 用来获取数据的,一步步进行猜表名,常用函数length(),ascii() ,substr()这三个函数

时间型盲注:## sleep(),猜对了会有延迟,没猜对直接返回,没有延时,通过有无延时来猜数据,常用函数

if(),sleep()函数,benchmark()--可以多次执行SQL语句。

85 基于时间型盲注的函数有哪些? 

if(),sleep()函数,benchmark()-- 可以多次执行SQL语句

86 宽字节是怎么注入的?怎么判断是不是gbk编码?

宽字节是怎么注入的?

## 针对的是后台数据为GBK编码时,并且后台使用了反斜杠\对引号的转译时使用

%df' or 1=1#

%df\' or 1=1#

%df%5c' or 1=1#

運' or 1=1# 吃掉\,让单引号生效

怎么判断是不是GBK编码?

## 对于Windows中文版来说,本地编码就是GBK编码。

## 查看数据头的字节

## 当以UTF16或UTF-8编码存储时,头部需要添加几个字节作为标识。称为 BOM

87 GBK和utf-8的区别

## GBK是中文编码字符集,是GB2312的升级版,主要是为了存储中文字符,存储单个中文和英文字母,都是固定的2个字节长度

## utf-8他是一种全球通用的字符集,可变长度,长度在1-4个字符,英文字母一个字节存储,中文是三个字节存储,支持所有国家的语言,市面上utf-8编码的项目居多

88 sql注入报错注入常用函数,说一下函数报错,知道几个报错函数?常用的有哪几个? 

## 有十几个,但我常用的就是updatexml(),floor(),extractvalue()

89 等号和单引号被过滤,怎么绕过?

## 对等号或者单引号进行URL编码、base64编码,或者使用联合查询、或者将=替换为in关键字试一试

## 针对单引号可以使用宽字节注入试一试

90 sql注入getshell,有哪些方式?

一. into outfile

1. 此方法利用的先决条件

  ## web目录具有写权限,能够使用单引号

  ## 知道网站绝对路径(根目录,或则是根目录往下的目录都行)

  ## secure_file_priv没有具体值(在mysql/my.ini中查看)

2. secure_file_priv

## secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。如下关于

secure_file_priv的配置介绍

## secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

## 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

## 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

二. --os-shell

原理

--os-shell就是使用udf提权获取WebShell。也是通过into oufile向服务器写入两个文件,一个可以直接执行系统命令,一个进行上传文件

利用条件

## root权限

## 知道网站的绝对路径

## GPC 关闭

## secure_file_priv 参数为空或者指定路径

原理:

## 先对目标进行一个基础信息探测,然后上传shell到目标web网站上,利用shell传参进行命令执

行,退出删除shell

## 数据库不同,条件也不同,例如SQLserver需要数据库支持外连,数据库权限为SA权限,主要利用XP_CMDshell扩展进行命令执行sql

你可能感兴趣的:(面试,职场和发展)