RCE与SQL漏洞的复现

eval长度限制突破

php eval函数参数限制在16个字符的情况下,如何拿到webshell呢

首先,我们还是先把环境搭好(此次的所有漏洞环境我都部署在Ubuntu下,我的Ubuntu下的环境是nginx+php,至于Ubuntu下的nginx+php环境我也有博客也写到,希望可以帮助到到家。在这里,我建议nginx下的html文件夹最好的用户组和用户都设置为www-data,否则之后的创建一句话木马可能不能创建,我的环境在最开始的时候用户组和用户为root,所以我在这吃了点亏,望大家引以为戒。)

复制代码
<?php
$param = $_REQUEST['param']; 
if (
strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false
) {
eval($param);
}

在这里,我们分析代码,这个PHP代码片段存在严重的安全漏洞。它接收用户输入,通过eval()函数执行输入的代码。尽管代码对输入进行了部分过滤,但这种保护并不完全有效,可能导致代码执行攻击(例如,代码注入或远程代码执行)。

这个语句从用户的请求中获取 param 参数。_REQUEST 包含了 _GET, _POST, 和 _COOKIE 的混合数据。

复制代码
if
strlen($param)<17 && stripos($param,=== false && stripos($param,'eval')'assert')
false
  • 这个条件语句检查 $param 的长度是否小于17个字符,并且 $param 中不包含 "eval" 和 "assert" 字符串。

  • 通过这种方式,它试图阻止一些明显的危险输入,如包含 eval 或 assert 关键字的代码。

    {
    eval($param);
    }

eval() 函数会将传入的字符串当作PHP代码执行。

这意味着如果用户的输入通过了上述条件检查,输入的内容会直接在服务器上执行。

第一种方法

尽管代码中试图过滤掉 "eval" 和 "assert",以及限制了输入的长度,但这并不能阻止所有可能的攻击。例如,攻击者可以尝试绕过这些过滤条件,输入一些看似无害但实际上可以执行任意代码的内容。例如 phpinfo();

但是我们该如何生成一句话木马呢,由于他限制了eval和assert,突发奇想,因为这个环境部署在linux下,那我们可以使用``包裹代码执行啊

复制代码
echo `$_GET=[1]`;&1=id

数一下16个字符,刚好限制在了17个字符以内,而我们可以传参给1,那么问题不就解决了吗

试试吧

这个时候,我们看了之后权限只是www-data,那我们可以创建文件

echo `$_GET=1`;&1=touch /tmp/111.txt

我们既然可以创建这个,那么webshell不也可以吗,只做到这里,剩下的一句话木马的生成可以自行研究下。

相关推荐
这个DBA有点耶6 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒6 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql
心静财富之门6 小时前
Python 数据共享四种方案完整实例(同进程 / JSON / Redis / HTTP)
数据库·python·oracle
略略略咯咯6 小时前
啊啊啊啊啊
java·服务器·数据库
奇牙coding6 小时前
GPT-5.5 报 401 invalid_api_key 怎么办?换密钥前按 4 层排查请求头、项目权限和端点
数据库·gpt·ios·ai
IvorySQL6 小时前
PostgreSQL 日报| WAL summarizer 断言失败(10 月 26 日)
数据库·postgresql·区块链
王仔小奶6 小时前
慢SQL治理与性能调优:DBA如何用Shell/Python提升运维效率?
python·sql·dba
这个DBA有点耶7 小时前
2026年国产数据库“实际用户增长最快”核验指南:口径优先级、可查数据与选型动作清单
数据库·mysql·架构
程序员塔塔喵7 小时前
【MySQL篇|第三篇】脏读,幻读,不可重复读
数据库·mysql·不可重复读·幻读·脏读
数据库小学妹8 小时前
OLAP数据库怎么选、怎么优化?路线、提速与边界
运维·数据库·后端