在search_key.php获取到key
脚本里自动跳转到了./no_key_is_here_forever.php,所以正常访问并不能获得key
第二关
构造脚本
import requests,re
# 自动处理cookies,做状态保持
s = requests.Session()
url = "http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php"
# 网址的内容以utf-8形式显示
html = s.get(url).content.decode('utf-8')
# />\n:以/>结尾的下一行
# =<i:以=<i结尾
# (.*?):任意字符
reg = r'/>\n(.*?)=<i'
# 编译正则表达式
pattern = re.compile(reg)
# 返回匹配的内容及题目里面的表达式
match = re.findall(pattern,html)
# eval执行字符串表达式,并返回值设置给v
payload = {'v':eval(match[0])}
# post方式发送v=结果
print(s.post(url,data=payload).text)
scapy执行获得key
第三关
填入null
第四关
查看通过页面的源码,删除三个return false的函数
Slakfjteslkjsd
第五关
抓包并爆破密码
尝试输入1238这个特殊的结果
第八关
查看源码
直接输入(●'◡'●),发现没有弹窗,考虑让输入的内容^ _^直接与(●'◡'●)相等执行最后一个if语句提示flag,将^ _^转换为阿斯克码%5e%5f%5e,结合data url协议知识,构造%5e%5f%5e=data:text/plain, (●'◡'●)
第九关
正常获取验证码提示使用另一个手机号登陆
获取验证码后抓包修改登陆手机号
但是后面尝试发现使用6收取的验证码同样可以登陆7的号码,所以也可以不用抓包修改
第十关
先正常获取验证码,从提示的信息中猜测可能需要抓包爆破验证码
爆破结果
输入验证码又有一个手机号,头顶的青青草原藏不住了(doge)
修改号码重新爆破
获得flag
第十二关
构造简单的弹窗
正常弹窗,接着弹出第二个弹窗
重新构造脚本获得key
第十三关
查看前端代码下的xss_check.php,发现只要弹窗的内容为”success!”就会显示key
在控制台底下进行脚本构造操作
第十四关
与十三关同样操作,控制台直接构造弹窗
第十五关
直接控制台
【小结】
可以看看前端里面有什么内容,结合调用的代码去分析