offset函数

bugku 变量

空扰寡人 提交于 2020-02-27 06:53:34
<?php error_reporting ( 0 ); include "flag1.php" ; highlight_file ( __file__ ); if(isset( $_GET [ 'args' ])){ $args = $_GET [ 'args' ]; if(! preg_match ( "/^\w+$/" , $args )){ die( "args error!" ); } eval( "var_dump($ $args );" ); } ?> 这是这道题目,不说了,先查函数功能。破局点就在函数的漏洞中。 error——reporting(0) 参数是0禁止报错。 highlight_file(_file_): 语法 highlight_file(filename,return) 参数 描述 filename 必需。要进行高亮处理的 PHP 文件的路径。 return 可选。如果设置 true,则本函数返回高亮处理的代码。 说明 本函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。 许多服务器被配置为对带有 phps 后缀的文件进行自动高亮处理。例如,在查看 example.phps 时,将显示该文件被语法高亮显示的源代码。要启用该功能,请把下面这一行添加到 httpd.conf : AddType

字符设备驱动(三)中断框架

那年仲夏 提交于 2020-01-27 07:53:57
目录 字符设备驱动(三)中断框架 引入 汇编处理 拷贝向量表 向量表宏解析 跳转函数 C函数处理 asm_do_IRQ __set_irq_handler s3c24xx_init_irq handle_edge_irq handle_IRQ_event desc->action 小结 流程 设置 irq_desc 数组 关键结构成员 完整框架图 流程一览 设置向量表 设置全局中断数组 设置用户action动作 title: 字符设备驱动(三)中断框架 tags: linux date: 2018-11-22 18:58:22 toc: true --- 字符设备驱动(三)中断框架 引入 裸机中断流程 外部触发 CPU 发生中断, 强制的跳到异常向量处 跳转到具体函数 保存被中断处的现场(各种寄存器的值)。 处理具体任务 恢复被中断的现场 LINUX流程 ARM 架构的 CPU 的异常向量基址可以是 0x0000 0000 ,也可以是 0xffff0000 ,这个地址并不代表实际的内存,是虚拟地址.当建立了虚拟地址与物理地址间的映射后,得将那些异常向量,即相当于把那些跳转指令复制拷贝到这个 0xffff0000 这个地址处去。 汇编处理 在 trap_init 中实现( start_kernel 中调用) // arch/arm/kernel/traps.c void __init

Linux System Calls Hooking Method Summary

坚强是说给别人听的谎言 提交于 2020-01-19 02:57:33
1. 相关学习资料 http://xiaonieblog.com/?post=121 http://hbprotoss.github.io/posts/li-yong-ld_preloadjin-xing-hook.html http://www.catonmat.net/blog/simple-ld-preload-tutorial/ http://os.51cto.com/art/201004/195510.htm http://sebug.net/paper/pst_WebZine/pst_WebZine_0x03/html/%5BPSTZine%200x03%5D%5B0x03%5D%5B%E9%AB%98%E7%BA%A7Linux%20Kernel%20Inline%20Hook%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%E4%B8%8E%E5%AE%9E%E7%8E%B0%5D.html http://blog.chinaunix.net/uid-26310563-id-3175021.html http://laokaddk.blog.51cto.com/368606/d-26/p-2 http://m.blog.csdn.net/blog/panfengyun12345/19480567 https://www.kernel.org

关于Mach-O类型文件那点事

白昼怎懂夜的黑 提交于 2020-01-12 22:14:12
Mach-O文件简介 Mach-O是一种文件格式,是Mach Object文件格式的缩写。 它通常应用于可执行文件,目标代码,动态库,内核转储等中。 Mach-O作为大部分基于Mach核心的操作系统所使用。 如:NeXTSTEP,Darwin和Mac OS X等系统使用这种格式作为其原生可执行文件,库和目标代码的格式。 在NeXTSTEP和Mac OS X中,可以将多个Mach-O文件组合进一个多重架构二进制文件中,以用一个单独的二进制文件支持多种架构的指令集。这种称为胖二进制文件(即:Fat binary文件)。 Mach-O文件类型众多,常见的一些Mach-O文件类型如下: MH_OBJECT 目标文件,平时.o结尾的文件 MH_EXECUTE 可执行文件,我们平时编译后的包中的执行文件 MH_DYLIB 一些动态库,该文件夹下很多/usr/lib/xxx.dylib MH_DSYM 符号文件,编译成功后XXX.app.dSYM Mach-O文件结构布局 Mach-O主要有三部分组成: Header 部分主要描述当前Mach-O文件什么架构,是否Fat二进制文件,CUP类型等等; Load commands 部分主要描述: 1.Mach-O文件中在虚拟内存中空间是如何分配的,从哪个内存地址开始到哪个内存地址结束。 2.不同段在Mach-O文件中的位置,大小分布。 Data

CSS3 3D转换效果

无人久伴 提交于 2020-01-12 11:40:40
CSS3 3D 转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似。CSS3中的3D变换主要包括以下几种功能函数: 3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数; 3D旋转:CSS3中的3D旋转主要包括rotateX()、rotateY()、rotateZ()和rotate3d()四个功能函数; 3D缩放:CSS3中的3D缩放主要包括scaleZ()和scale3d()两个功能函数; 3D矩阵:CSS3中3D变形中和2D变形一样也有一个3D矩阵功能函数matrix3d()。 1.3D位移 在CSS3中3D位移主要包括两种函数translateZ()和translate3d()。translate3d()函数使一个元素在三维空间移动。这种变形的特点是,使用三维向量的坐标定义元素在每个方向移动多少。 随着px的增加,直观效果上: X:从左向右移动 Y:从上向下移动 Z:以方框中心为原点,变大 从上图的效果可以看出,当z轴值越大时,元素也离观看者更近,从视觉上元素就变得更大;反之其值越小时,元素也离观看者更远,从视觉上元素就变得更小。 例子: height: 300px; float: left; margin: 15px; position: relative;

IP分片笔记

一世执手 提交于 2019-12-22 00:01:30
1。ip分片的结构体组织形式 先记录以下特殊的字段: (1)skb_buff的cb字段 char cb[48],是一个自定义字段,在协议各层处理时,可以存储各协议的私有数据,就是随便自己定义,在ip层分片时存储的是struct inet_skb_parm *,该结构体嵌套两个数据:ip选项 struct ip_options opt; 和 标识字段flags。 (2)skb_buff结构体末尾存储的是分片链表,即该结构体的末尾连续的内存,存储了包含分片数据信息的结构体struct skb_shared_info的指针。 分片信息存储区分: 快速分片:此时,分片信息存储在skb_buff字段的skb_shared_info 由skb_buff组成的frag_list链表中,链表上每个skb_buff是一个分片。 慢速分片:此时,分片信息存储在skb_buff字段的data字段和skb_shared_info 的字段skb_frag_struct frags[MAX_SKB_FRAGS]的page字段中, ip分片分两种情况即快速分片和慢分片: 快速分片是指分片数据已经在L4层分片成功,这些分片使用存储在结构体skb_shared_info中的sk_buff类型的链,变量frag_list中,由于是做好分片,所以在分片函数里只需要为每个分片增加ip头即可,循环对分片进行增加ip头

转: qemu-kvm内存管理

心已入冬 提交于 2019-12-16 20:06:22
记得很早之前分析过KVM内部内存虚拟化的原理,仅仅知道KVM管理一个个slot并以此为基础转换GPA到HVA,却忽略了qemu端最初内存的申请,而今有时间借助于qemu源码分析下qemu在最初是如何申请并管理虚拟机内存的,坦白讲,还真挺复杂的。 一、概述 qemu-kvm 模型下的虚拟化引擎,内存虚拟化部分要说简单也挺简单,在虚拟机启动时,有qemu在qemu进程地址空间申请内存,即内存的申请是在用户空间完成的。通过kvm提供的API,把地址信息注册到KVM中,这样KVM中维护有虚拟机相关的slot,这些slot构成了一个完成的虚拟机物理地址空间。slot中记录了其对应的HVA,页面数、起始GPA等,利用它可以把一个GPA转化成HVA,想到这一点自然和硬件虚拟化下的地址转换机制EPT联系起来,不错,这正是KVM维护EPT的技术核心。整个内存虚拟化可以分为两部分:qemu部分和kvm部分。qemu完成内存的申请,kvm实现内存的管理。看起来简单,但是内部实现机制也并非那么简单。本文重点介绍qemu部分。 二、涉及数据结构 qemu中内存管理的数据结构主要涉及:MemoryRegion、AddressSpace、FlatView、FlatRange、MemoryRegionSection、RAMList、RAMBlock、KVMSlot、kvm_userspace_memory

php 操作数组 (合并,拆分,追加,查找,删除等)

强颜欢笑 提交于 2019-12-09 15:22:55
1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: Php代码 收藏代码 array array_merge (array array1 array2…,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。 Php代码 收藏代码 <?php $fruits = array("apple","banana","pear"); $numbered = array("1","2","3"); $cards = array_merge($fruits, $numbered); print_r($cards); // output // Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 ) ?> 2. 追加数组 array_merge_recursive()函数与array_merge()相同

1.《SQLSERVER2012之T-SQL教程》T-SQL单表查询(一)

℡╲_俬逩灬. 提交于 2019-12-04 23:19:56
表结构与数据: https://github.com/XuePeng87/TSQLV4 SELECT语句的元素 SELECT语句的用途的查询表,通过一些逻辑操作来返回一个结果。例如: SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders FROM Sales.Orders WHERE custid = 71 GROUP BY empid, YEAR(orderdate) HAVING COUNT(*) > 1 ORDER BY empid, orderyear; 此查询的意义是: 筛选客户71名下的订单,按雇员和订单年度进行分组,并且仅帅选大于1个订单的“雇员和订单”组。对于保留的分组,此查询提供了雇员ID、订单年度和订单数量,并按照雇员ID和订单年度进行排序。 其SQL语句的逻辑顺序为: FORM WHERE GROUP BY HAVING SELECT ORDER BY 为了更易于阅读,下面的各子句的功能: 从Sales.Orders表查询行; 仅筛选客户ID等于71的订单; 按雇员ID和订单年度对订单进行分组; 筋筛选出大于1个订单的组; 返回每组的雇员ID、订单年度和订单数量; 按雇员ID和订单排序输出行; FORM子句 FROM子句是罗计划处理的第一个查询子句,此子句制定要查询的表名。 FROM

06文件操作

匿名 (未验证) 提交于 2019-12-02 23:56:01
文件操作 文件操作函数在内容中使用的 ZwXXXX 系列,下面是函数一览表 函数名 功能 ZwCreateFile 打开文件 ZwReadFile 读取文件内容 ZwWriteFile 将数据写入文件 ZwQueryInformationFile 查询文件信息 ZwDeleteFile 删除文件 ZwClose 关闭文件 打开/创建文件 在内核中打开文件比较繁琐, 该函数使用了比较多的API: 要打开的文件路径必须设置在 OBJECT_ATTRIBUTES 对象中, 此外, OBJECT_ATTRIBUTES 结构体的对象属性一般可以设置为 OBJ_CASE_INSENSITIVE (不区分大小写) , OBJ_KERNEL_HANDLE( 内核句柄) 读/写文件 在内核中, 文件读写需要自己设置要读取的位置. 读文件 写文件 遍历文件 在用户层中,遍历文件有两个API. 在内核层, 遍历文件只有一个API 参数解析: 参数1 - 目录句柄 , 由 ZwCreateFile 打开. 参数2~参数4 - 填 NULL 即可 参数5 - 函数执行后的状态 参数6 - 保存函数输出信息的缓冲区, 该缓冲区使用哪种结构体由参数7决定. 参数7 - 获取的文件信息类型 FileBothDirectoryInformation - 使用 FILE_BOTH_DIR_INFORMATION