PHP提供如下函数用于执行外部应用程序;例如:system()、shell_exec()、exec()、passthru()
写出优秀的程序代码是一门艺术,要想如此,就必须在一开始就养成良好的编程习惯。良好的编程习惯不仅有助于项目初期的设计(如模块化),还可以使你编写的代码更易于理解,从而使代码的维护工作更轻松、更省力。不好的编程习惯则会造成代码bug,并且会使以后的维护工作困难重重。
未对用户输入进行检查过滤,导致用户输入的参数被应用当成命令来执行。 命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru()等函数,代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
0x01 背景 团队大佬在做PHP代码审计的时候发现PHP代码是被混淆过的。虽然可以通过自己手动解密可以还原原先的PHP代码,但是混淆过程比较复杂且自己写脚本还原非常麻烦。所以,我这边通过PHP底层的操作对混淆后的PHP代码进行还原。 0x02 PHP代码混淆原理 PHP代码混淆一般来说有两种方法: 需要PHP扩展 无需PHP扩展 本文我们主要讲解无需PHP扩展的代码混淆的解密。大多数的无需扩展的php代码混淆原理上都是使用eval进行代码的执行。如果我们能够得到eval函数的参数,即可获得解密后的代码
Webshell实际上是一个能够执行恶意功能的PHP代码文件。Webshell要执行恶意功能,其代码结构主要由两部分组成:数据传递部分和数据执行部分。在webshell中,数据传递部分是指webshell中用来接收外部输入数据的部分,webshell可以根据外部输入数据动态地交互执行恶意功能。在webshell中,数据执行部分指的是webshell中的system函数,用于执行代码执行和执行命令等命令。
根据官方的YAML站点所述,YAML是面向所有编程语言的对人类友好的数据序列化标准。
SQL注入的原因,表面上说是因为 拼接字符串,构成SQL语句,没有使用 SQL语句预编译,绑定变量。
前几天在网上看到一份代码,打开来看,里面都是类似下面的十六进制字符串。一脸懵逼,啥情况,我万能的sublime text 打开居然是十六进制文件,而且文件居然还能运行?
strpos($str,search,[int]):查找search在$str中的第一次位置从int开始; stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感 strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int开始 strripos($str,search,[int]):同上,该函数对大小写不敏感
这个函数用来拒绝浏览器端用户终止执行脚本的请求。正常情况下客户端的退出会导致服务器端脚本停止运行。
实际加密算不上,具体实现思路就是把代码base64加密,然后对base64里的字符串进行字符串映射(随机生成字典混淆)然后eval执行 这种百分之百能被破解还原
不同的页面中有相同的代码部分,可以将其分离为单个文件。需要调用时,include 引入对应的文件即可调用。提高代码的复用率。
1. $_POST并非是HTTP POST过来的数据, 如json格式的数据就没法接受,这是因为由于历史原因,php只能解析Content-Type为 application/x-www-form-urlencoded 或 multipart/form-data的Http请求,只不过现在json流行了,如下处理即可: $_POST = json_decode(file_get_contents('php://input'), true); print_r($_POST); 2.isset()函数是用来检测变
(1)X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。xff 是http的拓展头部,作用是使Web服务器获取访问用户的IP真实地址(可伪造)。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。格式为:X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理2IP
有的地方要加,有的地方不要加。(似乎是废话...) 一句话搞定:有花括号的地方不要加,其他都给我加上!! 比如,if判断,for循环,定义方法,这些都不要加,谁加我跟谁急。其他地方都给我加上。
这篇文章写一些php木马免杀的一些技巧,希望对大家有点帮助。这里解释一下什么是php木马,这里大体分为三种:
团队大佬在做PHP代码审计的时候发现PHP代码是被混淆过的。虽然可以通过自己手动解密可以还原原先的PHP代码,但是混淆过程比较复杂且自己写脚本还原非常麻烦。所以,我这边通过PHP底层的操作对混淆后的PHP代码进行还原。
浏览器是不识别 PHP 文件的,用浏览器发开 PHP 文件,只会显示 PHP 的源代码,所以 PHP 文件必须在服务器中执行。其实 apache 服务器也识别不了 PHP 文件,是 apache 将 PHP 文件再交给 PHP 模块处理的,最后 apache 将处理之后的网页内容返回。
大家好,又见面了,我是你们的朋友全栈君。allow_url_fopen与安全以及PHP libcurl allow_url_fopen=ON常常会给服务器和管理员带来麻烦,但是经常性(至少我这样认为)的我们需要远程读取某个东西,如果设置allow_url_fopen=OFF将其关闭,我们就没有办法远程读取。
收集一些日常开发中一些有用的PHP代码段,会持续更新。 如果代码有BUG或者任何建议,欢迎在评论区评论!
1、安装相关软件,如Sublime text、 Notepad++、editplus、 Seay源代码审计系统等
我们大家知道无论哪种语言,字符串操作都是一个重要的基础,往往是简单而重要。PHP给我们提供了大量的字符串操作函数,功能强大,使用也比较简单,这里为大家总结九类字符串函数。 1. 查找字符位置函数 strpos($str,search,[int]): 查找search在$str中的第一次位置从int开始 stripos($str,search,[int]): 函数返回字符串在另一个字符串中第一次出现的位置 strrpos($str,search,[int]): 查找search在$str中的最后一次出
PHP里有非常丰富的内置函数,很多我们都用过,但仍有很多的函数我们大部分人都不熟悉,可它们却十分的有用。这篇文章里,我列举了一些鲜为人知但会让你眼睛一亮的PHP函数。
随着代码安全的普及,越来越多的开发人员知道了如何防御sqli、xss等与语言无关的漏洞,但是对于和开发语言本身相关的一些漏洞和缺陷却知之甚少,于是这些点也就是我们在Code audit的时候的重点关注点。本文旨在总结一些在PHP代码中经常造成问题的点,也是我们在审计的时候的关注重点。(PS:本文也只是简单的列出问题,至于造成问题的底层原因未做详细解释,有兴趣的看官可以自行GOOGLE或者看看底层C代码。知其然,且知其所以然)
作者:matrix 被围观: 1,836 次 发布时间:2014-04-23 分类:兼容并蓄 零零星星 | 9 条评论 »
webshell这个东西对于web方向的还是极其重要的,getshell被杀了很难受,于是来研究一波自己的免杀马儿,毕竟别人没有自己的好用,而且分享出来分分钟被杀。
写程序时,我了省时间,省空间。我们对一个变量运行后,不再新建变量存储运算结果,直接赋值给该变量自身,这样很容易操作。特别是早期写PHP代码,在PHP代码中混入HTML语法,多行拼接的情况下,就会使用类似如下的方式:
朋友买了一套php源码,要做类似于证书查询的功能,让我帮忙审计一下有没有高危的漏洞,仅挖掘getshell,告知我这个系统是由ecms也就是帝国cms简化来的,仅有后台登录前台查询页面。
代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。当应用在调用一些能将字符串转化成代码的函数(如php中的eval)时,没有考虑到用户是否能控制这个字符串,将造成代码注入漏洞。狭义的代码注入通常指将可执行代码注入到当前页面中,如php的eval函数,可以将字符串代表的代码作为php代码执行,当前用户能够控制这段字符串时,将产生代码注入漏洞
其实这段代码属于基础类的一句话,功能仅限于验证漏洞了,实际中太容易被查出来了,也就是早上雨落直接带图说检测到木马文件
# 0×01 分析题目 # 题目名称: RCE 题目简介: 请bypass我! 题目环境: http://210.44.151.51:10088/ 函数理解: #PHP str_replace() 函数
大清早的刚从床上爬起来。雨落就跑来找我问我这段代码是什么意思<?php @eval($_POST[pp]);?>看了一下,post接收pp的值,抑制错误输出。呵呵开个玩笑,其实不是这么简单,这是一段P
PHP优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。本文给大家提供全面的优化技巧。 1、echo比print快。 2、使用echo的多重参数代替字符串连接。 3、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 4、对global变量,应该用完就unset()掉。 5、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。 6、函数代替正则表达式完成相同功能。 7、当
1. echo 比 print 快。 2. 使用echo的多重参数代替字符串连接。 3. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 4. 对global变量,应该用完就unset()掉。 5. 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。 6. 函数代替正则表达式完成相同功能。 7. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,++$i
php,基础,流程控制,函数,字符串,数组,web交互,mysql数据库,PHP数据库编程,cookie与session,日期和时间,图形图形处理,文件和目录处理,面向对象,pdo数据库抽象层,smarty模板。
如果您是PHP开发人员,您可能在某些PHP文件的开头看到过declare(strict_types=1)语句。
PHP和其他几种web语言一样,都是使用一对标记将PHP代码部分包含起来,以便和HTML代码相区分
PHP作为一种解释型语言,不同于编译型语言编译结果即为当前CPU体系的指令,PHP源代码只有编译成opcode才能够被zend虚拟机直接执行。
Hello Shanghai! 定义和用法 str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。 该函数必须遵循下列规则:
还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如何在命令长度受限的情况下成功get到webshell,以及关于函数参数受限的突破,mysql的一些骚操作技巧~~~
php://filter是PHP中独有的协议,利用这个协议可以创造很多“妙用”,本文说几个有意思的点,剩下的大家自己下去体会。本来本文的思路我上半年就准备拿来做XDCTF2016的题目的,没想到被三个白帽的一题抢先用了,我也就只好提前分享一下。
参考资料(慕课网) 1. PHP的代码需要写在“<?”和“?>”中; <?php 表达式 ?> 就如编写JavaScript脚本语言需要写在<script></script >标签之间一样, 在页面
根据红日安全写的文章,学习PHP代码审计的第五节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一道CTF的题目和实例来加深巩固。这是之前写的,有兴趣可以去看看: PHP代码审计01之in_array()函数缺陷 PHP代码审计02之filter_var()函数缺陷 PHP代码审计03之实例化任意对象漏洞 PHP代码审计04之strpos函数使用不当
geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等
前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程. 个人学习方法分享 全栈开发自学笔记 已开源 [PHP开发学习笔记(面向对象篇)] 稍后更新 [PHP开发学习笔记(框架篇)] 稍后更新 [PHP开发学习笔记(实际应用篇)] 稍后更新 本文阅读建议 1.一定要辩证的看待本文. 2.本文并不会涉及到PHP详细知识点,只陈述在学习PHP过程中遇到的关键点. 3.PHP依照其开发应用分为'基础篇,面向对
0x00 简介 ---- 之前看了seay写的PHP代码审计的书,全部浏览了一遍,作为一个代码审计小白,希望向一些和我一样的小白的人提供一下我的收获,以及一个整体的框架和常见漏洞函数。这也算是这本书的一个学习笔记吧,可以结合我捋顺的思路来看这本书。: ) 0x01 整体 ---- 学习代码审计的目标是能够独立完成对一个CMS的代码安全监测。其通用的思路有: 通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。 看配置文件,带有config关
PHP 是服务器端脚本语言。全称为 Hypertext Preprocessor 为超文本预处理器。
V站笔记 0x00 示例ctf.php <?php @$_str = $_GET['str']; //print_r($_str); $_temp = '$str="'.add
领取专属 10元无门槛券
手把手带您无忧上云