某CTF平台一道PHP代码注入
这道题以前做过但是没有好好的总结下来。今天又做了一下,于是特地记录于此。
首先就是针对源码进行审计:
关于create_function
这个函数可以看一下这个:http://www.php.cn/php-weizijiaocheng-405287.html
我们先来了解一下生成的匿名函数是什么形式的。
按照这里来说那么生成的匿名函数应该是这样的
<?php function lamdba()
{
$_GET[code];
}
?>
函数中间的部分在create_function
中默认以eval()来进行执行的,但是看看题目要想执行这个函数,必须保证$_GET['code'] === "echo 'Hello World';"
那这样我们执行了还有什么用啊??
所以这里面还可以进行绕过,我们可以通过输入将执行的内容整到函数外,这样就不需要用$func();来进行执行了。
输入 ?code=xxxxx;}phpinfo();/*
将输入的值放进去你就可以发现:
<?php function lambda()
{
xxxxx;}phpinfo();/*
} ?>
实际上在xxxx;}的时候函数就已经结束了,然后后面的内容我们就相当于超出函数之外了,后面巧妙的利用了注释符将函数后面的大括号消掉了!!
而我们输入的整个code都会以eval()的方式执行,因此就可造成命令执行。。
后面获取flag的内容就很简单了。。。
还看了一些博客,说这个函数在PHP 7.2被取消了。。。可是我PHP7.3.6还可以使用!
我也不是太清楚,如果有大佬知道的话,请赐教!
某CTF平台一道PHP代码注入的更多相关文章
- 某CTF平台一道PHP代码审计
这道题不是说太难,但是思路一定要灵活,灵活的利用源码中给的东西.先看一下源码. 首先要理解大意. 这段源码的大致的意思就是,先将flag的值读取放在$flag里面. 后面再接受你输入的值进行判断(黑名 ...
- 写一个小CTF平台
0x00.前言 协会要举办信息安全大赛了,初赛的web+crypto+misc主要由我来出题,注册.比赛的平台也都要由我来写 上周日完成了注册页面的后端(前端由另一个女生写的),前天下午大概完成 ...
- create_function()代码注入
00x00create_function()函数的简介 适用范围:PHP 4> = 4.0.1,PHP 5,PHP 7 功能:根据传递的参数创建匿名函数,并为其返回唯一名称. 语法: creat ...
- 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验
20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...
- 【技巧总结】Penetration Test Engineer[3]-Web-Security(SQL注入、XXS、代码注入、命令执行、变量覆盖、XSS)
3.Web安全基础 3.1.HTTP协议 1)TCP/IP协议-HTTP 应用层:HTTP.FTP.TELNET.DNS.POP3 传输层:TCP.UDP 网络层:IP.ICMP.ARP 2)常用方法 ...
- 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
20145312 <网络对抗>PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验 注入shellcode 实验步骤 1. 准备一段Shellcode 2. ...
- 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码
详解C#泛型(二) 一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { ...
- HTML5 App的代码注入攻击
原文链接 摘要 基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统.它开发起来很方便,可以使用标准的web技 ...
- 深入理解xLua基于IL代码注入的热更新原理
目前大部分手游都会采用热更新来解决应用商店审核周期长,无法满足快节奏迭代的问题.另外热更新能够有效降低版本升级所需的资源大小,节省玩家的时间和流量,这也使其成为移动游戏的主流更新方式之一. 热更新可以 ...
随机推荐
- Python 之父的解析器系列之五:左递归 PEG 语法
原题 | Left-recursive PEG grammars 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公众号作者 ...
- Educational Codeforces Round 69 (Rated for Div. 2)
A. DIY ...
- 基于Selenium+Python的web自动化测试框架
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
- 操作系统原理之I/O设备管理(第六章上半部分下)
五.I/O软件原理 输入输出软件的总体目标是将软件组织成一种层次结构 低层软件用来屏蔽硬件的具体细节 高层软件则主要是为用户提供一个简洁.规范的界面 设备管理的4个层次: 用户层软件 ->向系统 ...
- 如何在spingboot项目中自定义自己的配置
在实际开发中,为了方便我们常常会考虑把配置文件的某一类配置映射到配置类上,方便spring容器加载,实现方法如下: 1. 书写配置文件信息:书写某一类特定字段开头的配置信息,例如在yml配置文件中可以 ...
- Java相关PDF书籍与教程免费下载
场景 我的CSDN: https://blog.csdn.net/BADAO_LIUMANG_QIZHI 我的博客园: https://www.cnblogs.com/badaoliumangqizh ...
- HBase 超详细介绍
1-HBase的安装 HBase是什么? HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到 ...
- maven环境变量设置
maven环境变量设置 maven环境变量设置 wondows 一.下载 开源网址:http://maven.apache.org/ 下载网址:http://maven.apache.org/down ...
- 亮剑.NET第二章
第二章主要讲解C#中各种让人模糊不清的概念,用法,类型等等. 1.Equals()与==区别 当比较两个值类型时,二者基本一致,当比较引用类型时,==比较的是引用类型的地址是否一致,即两个引用是否指向 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(三):ZAP代理设置
ZAP本地代理设置 如前文所言,ZAP的工作机制,是通过“中间代理”的形式实现. ZAP的代理设置可以从菜单中的:工具 - 选项 - Local Proxies加载. 在这里可以设置ZAP用来接受接入 ...