举例: 例如,假设有一个应用程序叫做"example.exe",它依赖于名为"example.dll"的动态链接库。而"example.exe"在加载"example.dll"时没有使用绝对路径,而是仅仅指定了DLL的名称。攻击者可以将恶意的"example.dll"文件放置在与"example.exe"相同的目录下,当"example.exe"启动时,系统会先在当前目录中查找"example.dll"文件,如果找到,就会加载该文件并执行其中的恶意代码。 DLL劫持可以函数转发劫持也可以往完整DLL插入恶意代码,这里用的函数转发劫持,大致流程如下图所示: https://kiwings.github.io/2019/04/04/th-DLL%E5%8A%AB%E6%8C%81/ 2.2 劫持dbghelp.dll redis-server.exe在执行bgsave时,会先在应用目录查找dbghelp.dll,找不到再去system32目录下找: 而不管redis的权限是Administrator还是普通用户或者Network Service,它对自己的应用目录一定有写文件的权限,我们可以通过Redis的主从复制在应用目录里写入恶意DLL。 2.3 函数转发劫持 对DLL进行函数转发劫持需要导出原本DLL的函数和地址,以保证程序通过恶意DLL调用这些函数时不影响正常功能,DLL的导出函数一般比较多,用Aheadlib之类的工具可以自动化处理。 我这里用的是DLLHijacker,它会自动处理导出表并生成一个VS2019的项目,但这个python脚本有几个bug: https://github.com/kiwings/DLLHijacker (1) VS项目中文乱码: 修复:几个写文件的地方添加 encoding="utf-8"。 (2) 函数导出表有匿名函数的时候,会导致以下报错 [-]Error occur: 'NoneType' object has no attribute 'decode 修复:在几个for循环里添加函数名是否为空的判断可以解决这个问题。 (3) 生成C/C++代码时,没有使用目标DLL的绝对路径,只是用了DLL的名字填充LoadLibrary(),这是一个很严重的bug,会导致函数转发失败、Redis的功能受到影响从而只能劫持一次: 修复:我改成了根据输入的目标DLL路径自动填充。 如果没有使用原DLL的绝对路径,在Process Monitor可以看到,只会调用应用程序目录里的恶意DLL,并没有调用原本的system32下的dbghelp.dll: 从而redis的功能受到影响,导致redis的bgsave只能触发一次DLL调用,第二次bgsave的进程会被阻塞从而无法调用DLL,并且Redis关闭后将无法启动: 这也是网上部分师傅的文章写”不会影响redis运行 但会无法重启“的原因,因为他们也是用的DLLHijacker,并且没有发现有这个坑,这不仅会影响业务,而且只能劫持一次: 正常的DLL劫持不会影响程序的功能,可以劫持很多次,假如我第一次劫持想上线CS但是没有成功,那对面可能不出网,那我可能会再劫持打一个MSF的反向shell,都没成功我也可以继续尝试MSF盲打命令: 正常的DLL转发劫持如下,调用完应用程序目录里的恶意DLL后会调用原DLL: 0x03 漏洞利用 3.1 工具使用 工具下载地址: https://github.com/P4r4d1se/dll_hijack 如是是Windows 64位的Redis DLL劫持的话,可以直接用里面的VS2022版的dbghelp项目。 其他要用我修改后的DllHijacker.py和目标DLL路径生成VS项目: python3 DLLHijacker.py C:\Windows\System32\dbghelp.dll 下载安装VS2022,只用勾C++桌面开发: https://visualstudio.microsoft.com/zh-hans/downloads 打开生成目录里的sln文件,因为原本是VS2019的项目所以会提醒你升级,选确定,不然得另外安装v142的编译组件才能编译VS2019的项目: 打开后在源文件的dllmain.app,修改里面的shellocde就行,其他不用改: 3.2 出网——Cobalt Strike 如果Redis主机直接出网,或者能通其他已经上线CS的出网主机,那直接上CS是最好的选择,CS生成C语言的payload: 源文件的dllmain.app里把payload替换进去,然后选Release x64,生成——生成解决方案: 然后主从复制将dbghelp.dll写过去并bg
from __future__ import absolute_import的作用:
在linux安装软件的时候,我总会有这样的想法,软件到底安装到那个目录下。因为linux系统有别与Windows系统,不是在那个盘创建一个文件夹把你需要安装的程序安装到指定目录即可。linux目录类似一个树,最顶层是其根目录,每个目录有自己不同的作用。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
我们应该知道 Windows 有一个默认的安装目录专门用来安装软件。Linux 的软件安装目录也应该是有讲究的,遵循这一点,对后期的管理和维护也是有帮助的。
dev是Device的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
本文档主要以CentOS7操作系统为例,介绍如何使用开源工具Extundelete快速恢复被误删除掉的数据。
为防止操作权限不足,建议切换root用户,当然如果你对Linux命令熟悉,能够自主完成权限更新操作,可以不考虑此推荐。
本文介绍的是Linux中的常用命令用以满足日常的操作,但并非所有命令。更详细的命令烦请参考手册 http://man.linuxde.net/
在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamingo(中文:火烈鸟),并开源其服务器和pc客户端代码。以此来对前几篇文章中说到的理论进行实践。 代码在github和http://csdn.net上各上传了一份: github地址:https://github.com/baloonwj/flamingo csdn地址: 服务器端代码地址:http://download.csdn.net/detail
语法: find [路径] [参数] ;find [选项] [路径] [filename]
Windows系统可以拥有多个盘符,如C盘,D盘,E盘 Linux没有盘符这个概念,有类似的分区(一个硬盘分多个分区) Linux所有文件都在’根’目录下 Linux主要目录速查表 /bin:二进制命令所在的目录 /boot:系统引导程序所需要的文件目录,引导系统开机 /dev:设备软件目录,磁盘,光驱 /etc:系统配置,启动程序 /home:普通用户的家,目录默认数据存放目录 /lib:启动系统和运行命令所需的共享库文件和内核模块存放 /mnt:临时挂载存储设备的挂载点,u盘插入光驱无法使用,需要挂
首先,我使用的是redhat linux ,版本号为: 1 [root@localhost init.d]# cat /proc/version 2 Linux version 2.4.20-8 (bhcompile@porky.devel.redhat.com) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #1 Thu Mar 13 17:54:28 EST 2003 1. 第一步,下载一个mysql版本...我下载的是.tar压缩包,所以对
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
我首先提出几个问题,大家先思考一下,如果都可以想出来,说明对类加载器的掌握程度还算不错:
MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。
不管是什么语言,开发什么项目,一个稍大的项目,必然要面临如何管理项目结构布局的问题,因为一个简洁清晰的布局是项目可读的关键。
http://www.mycat.io/document/mycat-definitive-guide.pdf
视频直播软件系统开发,常用的流媒体传输协议有RTMP,RTSP,HLS,HTTP-FLV
所以如果一个dll不在应用程序所在目录,那么我们可以在应用程序所在目录放一个我们自己的dll,名称改为要加载dll的名称,这样当程序启动时,程序会加载我们自己的dll。当然这里只是简单的说了一种情况,某些情况下,即便正常dll存在,我们也可以通过dll劫持转发的方式劫持,目前不少厂商已经通过hash,MD5校验或数字签名验证等方式确保加载的dll为自己的dll,这会是即便你找到了相关可利用的dll劫持但还是失败的原因之一。
•环境变量PATH中所有目录。需要注意的是,这里不包括App Paths注册表项指定的应用程序路径。
好了,luasocket的编译和部署就讲完了,做完上面这些步骤,就可以用luasocket来编写网络程序了。
话说 国产的很多的东西没有提供64位的安装包,而网上大多数的办法是直接强行安装。首先通过sudo apt-get install ia32-libs安装ia32-libs然后再安装32位的QQ。其实没有必要那么复杂,直接下载一个gzip的压缩包解压用就可以了。下载之后可以通过下面的方法创建一个快捷方式:
织梦dedecms系统默认的网站地图生成系统是将sitemap文件生成到 “data” 目录下,但是dede的robots.txt中又禁止了“data”目录的抓取,所以通常情况下,搜索引擎可能无法正常专区网站地图。
部门刚上线了一个新系统,发现一个 BUG,于是开发直接上机器调试,他认为是文件目录权限不够的问题,于是想用 chmod -R 777 先给这个程序目录全部权限试试。 结果,那家伙手一抖命令敲成了: chmod 777 -R /* 而且想都不想就回车了,然后弹出一堆 /proc/*** 没权限更改目录权限的错误提示,我一看就冷了一大截。。。里面让他 ctrl +C 终止命令。 不出所想,系统文件权限已经大部分都变成了"777"!下面是解决方法: ---- Linux 中,如果意外误操作将根目录目录权限批量设置
网址 192.168.0. 172.16. 10.0. 以上是内网网段 127.0.0.1 这是本地回环网卡 表示本身 查看网络是否连通 windows Linux 都是通过 ping 先ping网关 再ping 其它 查看ip地址 windows:ipconfig Linux:ifconfig 系统架构 Linux一切目录从根出发 sudo apt-get install tree 查看当前位于哪个目录下 pwd 防止切换来切换去 不知道位于哪里 cd / tree -L 1 挂载:
Go从1.5版本之后,就默认优先使用vendor子目录中的依赖库,而不是$GOPATH/src中的依赖包,这样我们可以把工程源码到处复制,使用时直接go build就可以了,不需要考虑一大堆第三方依赖包的管理问题。
出现以上结果的原因在于 -name只要求匹配当前目录中的文件(夹)名称,而-regex则是把find输出的完整结果作为匹配对象,所以上面的命令中,默认是以a作为开头的字符串匹配,不符合-regex规则,所以没能匹配到想要的结果。
使用QT creator 创建一个程序,并且将其同步到Subversion (SVN)版本管理系统。
在前几篇文章中,我们一块讨论了:在 Linux 系统中,编写字符设备驱动程序的基本框架,主要是从代码流程和 API 函数这两方面触发。
没有 docker 部署的程序是不完整的,在写了 IIS/Centos/Supervisor 3篇托管介绍文章后,终于来到了容器化部署,博客园里面有关于 docker 部署的文章比比皆是,作为硬核实战派,这里做的一定是一套打完带走的功法。本文使用的学习机器是由 Azure 倾情提供的 30 天试用版本,大家都可以申请的哈。
目前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。
Linux和UNIX的文件系统是一个以“/ “为根的阶层式的树状文件结构,/ 因此被称为根目录。所有的文件和目录都置于根目录/ 之下。根目录/下面有/bin,/home,/usr等子目录。在早期的UNIX系统中,各个厂家各自定义了自己的UNIX系统的文件系统构成,比较混乱。
1. 下载 https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问。通过如下地址下载:https://golangtc.com/download。
本文主要讲解在Python程序中调用C(C++)程序的方法。 主要思路是:在VS中配置好环境后,将C语言程序打包生成动态库文件.dll。将.dll改名成.pyd之后,装入相应路径,在pycharm中直接import即可
一直以来,对于磁盘的分区以及Linux目录挂载的概念都不是很清晰,现在趁着春暖花开周末在家没事就研究了下它们,现在来分享我的理解。
实验背景: 程序源代码编译安装通常需要如下三个步骤:./configure à make à make install
七、使用浏览器访问http://IP:3000,完成配置安装,建议使用SQLite:
作为应急响应工具,支持勒索挖矿病毒及webshell等恶意样本排查检测,辅助安全工程师应急响应时排查入侵痕迹,定位恶意样本。作为基线检查工具,辅助检测和排查操作系统配置缺陷;(TODO) 作为软件供应链安全检查工具,可提取web应用程序开源组件清单(sbom),判别引入的组件风险。(TODO)
今天为大家介绍一款基于.NET Core运行时实现的Windows HOOK库,CoreHook。
Linux的目录结构是一个树型结构 Windows 系统 可以拥有多个盘符, 如 C盘、D盘、E盘 Linux 没有盘符 这个概念, 只有一个根目录 /, 所有文件都在它下面
BaiduPCS-Go 是一款由 iikira 大佬使用 Go 语言编写的第三方百度网盘客户端,点此直达项目地址。BaiduPCS-Go 支持 Windows、macOS、linux、移动设备等平台,支持多个文件或目录下载, 支持断点续传和单文件并行下载,功能强大,下载速度快。博主在 Linux 上一直使用该软件来实现本地文件同百度云的下载与同步,但在使用的过程中遇到一个问题,就是大文件下载或多文件下载的时候有时会出现 403 Forbidden 的错误,此为百度网盘禁止访问所致。本文详细介绍 BaiduPCS-Go 下载文件出现 403 Forbidden 的解决方法,按照本文描述的步骤操作,一般会完美解决 403 Forbidden 的问题。
该项目开发的软件为网络QQ账户信息管理系统软件,是鉴于目前人们QQ的使用领域的增加,QQ信息呈爆炸性增长的前提下人们对自己的QQ信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于使用QQ人群的QQ信息的管理.
说明: 10001为程序运行端口,根据lsof -i:port查找已运行的程序,如果存在则kill该进程。 进入程序目录:cd /root/apps/project_name 执行 git pull (参考之前发表的博客,git免密码拉取代码) 运行 mvn spring-boot:run 具体参数可自行修改,也可以逐步打包,运行java -jar xx.jar等
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!!
软件变化请查看:更新日志 软件下载请转到:发布页面 或者到网盘下载(网盘内有MAC、windows版):https://www.lanzoui.com/b0bf2cfa/ 密码:glqw(若链接无法打开请百度:蓝奏云链接打不开) 使用常见问题请转至:常见问题
官方把这个教程放偏后的位置,导致我之前自己去学习 Cmake 和 Ninja 的相关知识,多做了一些重复工作。
VaultPasswordView是Windows 10/8/7系统的密码破解工具,你可以用它来解密当前正在运行的系统的Windows Vault数据,以及存储在外部硬盘驱动器上的Windows Va
将编写的代码存储到 project/main/hello.go 文件中,其中 .go 是 golang编程语言可识别的文件后缀
CodeIgniter支持代码模块化组合,以便于你构建可重用的代码。模块通常来说是以一个特定主题为中心而构建的,并可被认为是在大型的程序中的一系列微型程序。 我们支持框架中所有标准的文件类型,例如控制器,模型,视图,配置文件,辅助函数,语言文件等。模块可能包含着或多或少的你所需要的以上这些类型中。
领取专属 10元无门槛券
手把手带您无忧上云