include

文件包含漏洞

蓝咒 提交于 2020-03-10 06:03:36
php所提供的文件包含功能太强大,导致包含漏洞易出现 php文件包含漏洞 四个函数 include(),include_once(),require(),require_once() 区别:require找不到被包含的文件会报错并停止运行,include则是警告继续运行脚本 once为包含一次的意思,只会包含一次文件中代码 本地包含 只要文件中有正确的php代码,就好被执行。 可利用文件上传与文件包含来执行恶意代码。 非php代码文件会暴露源码信息 远程包含 条件是远程包含功能开启 在php.ini中 all_url_include = off /on 默认为off 需改为on 攻击者可构造恶意站点进行攻击。 $_GET[‘page’] 利用方式 敏感文件读取 访问目标主机文件,若有并且可以读取,可以读取文件内容 无该文件,会有类似open_basedir restriction in effect的警告 敏感路径 windows linux 2. 远程包含shell 若all_url_open是激活状态可以写入一句话木马 如: <? fputs(fopen("shell.php","w"), "<?php eval($_POST[shell]);?>") ?> 本地包含+文件上传 可以上传图片,文档 采用拼接方式构造图片木马等 再加上包含漏洞,调用文件

Linux C 遍历目录下的所有文件

懵懂的女人 提交于 2020-03-10 05:28:47
1、原文链接: https://www.cnblogs.com/fnlingnzb-learner/p/6472391.html Linux C 读取文件夹下所有文件(包括子文件夹)的文件名 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <unistd.h> int readFileList(char *basePath) { DIR *dir; struct dirent *ptr; char base[1000]; if ((dir=opendir(basePath)) == NULL) { perror("Open dir error..."); exit(1); } while ((ptr=readdir(dir)) != NULL) { if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir continue; else if(ptr->d_type == 8) ///file printf("d_name:%s/%s\n",basePath,ptr->d_name); else if(ptr->d_type ==

文件包含漏洞与伪协议利用

血红的双手。 提交于 2020-03-10 05:25:33
0x00 基础 包含函数: 函数 概况 include ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行 include_once ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 只包含一次,其它同上 request ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 在包含的过程中如果出现错误,会直接报错并退出程序的执行 request_once ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 只包含一次,其它同上 file ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>) 把整个文件读入一个数组 fopen ( f i l e p a t h filepath f i l e p a t h & < u r l url u r l &伪协议>,$ m o d e mode

【实验7】 流类库与输入输出

岁酱吖の 提交于 2020-03-10 04:59:08
11-3: 1 #include <iostream> 2 #include <fstream> 3 4 using namespace std; 5 6 int main() 7 { 8 ofstream out("test1.txt"); 9 out << "已成功写入文件!" << endl; 10 out.close(); 11 return 0; 12 } 截图略…… 11-4 1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 5 using namespace std; 6 7 int main() 8 { 9 string x; 10 ifstream in("E:\\程序\\题目\\题目6\\11-3\\11-3\\test1.txt"); 11 in >> x; 12 in.close(); 13 cout << x << endl; 14 return 0; 15 } 截图略…… 11-7 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 ios_base::fmtflags original_flags = cout.flags(); //保存当前参数设置 8 cout << 812 << '|'

实验6 流类库与I/O

怎甘沉沦 提交于 2020-03-10 04:54:27
实验目的 1. 理解流的概念,掌握流类库的基础知识 2. 掌握标准I/O及常用的格式控制 3. 掌握文件I/O的方法 实验准备 1. 概念 流 插入运算符<<在使用时,向流中插入意指什么? 提取运算符>>在使用时,从流中提取意指什么? 几个标准I/O流对象:cin, cout, cerr, clog 标准I/O流类的继承/派生层次关系 2. 语法和应用 格式控制方法 使用ios类的成员函数进行格式控制 使用操纵符函数进行格式控制 使用文件流类实现文件I/O的步骤和方法,以及常用的一些成员函数或普通函数 如××.open(), ××.close(), ××.fail(), ××.is_open(),××.get(), ××.getline(), getline()等等 实验结论 part 2 #include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; int main() { char a[20]="merge successfully."; ofstream ou; ou.open("3.txt",ios_base::app); ou<<"merge successfully."<<endl; ou.close(); system("pause");

实验6 流类库与I/O

非 Y 不嫁゛ 提交于 2020-03-10 04:53:48
本次实验说明 1. 实验前,请对照「实验准备」,复习必要的知识,尤其是第11章文件I/O示例程序,通过运行和观察,熟悉和掌 握文件I/O方法和一些成员函数用法。 2. 「Part3 应用编程实践」两道编程题目,难度没有很大,但是,因为涉及文件I/O、随机函数等的处理,在细节 处容易出错。错误一多,就容易让人觉得混乱,不知道从哪里入手。先理顺思路,再分模块完成。也可以先写 一些小程序,逐步测试,逐步实现。 实验目的 1. 理解流的概念,掌握流类库的基础知识 2. 掌握标准I/O及常用的格式控制 3. 掌握文件I/O的方法 实验准备 请结合第11章课件和教材复习以下内容: 1. 概念 流 插入运算符<<在使用时,向流中插入意指什么? 提取运算符>>在使用时,从流中提取意指什么? 几个标准I/O流对象:cin, cout, cerr, clog 标准I/O流类的继承/派生层次关系 2. 语法和应用 格式控制方法 使用ios类的成员函数进行格式控制 使用操纵符函数进行格式控制 使用文件流类实现文件I/O的步骤和方法,以及常用的一些成员函数或普通函数,如××.open(), ××.close(), ××.fail(), ××.is_open(),××.get(), ××.getline(), getline()等等。 说明:getline()既有成员函数,也有普通函数,其函数原型稍有不同

PCL_点云分割_最小割算法

对着背影说爱祢 提交于 2020-03-10 04:06:28
普遍应用于前背景分割,立体视觉、抠图等。 GraphCuts图是在普通图的基础上多了2个顶点,这2个顶点分别用符号**”S”和”T”**表示,统称为终端顶点。其它所有的顶点都必须和这2个顶点相连形成边集合中的一部分。所以Graph Cuts中有两种顶点,也有两种边。 第一种顶点和边是:第一种普通顶点对应于图像中的每个像素。每两个邻域顶点(对应于图像中每两个邻域像素)的连接就是一条边。这种边也叫n-links。 第二种顶点和边是:除图像像素外,还有另外两个终端顶点,叫S(source:源点,取源头之意)和T(sink:汇点,取汇聚之意)。每个普通顶点和这2个终端顶点之间都有连接,组成第二种边。这种边也叫t-links。 PCL中实现最小割算法: (1)构造图:对于一个给出的点云,算法会以点云中每一个点,另加一个source(源点)、一个sink(汇点),作为GraphCut图的顶点;点云中每个点与其近邻连线所形成的边叫n-links,与sink、source连线形成的边叫t-links。 (2)对边赋权值: (3)最小割计算:将点云分为前景和背景。 代码: # include <iostream> # include <vector> # include <pcl/io/pcd_io.h> # include <pcl/point_types.h> # include <pcl

L2-005. 集合相似度(set使用)

夙愿已清 提交于 2020-03-09 22:44:51
L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:N c /N t *100%。其中N c 是两个集合都有的不相等整数的个数,N t 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N(<=50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(<=10 4 ),是集合中元素的个数;然后跟M个[0, 10 9 ]区间内的整数。 之后一行给出一个正整数K(<=2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。 输出格式: 对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。 输入样例: 3 3 99 87 101 4 87 101 5 87 7 99 101 18 5 135 18 99 2 1 2 1 3 输出样例: 50.00% 33.33% 提交代码 #include <cstdio> #include <algorithm> #include <iostream> #include <set> #include<cstdio> using namespace std;

linux进程间的那些事儿

北城以北 提交于 2020-03-09 16:25:23
写这篇文章之前,我对linux的进程间通讯还是有些畏惧的,不过看了一些其它文章之后,觉得linux进程间远比我学到的要难得多,首先来说,linux下线程的概念被淡化了,线程又名轻量级进程。线程机制是现代编程技术中常用的一种抽象,提供了在同一程序中共享内存地址控件的一组线程。这些线程可以共享打开的文件和其它资源。线程机制支持并发程序涉及技术,可以保证真正并行处理。linux实现线程的机制非常独特,从内核的角度来说,没有线程这个概念,把所有线程当成进程来实现,内核并没有准备特别的数据结构来表示线程。相反,线程仅仅被视为一个与其它进程共享某些资源的进程,每个线程都拥有唯一率属于自己的task_struct,所以在内核中,看起来像一个普通的进程(只是该级才能哼和其它一些进程共享某些资源,如地址空间). 在windows或是sun solaris等操作系统中,提供了专门支持线程的机制,线程被抽象成一种耗费较少资源,执行迅速的单元。而对于linux来说,它只是一种进程间共享资源的手段。linux线程的创建和普通进程创建类似,只不过在调用clone的时候需要传递一些参数来指明需要共享的资源 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND,0); 而一个普通的fork实现 clone(SIGCHLD,0) 而vfork的实现是 clone

Qt_JNI_DLL_配置手册

独自空忆成欢 提交于 2020-03-09 13:56:40
上篇文章实现了Qt+MinGW+Opencv+Zbar的配置。接下来,由于项目需求,需要用Java调用,因此需要将之前二维码识别的代码编译成Dll,供java调用。 1 Java调用Dll的方法 1.1 利用Java自带的JNI JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。它允许Java代码和其他语言写的(本地已编译的)代码进行交,这样做通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。 基本流程是首先在java环境下,建立一个java的接口,然后利用Java自带的工具javah,将这个接口转换成C或C++类型的接口,然后,在VC或中Qt的环境下借助编译器,实现这个接口的功能,并编译成Dll。 在Java环境下通过调用这个Dll,就可以访问本地代码或已编译的库的功能, 这个方法的效率是最高的,缺点是由于对应于某一平台的 JNI 本地代码调用通常不能移植到其他平台上。 这种方法适用于核心代码大部分已经在本地完成,将代码重新写成Java的工作量复杂或者根本无法完成的情况,我们需要在本地用C++或C把这些代码封装起来供Java 使用,这个封装的Dll可以由我们指定实现某种功能,也就是说可以在保证Java代码不更改的情况下,改变程序的功能。 1.2 利用Java自带的JNA JNA