2012年,我写了一篇介绍Windows系统下Ring3层API的hook方案——《一种注册表沙箱的思路、实现——Hook Nt函数》,其在底层使用了微软的Detours库。5年后,我又遇到这么一个问题,但是系统变成了Linux。我最开始的想法是找一个Linux下的Detours库,于是找到了subhook。其原理是:修改被Hook函数起始地址处的汇编代码,让执行流程跳到我们定义的函数中。但是在实际使用中,我发现通过该库调用原始函数有错误——地址违例,导致进程崩溃,所以最终放弃了subhook的方案。(转载请指明出于breaksoftware的csdn博客)
python读取系统信息的一些方法,在此记录一下,方便尔后查询。 platform模块 root@cubieboard:~# python Python 2.7.3 (default, Mar 14 2014, 17:55:54) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import platform >>> platform.version() '
SWIG 的全称是 Simplified Wrapper and Interface Generator,它是一个开发工具,在Android Native开发中可被用来自动生成需要的 JNI 封装器代码。
判断是linux系统,并且uid为0,allowRoot是通过命令行传参传进来的,通过flag包解析出来的,可以使用go run node.go -h看到这些参数
在这篇文章中,让我们看看如何使用 GOT 覆盖和解引用技巧。来绕过共享库地址随机化。我们在第一部分中提到过,即使可执行文件没有所需的 PLT 桩代码,攻击者也可以使用 GOT 覆盖和解引用技巧来绕过 ASLR。
*本文原创作者:yangyangwithgnu,本文属FreeBuf原创奖励计划,未经许可禁止转载
LD_PRELOAD 是 Linux 系统中的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。如果你是个 Web 狗,你肯定知道 LD_PRELOAD,并且网上关于 LD_PRELOAD 的文章基本都是绕过 disable_functions,都快被写烂了。
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH,Exchange,LLMNR投毒,NTLM-Relay,Kerberos_TGS,GPO&DACL,域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
setuid()用来重新设置执行目前进程的用户识别码. 不过, 要让此函数有作用, 其有效的用户识别码必须为0(root). 在Linux 下, 当root 使用setuid()来变换成其他用户识别码时, root 权限会被抛弃, 完全转换成该用户身份, 也就是说, 该进程往后将不再具有可setuid()的权利, 如果只是向暂时抛弃root 权限, 稍后想重新取回权限, 则必须使用seteuid().
注:本文上半部和等保联系不是很密切,还是说一了些linux里细节一些的东西,所以有可能会浪费你生命中的好几分钟,同时我使用的是centos6。
关于Linux Multipath配置,网上还是很多的,自己再来梳理一下,当前环境为RedHat6,HP P2000存储
微信扫码登录是很常见的技术,曾经在一次面试当中,面试官就曾问过微信扫码登录的实现思路,这次,以微信读书网页版扫码登录为例子,聊聊我对它技术实现思路一些思考。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <linux/if.h> typedef unsigned short u16; typedef unsigned int u32; typedef unsig
判断 OpenVZ/Xen PV/UML 是最容易的,直接检查 /proc 下的相关目录和文件就可以知道,比如 OpenVZ VPS 上会有 /proc/vz 这个文件;Xen PV 虚拟机上会有 /proc/xen/ 这个目录,并且目录下有一些东西;UML 上打印 /proc/cpuinfo 会找到 UML 标志。写了一个简单的 Python 脚本来检测:
在大多数CTF比赛中,出题者会设置 disable_functions这种环境变量。因此,在某些情况下,我已经在远程服务器上获得了一个webshell,但我却因为 disable_functions而无法使用一些特定的系统函数。因此,我在本文中将展示突破这种难题的方法。首先,我将在我的docker镜像 php:7.1.19-apache上展示我绕过 disable_functions的方法。
本文出自:[url]http://www.nsfocus.com[/url] 维护:小四 6. /etc/system可调资源限制 6.1 Solaris下如何限制每个用户可拥有的最大进程数 6.2 如何配置系统使之支持更多的伪终端 6.3 如何增加每个进程可打开文件句柄数 6.4 6.5 做了setuid()这类调用的程序如何产生core dump 6.6 消息队列调整 -------------------------------------------------------------------------- 6. /etc/system可调资源限制 6.1 Solaris下如何限制每个用户可拥有的最大进程数 A: Casper Dik 在/etc/system设置 set maxuprc = Q: maxusers参数究竟影响了什么 A: Casper Dik 下面以/etc/system语法格式举例说明: * set maxusers = <以MB为单位计的可用物理内存数量> * 系统所允许的最大进程数,通常最多30000 set max_nprocs = 10 + 16 * maxusers * 每个用户可以拥有的最大进程数(为超级用户保留5个) set maxuprc = max_nprocs - 5; # sysdef | sed -n '/System Configuration/,$p' 6.2 如何配置系统使之支持更多的伪终端 A: Argoth 不要试图通过'/usr/bin/adb -k'到达目的。 a. 如果Solaris版本小于7,修改/etc/system,增加如下行 set pt_cnt= 执行/usr/sbin/reboot -- -r,或者Stop-A,执行boot -r b. 对于Solaris 8,支持的伪终端数目根据需要动态改变,系统依然有一个内部限制, 但是这个值非常大。如果"pt_cnt"变量小于这个内部限制,将被忽略。一般情况 下,不再需要指定"pt_cnt"变量。但还是有某些罕见的情形,需要设置"pt_cnt" 变量大于内部限制。 6.3 如何增加每个进程可打开文件句柄数 A: Casper Dik 从Solaris 2.4开始,可以通过修改/etc/system实现 * set hard limit on file descriptors set rlim_fd_max = 4096 * set soft limit on file descriptors set rlim_fd_cur = 1024 软限制超过256时,某些应用程序会出问题,尤其BCP程序。软限制超过1024时,那些 使用select()的应用程序可能会出问题。Solaris 7之前,select()使用的文件句柄 数不能超过1024。Solaris 2.6的RPC代码被重写过了,使用poll()代替select(),可 以使用超过1024的文件句柄。Solaris 2.6之前,如果软限制超过1024,所有RPC服务 很可能崩溃。 Solaris 7下select()可以使用最多达65536的文件句柄,64-bit应用程序缺省情况如 此。如果是32-bit应用程序,需要指定给FD_SETSIZE一个更大的值,重新编译。 如果程序使用标准输入/输出(stdio),或者调用那些使用stdio的库函数,当打开的 文件超过256时,程序可能会出问题,这个限制是stdio的限制。当程序需要大量文件 句柄时,应该想办法保留一些小数字的文件句柄,让stdio使用它们。 Solaris 7下64-bit应用程序不再受这个stdio限制的影响。如果你的确需要超过256 个FILE *,而又不能使用Solaris 7,或者需要运行32-bit代码,考虑使用来自AT&T 的SFIO([url]http://www.research.att.com/sw/tools/sfio/[/url])。 A: [email]qaz@smth.org[/email] 检查当前设置 # ulimit -H -n 1024 # ulimit -S -n 64 # 对于Solaris,建议修改/etc/system后重启 * set hard limit on file descriptors set rlim_fd_max=0x8000 * set soft limit on file descriptors set rlim_fd_cur=0x8000 然后 ulimit -S -n 8192 对于Linux echo 65536 > /proc/sys/fs/file-max 然后 ulimit -S -n 8192 对于FreeBSD 编辑/etc
Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法。这种隔离机制和 chroot 很类似,chroot 是把某个目录修改为根目录,从而无法访问外部的内容。Linux Namesapce 在此基础之上,提供了对 UTS、IPC、Mount、PID、Network、User 等的隔离机制,如下所示。
本文主要介绍权限维持,介绍如何在有一定权限的情况下,留下后门。当然各类后门太多太多了,这里主要列举一些常用的、方便的。
0x00. 引言 这是一个使用到了一点小伎俩的后门,如果渗透进入一个系统并拿到root权限的shell,对方防火墙没有限制,则可以通过本文的方法运行一个root可登陆且不需要权限的ssh后门。 这可以
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在Linux的概念与体系,多次提及进程的重要性。Python的os包中有查询和修改进程信息的函数。学习Python的这些工具也有助于理解Linux体系。 进程信息 os包中相关函数如下: uname() 返回操作系统相关信息。类似于Linux上的uname命令。 umask() 设置该进程创建文件时的权限mask。类似于Linux上的umask命令,见Linux文件管理背景知识 get
原文出处:http://blog.csdn.net/chhaj5236/article/details/6422425
控制集成系统需要了解系统的各项硬件信息,之前我们设计的时候,习惯使用c函数来搞,后来可能发现程序的移植性收到了一些影响,比如unix内核的一些c函数在linux下面是没有的:
在开始介绍go sys call 库之前先介绍下Linux syscall的几个概念
下载地址:https://github.com/AonCyberLabs/Windows-Exploit-Suggester
所以,我觉得还是有必要了解一下centos系统大概有什么方法可以实现对用户的权限控制,不至于测评的时候完全不知道怎么测。
import os os.mkdir(name) #创建目录 os.path.exists(name) #判断文件或者目录是否存在 os.path.isdir(name) #判断指定对象是否为目录。是True,否则False。 os.mknod(name) #创建一个文件 os.path.isfile(name) #判断文件是否存在,存在返回True,否则返回False
Mar 10 19:18:28 | /etc/multipath.conf does not exist, blacklisting all devices.
我们知道,UIWebView是有一个 keyboardDisplayRequiresUserAction属性的,默认为YES。如果设置为YES,用户必须明确的点击页面上的元素或者相关联的输入页面来显示键盘;如果设置为NO,一个元素的焦点事件导致输入视图的显示和自动关联这个元素。
Ignite是一个启动firecracker vm的引擎,它使用容器的方式承载了firecracker vm。目前项目处于停滞阶段,也比较可惜,通过阅读了解ignite的工作方式,学习到了很多,希望能借此维护该项目。
本文来源:https://www.cnblogs.com/backlion/p/10552137.html
h2engine引擎建群以后,有热心网友向我反馈,想尝试h2engine但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例。由于前一段时间工作实在忙碌,一直没有抽出时间好好写一下,后来抽空写了出来,自己从小白开发者的角度重新审视了一遍h2engine,自己也收获匪浅,也优化了部分h2engine的架构,使其更易使用。以前的例子都是c++加脚本的例子,这次写一个纯c++的例子。
由于不是socket连接,所以不是真实的实时在线用户,是对用户登录或者普通操作的时间进行标记时间戳,时间戳之后多少分钟内,都是算作在线的,限定时间之后就算作离线。
Java小玩意:模拟ATM 一、写在前面 本来是其他班的作业,原本是用来练习集合存储对象,正好最近学了JDBC,缺个小玩意练习,这不缺啥来啥吗,然后就写了这个小屎山😅 纯手写,欢迎指正。 二、功能介绍 注册&登录 存取款 查询 转账 修改信息 📷 三、基本逻辑 登录:获取输入的ID,到数据库中查询此ID的用户信息,查询成功则创建此用户对象,否则提示错误 注册:用户需要输入用户名,性别,登录密码等信息,然后自动生成ID,然后将用户信息存储到数据库中 存取款:用户输入需要存取的金额,在此对象对应的“余额”属性
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
众所周知,系统调用很昂贵。而针对CPU漏洞的软件缓解措施(如Meltdown)甚至使其更加昂贵。但它们到底有多贵呢?为了开始回答这个问题,我写了一个小型的微型测试,以测量系统调用的最低成本。意思是说,无论上下文切换是否发生,人们都必须支付系统调用的成本,即使在内核中的工作微不足道,即从用户模式切换到内核模式再返回的成本。
生产方将需要更新的数据放在一边,然后在一个redis的set里面添加一个key,这个key就是需要更新的数据的key。
按照处理方式的不同 可以分为操作类别 (操作用户 操作群组等) 消息类别 (一对一 一对多)
基于ActiveMQ的请求-应答模式,相当于通过消息队列,请求端注册了一个异步回调,在发送消息时指定回调消息的目的地和关联的id,这样应答端在收到请求消息时,可以在处理后,将处理结果的应答消息发送到回调的目的地中。
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了
该选项用于发送以太网数据包,要求Nmap在数据链路层发送报文,而不是在网络层发送报文。
多半是disable_functions惹的祸。查看phpinfo发现确实设置了disable_functions:
1983年,理查德·斯托曼(Richard Stallman)在MIT人工智能实验室(AI Lab)创立了GNU计划,目标是创建一个完全自由的Unix类操作系统。在这个计划中,斯托曼和其他志愿者开发了GNU工具链(GCC、GDB、GNU Make等),但操作系统内核一直没有完成。
默认的事务级别都在类,这个级别的,这就导致了,如果在循环中对数据进行处理的话,如果循环不结束,事务是不会提交的。
完成Socket协议接口的调试之后,下一步继续进行Socket接口的业务测试了。因为目前接到的需求是一个老师跟学生相互聊天的功能,所以必须通过两个用户的长连接进行测试,经过一些尝试和修改,基本脚本已经完成,分享如下,仅供参考。
工厂模式其实是创建的模式,何为创建模式,就是为了方便对象的创建。拿最简单的登录来说,咱们系统需要接入,掘金、微信、QQ等三个接口,我们可以创建不同Service,在里面登录。在controller中判断是哪一个登录类型,然后进行ifelse判断,又是一大堆的ifelse。现在我们写一下相关代码。
os.path.isdir(name) #判断指定对象是否为目录。是True,否则False。
本文对内核中断进行概括以及讲述中断的具体实现方法在内核是怎么做的,会结合内核源码中的一些 .s 文件和 .c 文件来具体分析一下内核在中断中的实现方式。
查看内核版本: uname -a more /etc/*release more /etc/redhat-release more /proc/version 查看CPU信息:grep "model name" /proc/cpuinfo more /proc/cpuinfo 查看CPU位数:getconf LONG_BIT ls 如果在root下ls有lib64 文件夹说明系统64 查看libc、gcc版本:ldd /sbin/mii-tool rpm -qa | grep glibc gcc –v 查看内存信息:more /proc/meminfo
虚拟机 KALI: 192.168.180.128 目标机器: 192.168.1.52
领取专属 10元无门槛券
手把手带您无忧上云