上一次我们说到了文件的常规操作,打开,读,写,关闭这些,重点在于打开是以什么样的方式来打开,包括文件的权限,内容是否清空,打开不存在的文件等等情形。今天继续说一下文件IO操作。
----今天接着昨天的话题讲,在昨天的文章里面,我们讲到了文件共享有三种实现方式,其中一种实现方式就是我们今天要讲的dup和dup2函数来实现了;那么咋们也就不废话 了,直接直奔主题吧。
下面說一下在用戶空間調用open/close/dup跟驅動中的open和release的對應。
函数执行后,返回的新文件描述符与原有的旧文件描述符共用同一个文件表项,但是文件描述符标志将被清除,进程调用exec时文件描述符将不会被关闭。
由于很多用户的系统和程序都不同,因此TSINGSEE青犀视频研发团队往往需要根据用户的实际需求来对产品进行定制或者修改。有的客户需要 Arm 版本的 EasyDSS平台使用,因此我们也会在aarch64环境下编译EasyDSS。在编译过程中,出现报错 “undefined: syscall.Dup2”。
kali Linux (内外:192.168.5.139) Centos8 (腾讯云:123.6.44.67)
黑入服务器很少会是通过账号密码的方式进入,因为这很难破解密码和很多服务器都做了限制白名单。
因为Golang没有Linux的fork()系统调用, 所以实现守护进程要使用一些小技巧. Golang为*nix(unix/linux/FreeBSD...)系统提供了syscall.ForkExec()调用, 这个调用跟fork()调用不一样, syscall.ForkExec需要提供一个要执行的程序路径. syscall.ForkExec()原型如下:
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的shell反弹到我们的机器上,下面来介绍分析几种常用的方法。
在现代计算机系统中,X86和ARM64是两种常见的处理器架构。为了满足不同架构的需求,Docker镜像也需要支持双架构编包形式。本文将介绍Docker镜像双架构编包统一的实践
今天继续关于Go开发经验的分享,这次的主题是关于Go的交叉编译和条件编译,伴随着我对自己打不过、惹不起的壕同事小张还有运维们的碎碎念。
在 Linux 中,进程是我们非常熟悉的东东了,哪怕是只写过一天代码的人也都用过它。但是你确定它不是你最熟悉的陌生人?我们今天通过深度剖析进程的创建过程,帮助你提高对进程的理解深度。
在同一个进程中多次调用 open 函数打开同一个文件会得到多个不同的文件描述符(File Descriptor,简称FD)。每次调用 open 都会返回一个新的文件描述符,这些描述符可以独立地用于对文件的读取、写入等操作。
进程在内核态运行时需要自己的堆栈信息,linux内核为每个进程都提供了一个内核栈。对每个进程,Linux内核都把两个不同的数据结构紧凑的存放在一个单独为进程分配的内存区域中:
关于进程和线程,在 Linux 中是一对儿很核心的概念。但是进程和线程到底有啥联系,又有啥区别,很多人还都没有搞清楚。
在前文中学习了open函数,我们知道open函数的返回值就是文件描述符,本章将对文件描述符进行详细讲解。
一些嵌入式设备,一般都会留有调试串口,经由RS232/485标准与PC的COM口相连,将打印输出在PC上显示,并可以接收PC端的输入,如下图所示:
在我们渗透测试的过程中,最常用的就是基于tcp/udp协议反弹一个shell,也就是反向连接。
零停重启目标程序,比如一个网络服务程序,不用丢失和中断任何消息实现重新启动,正在处理的消息也不会中断和丢失,重启的方法是给目标程序的进程发SIGHUP信号。
值得注意的是,靶机貌似有个bug,当shell连接中断后,我们无法直接再次连接,只能重启靶机,再故技重施
该文介绍了Linux系统下文件描述符和I/O重定向的相关内容。首先介绍了文件描述符和I/O重定向的基本概念,然后通过示例程序讲解了如何使用文件描述符和I/O重定向来实现文件的复制、打开、关闭和重定向。最后介绍了如何使用fcntl函数来实现更复杂的文件操作。
对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制。在shell中,我们通常使用符合‘|’来表示管道,符号‘>’和‘<’表示重定向。那么管道和重定向的真实含义(定义)又是什么呢?
GitHub - liamg/traitor: :arrow_up: :fire: Automatic Linux privesc via exploitation of low-hanging fruit e.g. gtfobins, pwnkit, dirty pipe, +w docker.sock
强大的Metasploit框架也为我们提供了生成一句话反弹shell的工具,即msfvenom,绝对的实用。当我们不记得前面说的所有反弹shell的反弹语句时,只要我们有Metasploit,那么我们随时都可以使用 msfvenom -l 来查询生成我们所需要的各类命令
fd: pipe函数创建的两个文件描述符对应管道两端,分别为“读”端和“写端”(可记忆为读写),即fd[0]为管道的读端,fd[1]为管道的写端。
我们知道linux有许多自带的守护进程,比如syslogd、crond、sendmail等。那用户或开发者自己编写的程序为什么也需要成为守护进程呢?
在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。
通常在获得webshell之后,如果是linux的服务器,一般会返回一个shell来对linux服务器做进一步的渗透,如:溢出提权、信息收集等。下面就说说linux自带的程序来反弹shell的姿势。
NanoDump是一款功能强大的MiniDump转储文件提取工具,在该工具的帮助下,广大研究人员可以轻松转储LSASS进程中的MiniDump数据。
Linux 标准 I/O(Standard I/O)库提供了一组函数,用于进行高级别的文件输入和输出操作。它建立在底层文件 I/O 系统调用之上,为开发者提供了更方便、更高级别的文件处理方式。以下是一些常用的 Linux 标准 I/O 库函数:
nginx的源码是比muduo要复杂些哈,muduo跟我以前写过的服务端项目有很多共通之处,就相当于是剥离了业务代码的网络层框架,所以看起来也比较亲切。这个nginx就感觉稍微有点陌生哈。
看了一下组件,,然后访问之后发现是一个摄像头的后台登录界面,查了一下GoAhead是什么,发现这是一个嵌入式Web服务器,并且版本还比较老,这个组件存在着多个版本的任意命令执行漏洞,那么我们就利用起来。
孤儿/僵尸/守护进程 孤儿进程和僵尸进程以及守护进程都是对调用fork()函数后子进程的描述。 孤儿进程 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。 我们可以通过kill掉父进程来模仿一个孤儿进程。 ---- 僵尸进程 一个进程使用fork创建子进程,如果子进程退出,而父进程没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程(这个子进程
Daemon(精灵)进程,是Linux中的后台服务进程,生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。类似于Windows下的服务程序。通常的 linux 程序在我们通过终端运行挂起后,再关闭终端,这些程序的运行进程也会随着终端一起关闭,这是因为他们属于同一会话。如果不想程序随着终端关闭而关闭,那么就要让程序脱离终端的会话组,那么就需要使用到setsid()函数了。一个正确的守护进程编写过程如下:
那么我们如果在实际环境中,如果想要对环境进行进一步的操作,那么rbash肯定是不符合要求的,所以才有了“绕过”这一行为
还有一个daemon的模块python-daemon,基于PEP 3143,直接封装好了守护进程需要实现的方法,推荐使用!安装命令:
几年前,我写过两篇关于用C#开发Linux守护进程的技术文章,分别是《.NET跨平台实践:用C#开发Linux守护进程》和《.NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇》。
在上一期虚拟文件系统中讲到了每个进程在打开后,都会默认打开3个文件,如下:
文件系统是操作系统的重要组成部分,是对文件的组织管理,本文就主要讲述磁盘上的文件是如何组织的和文件操作两个部分,废话不多说直接来看。
Only port 80 is open, it may be an easy box. And the truth is that it is really an easy box.
-----今天是最后一篇文章关于linux系统下文件IO操作了,从明天起开始写文件属性的文章了,欢迎大家来学习,一起进步。(同时也欢迎大家批评指出错误,我会及时纠正过来的)。
2.在新守护进程的父进程中,调用exit(),为了守护进程的爷爷进程确认父进程结束
几周前,我发现并报告了 CVE-2022-25636 - Linux 内核中的一个越界写入堆。该漏洞可用于实现内核代码执行(通过 ROP),提供完整的本地权限提升、容器逃逸,无论您想要什么。
strace -p 28182 -s4086 -T -f [-e trace=network/process/signal]
LAZYPARIAH是一款功能强大的命令行工具,该工具依赖的组件并不多,但是却可以帮助广大研究人员在渗透测试过程中利用命令行接口实时生成反向Shell Payload。
python在linux下的反弹shell代码我相信很多人都见过:
可以看出其他用户是没有高权限的,写入执行权限都没有,就不能在当前目录下写马;经尝试,bash反弹shell未能成功。
领取专属 10元无门槛券
手把手带您无忧上云