LxRunOffline使用手册

一、简介 WSL有多香就不介绍了,但其原生命令较为简陋、默认安装在C盘,稍有不足。而LxRunOffline能够安装任意发行版系统到任意目录,且具备转移已安装WSL目录、备份等功能,是一个极好的WSL管理软件。 项目地址:GitHub - DDoSolitary/LxRunOffline: A full-featured utility for managing Windows Subsystem for Linux (WSL) 二、安装LxRunOffline 常规安装:下载项目,手动安装 通过Chocolatey安装: choco install lxrunoffline 通过Scoop安装: scoop bucket add extras scoop install lxrunoffline LxRunOffline参数介绍: l , list - 列出所有已安装的发行版。 gd , get-default - 获取 bash.exe 使用的默认发行版。 sd , set-default - 设置 bash.exe 使用的默认发行版。 i , install - 安装新的发行版。 sd , set-default - 设置 bash.exe 使用的默认发行版。 ui , uninstall - 卸载发行版。 rg , register - 注册现有的安装目录。 ur , unregister - 取消注册发行版但不删除安装目录。 m , move - 将发行版移动到新目录。 d , duplicate - 在新目录中复制现有发行版。 e , export - 将发行版的文件系统导出到....

Created: 2021-08-28 · Updated: 2021-08-28 · 0opsdc

Scoop使用手册

Scoop简介 Scoop是一个包管理工具,类似Ubuntu的apt和Mac的homebrew,只需通过一条命令即可快速完成软件的下载、安装和配置等步骤。 项目地址:GitHub - lukesampson/scoop: A command-line installer for Windows. Scoop安装 没什么问题的话,大部分的电脑都能直接安装scoop,有问题的话请参考官方文档和网络资料自行解决,本文仅描述scoop的安装过程及实际安装遇到的问题。 注:请确保自身有代理环境,也可自行查找镜像源安装。 默认安装 官方给出的安装命令如下,只需打开powershell粘贴并执行即可,scoop将被默认安装在C:\User\<username>\scoop目录: Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') # 或下述命令,任一条均可 iwr -useb get.scoop.sh | iex 安装完成后,可通过输入scoop help命令查看命令帮助,确认是否安装成功。 更改scoop安装位置 在安装scoop前,可先通过配置环境变量改变scoop安装路径: $env:SCOOP='D:\<dirname>' [Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User') 若已经安装scoop,则仅需在执行上述命令后,将原目录所有文件复制到新指定的目录即可。 更改scoop全局程序安装位置 $env:SCOOP_GLOBAL='D:<dirname>' [Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine') 如果直接执行上述命令可能会报错,原因在于权限不够,使用Windows+X,选择以管理员身份打开powershell,再次运行命令即可。 多线程下载 查阅资料的时候,大部分文章都推荐安装aria2实现多线程下载,提高下载速度,命令如下: scoop install aria2 安装Typora 以下是通过scoop安装Typora的流程,先使用命令搜索一下软件信息: scoop search typora 会有一个报错,大意为typora在extras软件库中,要求我们先安装对应软件库。按照要求执行命令添加软件库: scoop bucket add extras 此时却又报错,提示需要从GitHub拉取项目,需要我们先安装git。安装git: scoop install git 下载失败并报错,但之前都能正常下载,目前只安装了一个aria2,先禁用了看看: scoop config aria2-enabled false aria2默认配置: aria2-enabled (默认值: true) aria2-retry-wait (默认值: 2) aria2-split (默认值: 5) aria2-max-connection-per-server (默认值: 5) aria2-min-split-size (默认值: 5M) 然后再下载git,成功下载,但是在安装软件库时又报错了,显示无法访问GitHub仓库,这可是个老问题了,项目部署经常遇到,检查代理没问题,那么就给git配个代理试试:...

Created: 2021-08-23 · Updated: 2021-08-23 · 0opsdc

如何拥有多个GitHub Pages并配置子域名

文章背景 突发奇想能不能配置多个GitHub Pages,然后分别给它们绑定一个子域名,说干就干。 博客搭建文章:博客搭建 | Atmet (oopsdc.tk) GitHub Pages有三种类型:项目、用户和组织,项目站点连接到GitHub托管的特定项目,后两者连接到特定GitHub账户。用户只能创建一个用户主站,但可以有多个项目站点。 创建项目 创建一个新的名称为test的公开仓库。 进入仓库主页,点击Settings,点击左侧的Pages,选择Launch automatic page generator>Continue to layouts>Pubulish Page。(注:此处选择一个喜欢的主题即可) 搭建完成后可通过<usernmae>.github.io/test访问。 绑定子域名 一般而言,在购买一个域名后,我们可以使用它的子域名,如本博客的域名为oopsdc.tk,现在我想给新创建的test仓库绑定一个test.oopsdc.tk的子域名。 1.进入DNS服务商的控制台,此处以CloudFlare为例,点击新建一个CNAME,设置如下: 保存后进入第二步。 2.在test仓库中新建一个CNAME文件,内容如下: test.oopsdc.tk 也可通过仓库中的Settings进行设置,选择Pages后,修改下面的Custom domain并保存即可。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-08-21 · Updated: 2021-08-21 · 0opsdc

Vulhub环境搭建

安装环境 Ubuntu 20.04 环境配置 docker docker-compose 更换系统源 备份原文件: mv /etc/apt/source.list /etc/apt/source.list.bak 使用以下任一命令创建并编辑source.list文件: gedit /etc/apt/source.list vi /etc/apt/source.list vim /etc/apt/source.list // 需使用 apt install vim 命令安装 文件内容如下: # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors....

Created: 2021-08-20 · Updated: 2021-08-20 · 0opsdc

GitHub不再支持密码验证解决方案

问题描述 在更新博客push本地资源时遇到如下报错: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 大意就是GitHub从13号起不再支持密码验证,需要使用个人token,官方解释是为了安全。 解决方案 进入GitHub首页后点击右上角的个人头像,选择Settings,在左侧选择Developer settings,然后选择Personal access tokens,选中之后点击Generate new token,我们可以设置token名、有效期及token的权限范围。仅需要仓库部署的话,我们就只需勾选repo,翻到最下面点击Gererate token。 然后保存好生成的token,因为退出页面后将不再显示,可以通过重新生成来重新获取。然后在push项目时,将输入的密码改为我们生成的token即可。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-08-19 · Updated: 2021-08-19 · 0opsdc

Kali安装Parallels Tools

环境配置 本文环境信息如下: Parallel Desktop 16 Business 16.5.0 (49183) Kali Linux 2021.2 64-Bit 系统安装 安装配置 安装Kali Linux的时候Parallels Desktop无法识别操作系统,需要我们手动选择Other Linux下的Kali Linux。 配置选项因人而异,此处不细讲。 在安装过程中可选择GNOME作为桌面环境,避免后面的踩坑。 更换国内源 # 备份原文件 mv /etc/apt/source.list /etc/apt/source.list.bak # 更换为清华源 vim /etc/apt/source.list # 输入以下内容 "deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free" "deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free" 安装Parallels Tools 把鼠标移到窗口的右上,有一个黄色的感叹符号,点击即可安装Parallels Tools。 # 检测光盘是否挂载成功 mount | grep iso9660 # 将安装文件拷贝至本地,此处的dirname为自己创建的目录名称 mkdir ~/<dirname> && cp -r /media/cdrom0/* ~/<dirname> # 安装Parallels Tools cd ~/<dirname> && ....

Created: 2021-08-18 · Updated: 2021-08-18 · 0opsdc

MD5()函数绕过

示例代码: if (md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) 弱类型绕过 PHP在处理哈希字符串时,会把每一个0E开头的哈希值解释为0,所以若两个不同密码进行哈希后以0E开头,则会被认为值均为0,从而判等。 md5加密后开头为0E的值: QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a 以示例代码为例,分别给md51和md52赋表中不同的值。经过md5加密后,值均为0,而原始值又不同,顺利绕过if判断。 数组绕过 md5()函数无法处理数组,会对传入的数组返回NULL,即数组经过md5加密后均得到NULL。 我们仅需传入如下数据即可,数组内容随意: md51[]=1&md52[]=2 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-08-13 · Updated: 2021-08-13 · 0opsdc

BUUCTF

Basic Linux Labs 2020年10月24日 更新:目前所有靶机均能直接访问互联网。 点击启动靶机可以启动一台安装好了 LAMP 的机器。 并且这台机器位于靶机内网,所有动态靶机均可直接通过主机名访问这台机器。 但由于目前一个账户只能同时启动一台靶机,您如果有需要建议浏览器开一个隐私窗口,注册一个新账号来启动这个靶机。 ssh 用户名:root 密码:123456 地址和端口为动态分配的。 开启环境后按照题目给定地址和端口使用SSH连接即可。 连接上云主机后使用ls命令,发现当前用户家目录下啥也没有,再使用cd ..命令切换到根目录下看看,发现flag.txt文件。 也可直接使用cat /flag.txt命令查看flag。 BUU LFI COURSE 1 启动环境后得到如下PHP代码: <?php /** * Created by PhpStorm. * User: jinzhao * Date: 2019/7/9 * Time: 7:07 AM */ highlight_file(__FILE__); if(isset($_GET['file'])) { $str = $_GET['file']; include $_GET['file']; } 本地文件包含,通过file参数进行传参,可在URL后构造参数?file=/flag查看flag。 拓展 通过Wappalyzer插件可以发现网站使用了nginx服务,尝试访问nginx访问日志: ?file=/var/log/nginx/access.log 页面回显出我们刚才的访问记录,接下来我们使用bp抓包尝试写入phpinfo。 通过在User-Agent字段最后插入aaaaaaa<?php phpinfo();?>bbbbbbb传入phpinfo(),刷新页面后检查是否传入成功。 Request请求包如下: GET /?file=/var/log/nginx/access.log HTTP/1.1 Host: <domain>:<port> Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10....

Created: 2021-08-13 · Updated: 2021-08-13 · 0opsdc

ATT&CK实战一

一、环境搭建 1.1 下载虚拟机文件 自行搜索。 1.2 环境介绍 开机密码:hongrisec@2019. 本次实验共3台主机,Win7作为Web服务器,是最先攻击点,Win2k3为内网域成员主机,Win2k8 R2为内网域控主机。 Kali:自主搭建,配置与Web服务器同一网段的IP,使用命令ifconfig eth0 <ip>即可。 Win7:双网卡,即存在内外网IP。外网网卡通过DHCP自动获取IP,内网网卡配置静态IP:192.168.52.143。服务器存在yxcms。分别与Kali(NAT模式)和内网两台主机(自定义VMnet2)连通。 Win2k3:只有内网网卡,IP:192.168.52.138,使用VMnet2。 Win2k8 R2:只有内网网卡,IP:192.168.52.141,使用VMnet2。 拓扑图如下: 安装完成之后在Win7主机上打开phpstudy开启Web服务。 二、信息收集 2.1 探测存活主机 命令: nmap -sS -sV -O 192.168.106.0/24 # 此处的IP为NAT模式下Win7和Kali自动获取到的IP # 参数说明 sS : SYN半连接扫描,只进行前两次握手 sV : 显示服务器详细版本 O : 显示服务器操作系统(不太准确) 结果: Nmap scan report for 192.168.106.150 Host is up (0.00044s latency). Not shown: 998 filtered ports PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 3306/tcp open mysql MySQL (unauthorized) MAC Address: 00:0C:29:33:16:84 (VMware) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Microsoft Windows 2008|7|8....

Created: 2021-07-21 · Updated: 2021-07-21 · 0opsdc

浅析APNs推送机制

APNs简述 Apple Push Notification server(APNs),即苹果推送通知服务。 APNs出现需求 由于移动设备内存、CPU、电池容量等各种因素,iOS不允许APP进程常驻后台(时限大概为10min)。 当用户主动关闭APP或后台APP进入后台达到限定时长后,意味着该APP进程的结束,在一定程度上保证了手机的流畅度与使用时长。但这也同时意味着服务器无法主动和用户交互(如实时推送消息),为了解决这个限制,苹果推出了APNs,允许设备和服务器分别与苹果的推送服务器保持长连接状态。 iOS通知 iOS通知分为本地通知和远程通知两类,APNs是远程通知功能的核心。 本地通知 由本地应用触发,一般是基于时间的通知形式,如闹钟、日历、待办事项等。 远程通知 通过自建服务器推送消息的通知形式。 APNs推送流程 苹果官方APNs概述:Local and Remote Notification Programming Guide: APNs Overview (apple.com) 以下为APNs推送流程图: Provider:自建应用服务器 APNs:苹果APNs推送通知服务器 Device:苹果设备 Client App:应用 大致流程可分为以下4点: 苹果设备安装应用后会向APNs服务器进行注册,注册成功后APNs服务器返回一个deviceToken,且二者之间会维持一个基于SSL协议的TCP流通讯的长连接。 拿到deviceToken后设备会将其发送至自建应用服务器 有消息需要被推送时,自建服务器会将消息按指定格式结合deviceToken一并打包发送给APNs。 APNs将新消息推送至设备,并在设备屏幕上显示出来(因为设备和服务器之间维持了一个长连接) 结合上述过程可以发现,真正完成推送的是APNs服务器,消息一定是由APNs服务器推送给我们的设备,自建应用服务器只是将需要推送的消息告诉APNs服务器。至于如何维护消息队列或如何保证消息能被推送到指定设备上,这些功能都是由APNs实现的。 deviceToken deviceToken是一个APP安装在设备上的唯一标识符,一个APP在不同设备上的deviceToken不同,同一台设备重新安装同一个APP后deviceToken也会不同。 项目代码AppDelegate中有一个回调方法,当APNs注册成功后通过该回调方法可以获取到返回的deviceToken。 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken APNs拿到这个包之后会验证包结构是否正确,验证无误后会提取其中的消息,再将消息推送至指定设备。 消息体结构如下: { "aps":{ "alert":{ // 显示在用户设备上的推送标题内容 "title":"Test Request", "body":"This is a test msg.", }, "badge":5, // 显示的数量(整形类型),是在应用icon右上角显示的数量,提示有几条未读信息 "sound":"default" // 推送消息声 } } 其实这就是一个JSON结构体,上述代码只是一种简单消息体,详情可见苹果官方文档:Local and Remote Notification Programming Guide: Creating the Remote Notification Payload (apple....

Created: 2021-07-20 · Updated: 2021-07-20 · 0opsdc