php解密

针对windows系统如何解决openssl_pkey_export(): cannot get key from parameter 1这个问题

血红的双手。 提交于 2019-12-14 23:35:52
为了解决这个问题我百度了很多方法,可是很多方法并没有效果。 方法一: 如果你安装的是phpstudy这个集成环境,那么 1、你就要去php拓展里面去打开php_opemssl中打开这个扩展。 2、去php.ini里面设置,把“extension=php_openssl.dll”前面的“;”去掉,如果没有这个就添加extension=php_openssl.dll这个。 3、复制php安装目录中的: libeay32.dll、ssleay32.dll至c:\windows\system32(如果是apache这两个文件在E:\phpStudy\PHPTutorial\php\php-7.0.12-nts)。 4、复制php_openssl.dll至c:\windows\system32(如果是apache,那么这个文件在E:\phpStudy\PHPTutorial\php\php-7.0.12-nts\ext)。 5、重启IIS或者apache环境 如果方法一还是没有用,那么你可以在环境变量中去添加一个变量试试看, This may help if you are on windows: Click on the START button Click on CONTROL PANEL Click on SYSTEM AND SECURITY Click on SYSTEM

PHP 学习笔记

风流意气都作罢 提交于 2019-12-14 19:07:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.常用方法 ini_set('display_errors',1); // 如果出现错误,将错误信息在页面显示出来 error_reporting(E_ALL | E_STRICT);// 显示所有的错误信息 // 去除字符串中的换行符 $posting = nl2br($_POST['posting']); // 将特定html标签转换为实体版本 $posting = htmlspecialchars($_POST['posting'],特定的html标签); // 将所有html标签转换为实体版本 $posting = htmlentities($_POST['posting']); // 移除所有的html和php标签 $posting = strip_tags($_POST['posting']); // 将任意值传送到php脚本(将值完全转换为适合作为url的一部分传输) urlencode(); 注意: PHP中字符串的连接用 " . " PHP中如果用双引号来连接变量,只会将其视为一个字符串,连接变量用单引号 如:$name1 = "test"; $name2 = "value"; $name = "$name1 $name2"; $nameValue = '$name1 $name2'; 其中

GO与PHP的AES交互,key长度问题

淺唱寂寞╮ 提交于 2019-12-11 02:32:36
今天在使用go与php的AES加解密交互中,一直有个问题那就是在go中加密后,在php端始终都是无法解密,经过排查最后发现是加密key长度引起的问题, 这里简单记录下。 go的AES使用的是第三方的库, openssl ,因为用的匆忙,没注意看文档,所以就直接弄了示例代码,才发现和php端无法解密,其实在文档中它其实讲的很清楚了, “The length of the key can be 16/24/32 characters (128/192/256 bits)”,这个key的长度只能是16,24和32个字符,分别对应AES-128, AES-192, or AES-256等模式。 我在php中因为没有太在意这个长度,所以搞的32位,但由于我用的是ECB模式,所以其实32位的字符长度实际是截成16个字符了,那么我在go中还配置成32个字符就不对了,直接在go中把key的长度改成php中配置的key的一半就行了,哎,你说这坑货php,如果key配置不对提示下多好。 go代码 func Encrypt(data map[string]interface{}) (s string) { src,_ :=json.Marshal(data) key := []byte("YzfNCQoF9P7tjwyZ") dst , err := openssl.AesECBEncrypt(src,

11.12远程文件包含利用知识、PHP伪协议、文件包含漏洞包含本地session最终实现RCE

雨燕双飞 提交于 2019-12-04 06:40:20
远程文件包含利用知识 配置条件: Allow_url_fopen 打开 Allow_url_include 打开 %00 截断( php<5.3 版本) %00 截断: http://127.0.0.1/include/test.php?file=file1.html%00 有后缀名限制的文件包含 Include($_GET[“file”].”.php”); <?php include("./up/".$_GET["file"]);?> 127.0.0.1/include/test.php?file=../../../../123.txt 这样的会直接目录跳转 同时又前后缀限制,需要重点考虑后缀名的绕过,方法如下: %00 截断 路径长度截断 ?file=../../../../../boot.ini/./././.~~~~./././ PHP<5.2.8 可以成功, linux 需要文件名长于 4096 , windows 需要长于 256 PHP 伪协议 Include($_POST[“a”]); a= 如下 zip:// 处理 zip 数据流 phar:// 处理 rar 数据流 PHP 协议 ( get 、 post 自己看着定) ?file=php://input POST:<? phpinfo();?> 利用条件: allow_url_include = On ,对

php伪协议

我们两清 提交于 2019-12-03 17:27:28
PHP支持的伪协议 file:// — 访问本地文件系统 http:// — 访问 HTTP(s) 网址 ftp:// — 访问 FTP(s) URLs php:// — 访问各个输入/输出流(I/O streams) zlib:// — 压缩流 data:// — 数据(RFC 2397) glob:// — 查找匹配的文件路径模式 phar:// — PHP 归档 ssh2:// — Secure Shell 2 rar:// — RAR ogg:// — 音频流 expect:// — 处理交互式的流 php.ini参数设置 在php.ini里有两个重要的参数allow_url_fopen、allow_url_include。 allow_url_fopen:默认值是ON。允许url里的封装协议访问文件; allow_url_include:默认值是OFF。不允许包含url里的封装协议包含文件; 各协议的利用条件和方法 php://input php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。 注:当enctype=”multipart/form-data”时,php://input是无效的。

PHP非对称加密

[亡魂溺海] 提交于 2019-12-03 16:56:05
加密的类型: 在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。 单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA; 双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。 对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5; 非对称加密:相对对称加密而言,无需拥有同一组密钥,非对称加密是一种“信息公开的密钥交换协议”。非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密。这两个密钥是数学相关,用某用户密钥加密后的密文,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个密钥性质。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA。   以前一直对客户端传给服务器的信息加密这一块一脸懵,如果app里面的用户登录信息被抓包拿到了,大写着 username:root,password:123456, 那不是很尴尬。

使用Ghidra分析phpStudy后门

烈酒焚心 提交于 2019-12-03 08:59:59
一、工具和平台 主要工具: Kali Linux Ghidra 9.0.4 010Editor 9.0.2 样本环境: Windows7 phpStudy 20180211 二 、分析过程 先在 Windows 7 虚拟机中安装 PhpStudy 20180211,然后把安装完后的目录拷贝到 Kali Linux 中。 根据网上公开的信息:后门存在于 php_xmlrpc.dll 文件中,里面存在“eval”关键字,文件 MD5 为 c339482fd2b233fb0a555b629c0ea5d5。 因此,先去找到有后门的文件: lu4nx@lx-kali:/tmp/phpStudy$ find ./ -name php_xmlrpc.dll -exec md5sum {} \; 3d2c61ed73e9bb300b52a0555135f2f7 ./PHPTutorial/php/php-7.2.1-nts/ext/php_xmlrpc.dll 7c24d796e0ae34e665adcc6a1643e132 ./PHPTutorial/php/php-7.1.13-nts/ext/php_xmlrpc.dll 3ff4ac19000e141fef07b0af5c36a5a3 ./PHPTutorial/php/php-5.4.45-nts/ext/php_xmlrpc.dll

Aes加解密,php

匿名 (未验证) 提交于 2019-12-02 22:10:10
Aes类库 <?php namespace Aes; class Aes { /** * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得 */ protected $method; /** * var string $secret_key 加解密的密钥 */ protected $secret_key; /** * var string $iv 加解密的向量,有些方法需要设置比如CBC */ protected $iv; /** * var string $options (不知道怎么解释,目前设置为0没什么问题) */ protected $options; /** * 构造函数 * * @param string $key 密钥 * @param string $method 加密方式 * @param string $iv iv向量 * @param mixed $options 还不是很清楚 * */ public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0) { // key是必须要设置的 $this->secret_key = isset($key) ? $key : 'morefun';

介绍三种PHP加密解密算法

匿名 (未验证) 提交于 2019-12-02 22:10:10
PHP加密解密算法 这里主要介绍三种常用的加密解密算法: 方法一: 1 /** 2 * @param $string 要加密/解密的字符串 3 * @param string $operation 类型,ENCODE 加密;DECODE 解密 4 * @param string $key 密匙 5 * @param int $expiry 有效期 6 * @return string 7 */ 8 function authcode($string, $operation = 'DECODE', $key = 'encrypt', $expiry = 0) 9 { 10 // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 11 $ckey_length = 4; 12 // 密匙 13 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); 14 // 密匙a会参与加解密 15 $keya = md5(substr($key, 0, 16)); 16 // 密匙b会用来做数据完整性验证 17 $keyb = md5(substr($key, 16, 16)); 18 // 密匙c用于变化生成的密文 19 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr(

php代码安全之php screw_plus

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 18:33:29
https://github.com/del-xiong/screw-plus http://git.oschina.net/splot/php-screw-plus screw plus 是一个开源的php扩展,作用是对php文件进行加密,网络上提供php加密的服务很多,但大多都只是混淆级别的加密,被人拿到加密文件问只要有足够耐心就能破解,与之不同的是,screw plus采用扩展来加解密,而且是全球金融业流行的高强度 AES256 加密,除非破解了服务器,否则黑客拿到了加密文件也只是一堆乱码。 同一个加密级别的有 ioncube 和官方的 zend guard ,但这两款都是收费的,一年至少数千元的费用并不值得普通开发者去尝试,而使用screw plus,你不需要多花一分钱。 安装环境: centos6.5 php5.6 安装步骤: git clone https://git.oschina.net/splot/php-screw-plus.git && cd php-screw-plus /usr/local/php/bin/phpize make cp modules/php_screw_plus.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525 编译工具: cd tools make ln -sf