- 从零开始做题:逆向 ret2shellcode orw
网络安全我来了
服务器linux网络安全安全系统安全
1.题目信息BUUCTF在线评测下载orw时防病毒要关闭2.题目分析orw是open、read、write的简写。有时候binary会通过prctl、seccomp进行沙箱保护,并不能getshell。只能通过orw的方式拿到flag。fd=open(‘./flag’);#打开flag文件,得到fdread(fd,buf,0x30);#通过fd将flag的内容读到内存中write(1,buf,0x
- CTF-PWN-沙箱逃脱-【seccomp和prtcl-1】
Full Stack-LLK
CTF-PWN-沙箱逃脱redis数据库缓存PWN
文章目录啥是seccomp#ifndef#define#endif使用使用格式seccomp无参数条件禁用系统调用有参数条件禁用系统调用prctl实例seccomp_export_bpf啥是seccomp就是可以禁用掉某些系统调用,然后只能允许某些系统调用#ifndef#define#endif使用#ifndef#define#endif作用就是防止头文件被重复引用,其实“被重复引用”是指一个头文
- CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】
Full Stack-LLK
CTF-PWN-沙箱逃脱CTF-PWN
文章目录沙箱逃脱prtcl题HITCONCTF2017QualsImpeccableArtifactflag文件对应prctl函数检查源码思路exp沙箱逃脱prtcl题HITCONCTF2017QualsImpeccableArtifactflag文件此时的flag文件在本文件夹建一个即可此时的我设置的flag为对应prctl函数第一条是禁止特权第二条是按定义的BPF来建立沙箱检查保护全开查看沙箱
- prctl()说明
fivestar2009
服务器linux运维
prctl函数是Linux系统中支持的一个非常重要的函数,它给进程提供了一种在不重新启动进程的情况下,能够改变和调整进程自身行为的能力。prctl函数主要支持以下四种功能:1.置进程的标题:使用prctl函数可以方便地设置/修改进程的标题,以便于更好地检测和管理进程。2.置进程的状态:prctl函数可以设定进程的状态,以此控制进程线程的行为表现,这将有助于更加有效地利用系统资源,以及解决资源竞争问
- 利用prctl 函数给线程命名
九月丫
linux进程和线程专题c++linux
头文件:#include函数原型:externintprctl(int__option,...)作用:这个函数是为系统量身定做的,它的功能取决于第一个参数option;参数含义:option:功能选项arg2~arg5:可选功能参数返回值:根据不同功能返回值含义不同利用prctl函数给线程命名对于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。使用prctl函数,第一个参数
- Linux修改进程及线程名
Freboat
1.prctl(PR_SET_NAME,new_name);//可直接修改进程comm2.直接修改argv[0]可修改进程cmdline3.修改线程名:pthread_setname_np
- strace交叉编译后对特定文件的写流程进行监控和过滤
darkpush
unix编程嵌入式开发linuxstrace
交叉编译为了支持strace对pid进行解析,因系统默认支持的strace版本较低,需要使用较新的版本对strace进行交叉编译,这里使用了github上的https://github.com/strace/strace/releases发布的stracev5.19版本,2022-08-12发布。log中说明包含了对prctl调用的解析。从log来看strace5.14版本就已经引入了prctl解
- prctl函数设置线程别名
Erice_s
Linux系统编程c++后端
prctl函数用法NAMEprctl-operationsonaprocessSYNOPSIS#includeintprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5);DESCRIPTIONprctl()iscalledwithafirstargumentdescribingwha
- 安装python-prctl报错
郭小宇
安装pythonubuntulinux
Collectingpython-prctl时候报错ERROR:Commanderroredoutwithexitstatus1:command:/opt/conda/envs/vilbert-mt/bin/python-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'/tmp/pip-install-6axqqvn7/python-prctl/s
- linux c设置线程名字
panfei263031
#gdbc语言linux
今天咋给线程起个名字,哈哈,这个在gdb中调试的时候,将会非常有用。例如用ithreads命令查看所有的线程的的时候,或者用threadapplyallbt命令打印所有线程的调用栈时,能知道哪些信息对应哪个线程,还是很有必要的。给线程起名字,两种方法,分别用prctl和pthread_setname_np。详细使用方法参见:https://blog.csdn.net/zhizhengguan/ar
- Android Native 线程重命名方法
天天_盖世英雄
pthread_create是Unix系统下用于创建线程的函数,同样也适用于安卓平台。开发时我们可能会在native中启动较多的线程,为了方面管理调试可以采用线程重命名的方式。这里我使用的是prctl()函数,函数原型:intprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5)下面是
- linux编程 - 给线程起名字
落尘纷扰
Linux编程
为了能方便的区分一个进程中的每个线程,可以通过prctl()给每个线程取个名字。这样在会创建多个线程的程序执行过程中,就能知道一个pid或tid对应的是哪个线程,对调试程序有一定帮助。prctl是个系统调用,可以用来读取和更改一个线程的属性。其用户态接口定义如下:#includeintprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsigne
- 在python 解释器中学习linux系统函数调用
苏井桥
try:importdllibc=dl.open('/lib/libc.so.6')libc.call('prctl',15,'ubuntu-tweak',0,0,0)except:passfromctypesimport*libc=CDLL('libc.so.6')classuts_struct(Structure):_fields_=[('sysname',c_char_p),('nodena
- linu中使用prctl函数为线程指定名字
温暖的电波
我爱编程
一、前言有时候我们通过fork()、pthread_create()创建出来的新任务其名字和创建任务的parent是一样的,如果有需要,该如何修改这些新创建任务的名字呢?有办法,用proctl()函数来实现。这个函数可用来对任务进行控制,其具体情况如下所示:#includeintprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlo
- linux 编程--prctl()函数应用
tmxkwzy
intprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5)这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG:返回处理器信号;PR_SET_PDEATHSIG:arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进
- prctl()函数应用
国境之南Fantasy
Linux编程技巧
intprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5)这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG:返回处理器信号;PR_SET_PDEATHSIG:arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进
- 【pwn】SWPUCTF_2019_p1KkHeap
yudhui
pwn
libc-2.27.so下的一道tcache堆题。例行检查保护全开。分析程序,在进入菜单之前,有一个函数跟入查看。注意到这边用mmap函数在0x66660000映射了一块大小为0x1000的内存空间,权限是rwx。然后用prctl函数做了一个沙箱。我们查看以下禁用了什么调用。可见execve被禁用,于是system函数和onegadget都不可行。于是就只能自己将shellcode(orw)写到0
- linux 下设置线程名字
cjpx84
linux内核源码学习linux线程名称prctl
今天跟同事讨论一个问题,谈到pthread_create创建线程之后,线程的名字直接从父进程继承下来,但这个名字对我们后续定位分析问题没有直接的帮助,如果能够修改线程的名称,那定位分析问题就比较方便了。linux下的prctl库自kernel2.6.9后支持PR_SET_NAME选项,用于设置进程名字,linux的进程一般使用lwp,所以这个函数可以设置线程名字,api定义如下:#includei
- 用prctl给线程命名
Tyrion-Lannister
对于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。可以用prctl给进程内其它线程命名的接口,测试代码如下:#include#include#include#includevoid*pFunc(void*arg){charname[32];prctl(PR_SET_NAME,(unsignedlong)"xx");prctl(PR_GET_NAME,(unsignedlo
- prctl()设定线程名
背姑娘的锅
linux环境开发
基本介绍prctl()原型为intprctl(int__option,…);用于控制主进程或者子进程的属性;本文主要介绍使用PR_SET_NAME这个flag设定线程的名字,这个在平常调试中很有帮助,比如想知道哪个线程的CPU占用高;需要包含的头文件为sys/prctl.h;用法:prctl(PR_SET_NAME,(char*)name);其中设定的名字字符串长度不能超过15bytes;示例#i
- prctl()函数应用
thinkinwm
C/C++Linux
intprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5)这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG:返回处理器信号;PR_SET_PDEATHSIG:arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进
- L002Linux和androidNDK之修改进程名
夏大王2019
android中不可行的方法prctl#includeintprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5);这个方法不知道为什么竟然不行,返回值是0.待查直接修改argv[0]测试代码:intmain(intargc,char**argv){strcpy(*argv,"worl
- 父进程异常退出时, 杀死所以子进程
明风的博客
#include#include#include#include#include#includevoidmy_system(constchar*cmd){pid_tpid;pid=fork();if(pid==0){prctl(PR_SET_PDEATHSIG,SIGHUP);execl("/bin/bash","/bin/bash","-c",cmd,NULL);exit(0);}elseif(
- Linux下 prctl 进程控制
BluceTao
linux&Unix
Linux下prctl进程控制Linux下可通过prctl进行进程各种控制#includeintprctl(intoption,unsignedlongarg2,unsignedlongarg3,unsignedlongarg4,unsignedlongarg5);option:第一个参数是int,描述函数操作类型。比如:PR_SET_NAME这个操作在(linux2.6.9中引入),设置线程的名
- 定位段错误所在位置
jmdvirus
概述关于产生段错误之后很难定位,主要是在多线程中,不知道在哪个位置,目前发生一个方法可以发现段错误所在线程,记录如下准备线程创建需要使用prctl函数来指明线程名字,此名字将会在段错误时显示出来没有了,好像原理/proc/xxx/task/yyy/statusxxx进程号,yyy线程号,task线程目录,status状态文件status文件下有SigBlk标志,当然也有其它的,但这个作用于段错误说
- prctl()函数给线程命名
dawudayudaxue
LinuxC++
今天看代码看到一个prctl()函数函数,百度了一下才知道是给线程命名(当然还有其他的功能)。下面简述函数的用法:1.包含的头文件为sys/prctl.h;2.函数用法:int用法:prctl(PR_SET_NAME,(char*)name);3.PR_SET_NAME表示给线程命名,第二个参数是进程名字符串,长度至多16字节下面看使用示例:voidCxxxxxxx::ThreadCycleFun
- linux下如何定位CPU过高问题
小怪兽狂殴奥特曼
linux下如何定位CPU过高问题1先查看进程pidpsaux|grepxxx2查看线程占用率情况top-H-ppidlinux中的线程是一个轻量级进程,每个线程都有自己的pid。执行这个命令后可以看出占用率最高的线程的PID。单看进程pid我们很难知道我们代码中的哪个线程出了问题,我们可以利用prctl(PR_SET_NAME,"xxx")给线程起名。至此我们通过线程名,大概可以猜到问题出现在哪
- 查看linux线程的CPU占用率
caspiansea
Linux
测试代码如下:#include#includevoid*thread_routine(void*arg){prctl(PR_SET_NAME,"child_thread");inti=0;while(1){i++;i=i*12345;}return(void*)0;}intmain(void){pthread_thandle;pthread_create(&handle,NULL,thread_r
- linux c用prctl给线程命名
yunshouhu
linux_c
#include#include#includevoid*tmain(void*arg){printf("tmain\n");charname[32];prctl(PR_SET_NAME,(unsignedlong)"thread_name");prctl(PR_GET_NAME,(unsignedlong)name);printf("%s\n",name);while(1)sleep(1);}/
- linux编程 - 给线程起名字
jasonchen_gbd
pthreadPRCTL线程名
为了能方便的区分一个进程中的每个线程,可以通过prctl()给每个线程取个名字。这样在会创建多个线程的程序执行过程中,就能知道一个pid或tid对应的是哪个线程,对调试程序有一定帮助。prctl是个系统调用,可以用来读取和更改一个线程的属性。其用户态接口定义如下:#include
intprctl(intoption,unsignedlongarg2,unsignedlongarg3,
unsi
- 矩阵求逆(JAVA)初等行变换
qiuwanchi
矩阵求逆(JAVA)
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(初等行变换)
* @author 邱万迟
*
- JDK timer
antlove
javajdkschedulecodetimer
1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务
2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务
3.java.util.Timer.schedule(TimerTask task, long delay,longperiod
- JVM调优总结 -Xms -Xmx -Xmn -Xss
coder_xpf
jvm应用服务器
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx
- JDBC连接数据库
Array_06
jdbc
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
//完
- Unsupported major.minor version 51.0(jdk版本错误)
oloz
java
java.lang.UnsupportedClassVersionError: cn/support/cache/CacheType : Unsupported major.minor version 51.0 (unable to load class cn.support.cache.CacheType)
at org.apache.catalina.loader.WebappClassL
- 用多个线程处理1个List集合
362217990
多线程threadlist集合
昨天发了一个提问,启动5个线程将一个List中的内容,然后将5个线程的内容拼接起来,由于时间比较急迫,自己就写了一个Demo,希望对菜鸟有参考意义。。
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public c
- JSP简单访问数据库
香水浓
sqlmysqljsp
学习使用javaBean,代码很烂,仅为留个脚印
public class DBHelper {
private String driverName;
private String url;
private String user;
private String password;
private Connection connection;
privat
- Flex4中使用组件添加柱状图、饼状图等图表
AdyZhang
Flex
1.添加一个最简单的柱状图
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<?xml version=
"1.0"&n
- Android 5.0 - ProgressBar 进度条无法展示到按钮的前面
aijuans
android
在低于SDK < 21 的版本中,ProgressBar 可以展示到按钮前面,并且为之在按钮的中间,但是切换到android 5.0后进度条ProgressBar 展示顺序变化了,按钮再前面,ProgressBar 在后面了我的xml配置文件如下:
[html]
view plain
copy
<RelativeLa
- 查询汇总的sql
baalwolf
sql
select list.listname, list.createtime,listcount from dream_list as list , (select listid,count(listid) as listcount from dream_list_user group by listid order by count(
- Linux du命令和df命令区别
BigBird2012
linux
1,两者区别
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
- AngularJS中的$apply,用还是不用?
bijian1013
JavaScriptAngularJS$apply
在AngularJS开发中,何时应该调用$scope.$apply(),何时不应该调用。下面我们透彻地解释这个问题。
但是首先,让我们把$apply转换成一种简化的形式。
scope.$apply就像一个懒惰的工人。它需要按照命
- [Zookeeper学习笔记十]Zookeeper源代码分析之ClientCnxn数据序列化和反序列化
bit1129
zookeeper
ClientCnxn是Zookeeper客户端和Zookeeper服务器端进行通信和事件通知处理的主要类,它内部包含两个类,1. SendThread 2. EventThread, SendThread负责客户端和服务器端的数据通信,也包括事件信息的传输,EventThread主要在客户端回调注册的Watchers进行通知处理
ClientCnxn构造方法
&
- 【Java命令一】jmap
bit1129
Java命令
jmap命令的用法:
[hadoop@hadoop sbin]$ jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a
- Apache 服务器安全防护及实战
ronin47
此文转自IBM.
Apache 服务简介
Web 服务器也称为 WWW 服务器或 HTTP 服务器 (HTTP Server),它是 Internet 上最常见也是使用最频繁的服务器之一,Web 服务器能够为用户提供网页浏览、论坛访问等等服务。
由于用户在通过 Web 浏览器访问信息资源的过程中,无须再关心一些技术性的细节,而且界面非常友好,因而 Web 在 Internet 上一推出就得到
- unity 3d实例化位置出现布置?
brotherlamp
unity教程unityunity资料unity视频unity自学
问:unity 3d实例化位置出现布置?
答:实例化的同时就可以指定被实例化的物体的位置,即 position
Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object
这样你不需要再用Transform.Position了,
如果你省略了第二个参数(
- 《重构,改善现有代码的设计》第八章 Duplicate Observed Data
bylijinnan
java重构
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusE
- struts2更改struts.xml配置目录
chiangfai
struts.xml
struts2默认是读取classes目录下的配置文件,要更改配置文件目录,比如放在WEB-INF下,路径应该写成../struts.xml(非/WEB-INF/struts.xml)
web.xml文件修改如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class&g
- redis做缓存时的一点优化
chenchao051
redishadooppipeline
最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。
首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redi
- mysql导出数据不输出标题行
daizj
mysql数据导出去掉第一行去掉标题
当想使用数据库中的某些数据,想将其导入到文件中,而想去掉第一行的标题是可以加上-N参数
如通过下面命令导出数据:
mysql -uuserName -ppasswd -hhost -Pport -Ddatabase -e " select * from tableName" > exportResult.txt
结果为:
studentid
- phpexcel导出excel表简单入门示例
dcj3sjt126com
PHPExcelphpexcel
先下载PHPEXCEL类文件,放在class目录下面,然后新建一个index.php文件,内容如下
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
if (PHP_SAPI == 'cli')
die('
- 爱情格言
dcj3sjt126com
格言
1) I love you not because of who you are, but because of who I am when I am with you. 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉。 2) No man or woman is worth your tears, and the one who is, won‘t
- 转 Activity 详解——Activity文档翻译
e200702084
androidUIsqlite配置管理网络应用
activity 展现在用户面前的经常是全屏窗口,你也可以将 activity 作为浮动窗口来使用(使用设置了 windowIsFloating 的主题),或者嵌入到其他的 activity (使用 ActivityGroup )中。 当用户离开 activity 时你可以在 onPause() 进行相应的操作 。更重要的是,用户做的任何改变都应该在该点上提交 ( 经常提交到 ContentPro
- win7安装MongoDB服务
geeksun
mongodb
1. 下载MongoDB的windows版本:mongodb-win32-x86_64-2008plus-ssl-3.0.4.zip,Linux版本也在这里下载,下载地址: http://www.mongodb.org/downloads
2. 解压MongoDB在D:\server\mongodb, 在D:\server\mongodb下创建d
- Javascript魔法方法:__defineGetter__,__defineSetter__
hongtoushizi
js
转载自: http://www.blackglory.me/javascript-magic-method-definegetter-definesetter/
在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
- 错误的日期格式可能导致走nginx proxy cache时不能进行304响应
jinnianshilongnian
cache
昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头: Content-Type:text/html; charset=gb2312 Date:Mon, 05 Jan 2015 01:58:05 GMT Expires:Mon , 05 Jan 15 02:03:00 GMT Last-Modified:Mon, 05
- 数据源架构模式之行数据入口
home198979
PHP架构行数据入口
注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。
一、概念
行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。
二、简单实现行数据入口
为了方便理解,还是先简单实现:
<?php
/**
* 行数据入口类
*/
class OrderGateway {
/*定义元数
- Linux各个目录的作用及内容
pda158
linux脚本
1)根目录“/” 根目录位于目录结构的最顶层,用斜线(/)表示,类似于
Windows
操作系统的“C:\“,包含Fedora操作系统中所有的目录和文件。 2)/bin /bin 目录又称为二进制目录,包含了那些供系统管理员和普通用户使用的重要
linux命令的二进制映像。该目录存放的内容包括各种可执行文件,还有某些可执行文件的符号连接。常用的命令有:cp、d
- ubuntu12.04上编译openjdk7
ol_beta
HotSpotjvmjdkOpenJDK
获取源码
从openjdk代码仓库获取(比较慢)
安装mercurial Mercurial是一个版本管理工具。 sudo apt-get install mercurial
将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个: [extensions] forest=/home/lichengwu/hgforest-crew/forest.py fe
- 将数据库字段转换成设计文档所需的字段
vipbooks
设计模式工作正则表达式
哈哈,出差这么久终于回来了,回家的感觉真好!
PowerDesigner的物理数据库一出来,设计文档中要改的字段就多得不计其数,如果要把PowerDesigner中的字段一个个Copy到设计文档中,那将会是一件非常痛苦的事情。