面经 2021自记
面试题地址:
https://www.bilibili.com/read/cv6392576
https://www.bilibili.com/read/cv6046095/
一、如何判断真实Ip
如何判断真实Ip
https://zhuanlan.zhihu.com/p/48290483
1.Nslookup法
黑客一般nslookup想要查的域名,若是有多个ip就是用了cdn,多半为假ip;如图:

2.多地ping域名法
黑客也可以从多个地点ping他们想要确认的域名,若返回的是不同的ip,那么服务器确定使用了cdn,返回的ip也不是服务器的真实ip;
3.“常识”判断法
为什么叫“常识”判断法呢?
①在反查网站ip时,如果此网站有1000多个不同域名,那么这个ip多半不是真实ip。常用的ip反查工具有站长工具(http://s.tool.chinaz.com/same)、微步在线(https://x.threatbook.cn/)等等。微步在线支持同服域名查询、子域名查询、服务查询、whois反查等,要注意的是,查询部分信息有次数限制,需先注册账号。
②如果一个asp或者http://asp.net网站返回的头字段的server不是IIS、而是Nginx,那么多半是用了nginx反向代理,而不是真实ip。
③如果ip定位是在常见cdn服务商的服务器上,那么是真实ip的可能性就微乎其微了。
如何寻找真实ip
1.子域名查找法
因为cdn和反向代理是需要成本的,有的网站只在比较常用的域名使用cdn或反向代理,有的时候一些测试子域名和新的子域名都没来得及加入cdn和反向代理,所以有时候是通过查找子域名来查找网站的真实IP。
2.ip历史记录解析查询法
有的网站是后来才加入CDN的,所以只需查询它的解析历史即可获取真实ip,这里我们就简单介绍几个网站:微步在线,dnsdb.ionetcraft(http://toolbar.netcraft.com/),Viewdns(http://viewdns.info/)等等。
3.网站漏洞查找法
通过网站的信息泄露如phpinfo泄露,github信息泄露,命令执行等漏洞获取真实ip。
4.网站订阅邮件法
黑客可以通过网站订阅邮件的功能,让网站给自己发邮件,查看邮件的源代码即可获取网站真实ip。
5.理想zmap法
首先从 apnic 网络信息中心获取ip段,然后使用Zmap的 banner-grab 对扫描出来 80 端口开放的主机进行banner抓取,最后在 http-req中的Host写我们需要寻找的域名,然后确认是否有相应的服务器响应。
6.网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan(https://www.shodan.io/),fofa搜索(https://fofa.so/)。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
二、操作系统种类
https://product.pconline.com.cn/itbk/software/dnyw/1707/9601593.html
电脑操作系统:
1、DOS —— 操作系统远古霸主
2、Windows —— 操作系统当代大亨
3、Linux —— 诱人的小企鹅
4、FreeBSD —— 神奇的精灵
5、NetWare系统
6、Unix系统
7、Mac OS系统
手机操作系统:
1、Symbiain操作系统
2、Windows Mobile操作系统
如果我没有没有理解错误的话,Windows Mobile的前身是划分较为凌乱的PocketPC、SmartPhone等系列,现在统一成为Windows Mobile。
这个系列也有不同的版本,不过和windows一样,基本上是向下兼容的,不像Nokia的操作系统,不同版本之间有较大差别。
3、Windows CE操作系统
4、Iphone OS操作系统
5、BlackBerry 操作系统
6、Palm操作系统
7、Linux 系统
8、Android系统
google主导的手机操作系统,其实也是基于Linux。
三、Web应用防火墙WAF
https://zhuanlan.zhihu.com/p/97396469
1、预防攻击类型
开放Web应用安全项目(OWASP)所例举的攻击类型
2、部署方式
2.1 透明代理模式
WAF代理了WEB客户端和服务器之间的会话,并对客户端和server端都透明。从WEB客户端的角度看,WEB客户端仍然是直接访问服务器,感知不到WAF的存在。
这种部署模式的优点是对网络的改动最小,通过WAF的硬件Bypass功能在设备出现故障或者掉电时可以不影响原有网络流量,只是WAF自身功能失效。
缺点是网络的所有流量都经过WAF,对WAF的处理性能要求高。采用该工作模式无法实现负载均衡功能。
2.2 反向代理模式
反向代理模式是指将真实服务器的地址映射到反向代理服务器上,此时代理服务器对外就表现为一个真实服务器。当代理服务器收到HTTP的请求报文后,将该请求转发给其对应的真实服务器。后台服务器接收到请求后将响应先发送给WAF设备,由WAF设备再将应答发送给客户端。
这种部署模式需要对网络进行改动,配置相对复杂,除了要配置WAF设备自身的地址和路由外,还需要在WAF上配置后台真实WEB服务器的地址和虚地址的映射关系。
优点则是可以在WAF上实现负载均衡。
2.3 路由代理模式
它与网桥透明代理的唯一区别就是该代理工作在路由转发模式而非网桥模式,其它工作原理都一样。由于工作在路由(网关)模式因此需要为WAF的转发接口配置IP地址以及路由。
这种部署模式需要对网络进行简单改动,要设置该设备内网口和外网口的IP地址以及对应的路由。工作在路由代理模式时,可以直接作为WEB服务器的网关,但是存在单点故障问题,同时也要负责转发所有的流量。该种工作模式也不支持服务器负载均衡功能。
3、WAF安全模式
WAF可以采用白名单和黑名单两种安全模式,也可以两者相结合。
在白名单安全模式下,所有不在名单中的请求类型都会被拒绝;而黑名单正好相反,只会拒绝在黑名单上的请求类型,其它通通放行。
对于新的、还不为开发人员所知晓的攻击类型,白名单可以很好地工作。
黑名单相对来说更容易实现,但问题是维护成本高,因为很多时候我们并不能够枚举所有的攻击类型。
4、WAF测试
针对WAF实施的测试需要一个严格的流程。我们需要知道WAF能够有效防止哪些真实的攻击,漏掉了哪些真实的攻击。同时,我们还需要知道哪些有效的访问也被拦截了。
在针对部署了WAF的Web应用做测试时,最好使用WAF测试框架,并根据下面的步骤来测试:
测试在没有部署WAF情况下web应用的表现。
看看在WAF启用默认配置的情况下,攻击能否成功。
修改WAF的配置,看一下能否拦截上面的攻击。
WAF测试工具不但需要能够触发各种攻击,而且能够产生合法的请求,这样才能检测WAF在预防攻击的情况下能够让合法请求顺利通行。
5、WAF和传统防火墙的区别
传统防火墙主要用来保护服务器之间传输的信息,而WAF则主要针对Web应用程序。网络防火墙和WAF工作在OSI7层网络模型的不同层,相互之间互补,往往能搭配使用。
网络防火墙工作在网络层和传输层,它们没有办法理解HTTP数据内容,而这个正式WAF所擅长的。网络防火墙一般只能决定用来响应HTTP请求的服务器端口是开还是关,没办法实施更高级的、和数据内容相关的安全防护。
三、负载均衡
https://zhuanlan.zhihu.com/p/96845123
四、kali信息收集之主机探测
https://www.cnblogs.com/pandaDou/p/10539052.html
五、网站指纹识别
kali:whatweb
详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等等。
https://www.freebuf.com/column/151540.html
六、DNS记录
DNS记录类型:https://www.cnblogs.com/momenglin/p/8556079.html
七、拿到一个待检测的站,步骤如何?
a、信息收集
1、获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。用邮箱做关键词进行丢进搜索引擎。利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。社工找出社交账号,里面或许会找出管理员设置密码的习惯 。利用已有信息生成专用字典。
2、查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
3、查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
4、查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
5、扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
6、google hack 进一步探测网站的信息,后台,敏感文件
b、漏洞扫描
开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等
c、漏洞利用
利用以上的方式拿到webshell,或者其他权限
d、权限提升
提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
e、日志清理
f、总结报告及修复方案
八、站库分离,怎么渗透和处理?
端口转发
lcx.exe
九、编辑器漏洞
https://blog.csdn.net/u011781521/article/details/59057759
十、手工查找后门木马的小技巧
1、首先最需要注意的地方是系统的启动项,可以在“运行”-输入“msconfig命令”在打开的系统配置实用程序里的启动列表查看,并且服务也要注意一下,如果对电脑不是太熟悉的童鞋建议使用360安全卫士的开机加速功能,来查看有无异常的可以启动项和服务项,因为在后门木马中99%都会注册自己为系统服务,达到开机自启动的目的,如果发现可疑项直接打开相应的路径,找到程序文件,直接删除并且禁止自启动;
2、查看系统关键目录system32和系统安装目录Windows下的文件,xp系统下两者默认路径分别是C:\WINDOWS\system32和C:\WINDOWS\。然后最新修改的文件中有没有可疑的可执行文件或dll文件,这两个地方都是木马最喜欢的藏身的地方了(小提示:一定要设置显示所有的文件的文件夹哦)。
3、观察网络连接是否存在异常,还有“运行”-“cmd”-“netstat -an”查看有没有可疑或非正常程序的网络连接,如果对电脑不是很熟悉建议大家使用360的流量监控功能更加直观和方便,尤其注意一下远程连接的端口,如果有类似于8000等端口就要注意了,8000是灰鸽子的默认端口,记得有一次自己就在后门木马测试中在网络连接中发现8000端口,当然意思不是说只要没有8000端口的网络连接就一定安全,因为8000端口只是灰鸽子上线的默认端口,并且端口是可以更改的。
通过以上方法,可以查找到电脑的一些可疑文件,如果确认无疑,就可以手工进行删除了。当然还可以借助杀毒软件的力量。如果你真的中了木马后门,不用慌。最好最彻底的方法是重装系统后,在安全模式下,利用最新病毒库的杀软进行查杀。
十一、对RPO漏洞的理解
RPO的全称为Relative Path Overwrite,也就是相对路径覆盖,利用客户端和服务端的差异,通过相对路径来引入我们想要的js或者css文件,从而实现某种攻击。
就目前来看此攻击方法依赖于浏览器和网络服务器的反应,基于服务器的Web缓存技术和配置差异,以及服务器和客户端浏览器的解析差异,利用前端代码中加载的css/js的相对路径来加载其他文件,最终浏览器将服务器返回的不是css/js的文件当做css/js来解析,从而导致XSS,信息泄露等漏洞产生。
https://www.cnblogs.com/Rasang/p/11958272.html
十二、dom xss和 反射性xss的区别

简单去理解就是因为他输出点在DOM,反射型在url
十三、变量覆盖漏洞涉及的主要函数
extract()
parse_str()
import_request_variables()
$$(可变变量)
register_globals=On (PHP5.4之后正式移除此功能)
https://www.freebuf.com/company-information/230564.html
十四、https的工作原理
https://www.cnblogs.com/xrq730/p/5041921.html
工作大致过程
1、客户端发起HTTPS请求
浏览器里面输入一个HTTPS网址,然后连接到服务端的443端口上。注意这个过程中客户端会发送一个密文族给服务端,密文族是浏览器所支持的加密算法的清单。
2、服务端配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。
这套证书其实就是一对公钥和私钥,可以这么理解,公钥就是一把锁头,私钥就是这把锁的钥匙,锁头可以给别人对某个东西进行加锁,但是加锁完毕之后,只有持有这把锁的钥匙才可以解锁看到加锁的内容。
前面说过客户端会传送密文族给服务端,服务端则会从这些密文族中,挑选出一个
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构、过期时间等等。
4、客户端解析证书
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密。
注意一下上面提到的"发现异常"。证书中会包含数字签名,该数字签名是加密过的,是用颁发机构的私钥对本证书的公钥、名称及其他信息做hash散列加密而生成的。客户端浏览器会首先找到该证书的根证书颁发机构,如果有,则用该根证书的公钥解密服务器下发的证书,如果不能正常解密,则就是"发现异常",说明该证书是伪造的。
5、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,然后客户端和服务端的通信就可以通过这个随机值来进行加密和解密了。
6、服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值,至此一个非对称加密的过程结束,看到TLS利用非对称加密实现了身份认证和密钥协商。然后把内容通过该值进行对称加密。
7、传输加密后的信息
这部分是服务端用随机值加密后的信息,可以在客户端被还原。
8、客户端解密信息
客户端用之前生成的随机值解密服务端传送过来的信息,于是获取了解密后的内容,至此一个对称加密的过程结束,看到对称加密是用于对服务器待传送给客户端的数据进行加密用的。整个过程即使第三方监听了数据,也束手无策。
十五、讲一讲代码审计的思路
https://blog.csdn.net/ifeves/article/details/102606562
MVC。
通读,关键词查询,查找可控变量,功能点定向审计(程序安装,文件上传,文件管理,登陆)
获取请求->全局过滤->模块文件->c函数内容->M函数内容->V显示
十六、邮件系统漏洞攻击
漏洞攻击是危害网络安全中较为常见的一种。作为当今世界上使用最为频繁的商务通信工具——邮件系统,更是屡屡遭受漏洞攻击的困扰,这不仅因为制造漏洞的途径多,还以为邮件系统的互联网通信协议本身的问题。前者如程序员因为工作失误出现编码漏洞,毕竟人非机器,在紧张复杂的工作过程中,难免有个闪失,除了人为因素,还有软件编码工具及编译器造成的错误,不同应用程序彼此之间的相互作用,如大多数程序必须与其它API相交互,保存并检索文件,同时运行在多种不同类型的设备上,都会可能产生漏洞;后者如互联网通信协议—TCP和UDP,其开放性常常引来黑客的攻击;而IP地址的脆弱性,也给黑客的伪造提供了可能,从而泄露远程服务器的资源信息。
除了以上原因,据业界知名邮件通联服务商U-Mail专家张工分析,常见漏洞大概可分为几种:
一、IMAP 和 POP 漏洞:
这些协议常见弱点是密码脆弱,同时,各种IMAP和POP服务还容易受到如缓冲区溢出等类型的攻击。
二、拒绝服务(DoS)攻击:
-
死亡之Ping——发送一个无效数据片段,该片段始于包结尾之前,但止于包结尾之后;
-
同步攻击——极快地发送TCP SYN包(它会启动连接),使受攻击的机器耗尽系统资源,进而中断合法连接;
3.循环——发送一个带有完全相同的源/目的地址/端口的伪造SYN包,使系统陷入一个试图完成TCP连接的无限循环中。
三、系统配置漏洞:
1.默认配置——大多数系统在交付给客户时都设置了易于使用的默认配置,被黑客盗用变得轻松;
2.空的/默认根密码——许多机器都配置了空的或默认的根/管理员密码,并且其数量多得惊人;
3.漏洞创建——几乎所有程序都可以配置为在不安全模式下运行,这会在系统上留下不必要的漏洞。
四、利用软件问题:在服务器守护程序、客户端应用程序、操作系统和网络堆栈中,存在很多的软件错误,分为以下几类:
1.缓冲区溢出——程序员会留出一定数目的字符空间来容纳登录用户名,黑客则会通过发送比指定字符串长的字符串,其中包括服务器要执行的代码,使之发生数据溢出,造成系统入侵。
2.意外组合——程序通常是用很多层代码构造而成的,入侵者可能会经常发送一些对于某一层毫无意义,但经过适当构造后对其他层有意义的输入。
3.未处理的输入——大多数程序员都不考虑输入不符合规范的信息时会发生什么。
十七、HTTP Keep-Alive的作用
作用:Keep-Alive:使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。Web服务器,基本上都支持HTTP Keep-Alive。
缺点:对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。
解决:Keep-Alive: timeout=5, max=100
timeout:过期时间5秒(对应httpd.conf里的参数是:KeepAliveTimeout),max是最多一百次请求,强制断掉连接。就是在timeout时间内又有新的连接过来,同时max会自动减1,直到为0,强制断掉。
十八、php数组函数常见的那些? (array_merge、in_array的作用)
https://www.cnblogs.com/wuheng1991/p/5175383.html
array_values($arr); //获得数组的值
array_keys($arr); //获得数组的键名
array_flip($arr); //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
array_search('PHP',$arr); //检索给定的值,加true则是严格类型检查
array_reverse($arr); //将数组中的元素翻转
in_array("apple", $arr); //在数组中检索apple
array_key_exists("apple", $arr); // 检索给定的键名是否存在数组中
array_count_values($arr); // 统计数组中所有值出现的次数
十九、PHP中几个输出函数echo,print(),print_r(),sprintf(),var_dump()的区别
1:echo:是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。
2:print:是语句不是函数,有返回值 1 ,只能输出一个变量,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。
3:print_r:是函数,可以打印复合类型,例如:stirng、int、float、array、object等,输出array时会用结构表示,而且可以通过print_r($str,true)来使print_r不输出而返回print_r处理后的值
4:printf:是函数,有返回值,返回值是打印内容的长度,把文字格式化以后输出(参看C语言)
5:sprintf:是函数,跟 printf 相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写写入一个变量中,而不是输出来),其 他的与 printf 一样。
二十、php不用新变量直接交换现有两个变量的值
$arr=array($a,$b);
$arr=array_reverse($arr);
$a=$arr[0];
$b=$arr[1];
二十一、
1)如果没有使用代理服务器
$ip = $_SERVER['REMOTE_ADDR'];
2)使用透明代理
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
代码如下
public function ip() {
//strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
echo $res;
//dump(phpinfo());//所有PHP配置信息
}

浙公网安备 33010602011771号