HackingLab之脚本关攻略

开始脚本关的攻略!!
本次依旧无题目描述。
网络信息安全攻防学习平台

第一关

这题不是跟基础关的第八题一样吗?使用的python代码也只用改一下url,key就直接出来了。

1
2
3
4
5
6
7
import requests
url = "http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/search_key.php"
r = requests.get(url,allow_redirects=False)
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

yougotit_script_now

第二关

第二关需要在两秒内计算式子并提交,但很显然两秒的时间就算能算出来也不够输入。
所以我们需要写一个脚本能够计算这个式子并且提交答案。

我们通过re模块,使用正则表达式提取算数表达式。由于他的式子只有a*b+c*(d+e)的形式,所以我们的正则表达式只需匹配这种表达式,即(\d+[+*])+((\d+)+(\d+))。

另外需要注意的一点是,由于每次访问的时候式子都会改变,所以我们需要保持会话,让我们获取式子和提交答案访问的是同一个会话。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import requests
import re
url = "http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php"

#维持会话,可以让我们在跨请求时保存某些参数
session = requests.session()

# 请求获取URL位置的资源,包含从服务器返回的所有内容
r = session.get(url);

'''
r''一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给取消,将其设置成为一个普通的字符串。
可以解决Python中的转义字符和正则表达式中的转义字符之间的冲突问题。
'''
expression = re.search(r'(\d+[+*])+\((\d+)\+(\d+)\)',r.text).group()

# eval() 函数用来执行一个字符串表达式,并返回表达式的值。
result = eval(expression)

print(expression)
print(result)

r = session.post(url,data={'v':result});
# 请求获取URL位置的资源,包含从服务器返回的所有内容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

123iohHKHJ%^&*(jkh

第三关

第三关的关键字就是空。
我一开始想难道是要求我们直接提交空信息?什么都不填点提交却弹出“请输入答案”的窗口。于是我将判断空信息的js代码删去,却发现并没有什么效果。
最后查了答案,才发现需要填null。

null

第四关

查看源码,发现head中有一大堆js代码
F12
显然第一个函数function alert(a)导致a函数无法执行。将网页保存到本地,然后删去此函数再次打开即可。

不过要注意’chars’不算在14个字符当中
弹出窗口的代码

slakfjteslkjsd

待续