xss-labs通关记录

lolydawn / 2024-01-17 / 原文

xss-labs

level3

  • 输入单引号发现能闭合前面的单引号 猜测可能是 ' ' 类型的
  • 查看源码
  • <input name=keyword value='".htmlspecialchars($str)."'>
  • 发现确实是 而且还带有实体编码函数 双引号、尖括号等没法用 但是在较低的php版本中不会编码单引号
  • 这个时候在input标签里 可以考虑html事件函数
  • 比如onblur="alert(/x/)"
  • 所以先写一个单引号 闭合第一个单引号 后面就任人宰割了
  • ' onblur='alert(/x/) 或者 ' onmouseover=javascript:alert(1) ' 都可以

level4

  • 这一关很简单
  • 发现双引号不会被编码 直接构造html事件执行就好了
  • "onblur="alert(/x/)
  • 查看源码分析 发现只过滤了左右尖括号

levle5

  • 这一关发现on事件和script都无法使用
  • 于是使用href
  • "> <a href=javascript:alert(1)>hack</a>

level6

  • href写成hREF就行了

level7

  • 双写绕过 但不懂为啥 用上一关的会自动加上双引号
  • "> <scriscriptpt>alert(1);</scriscriptpt>

level8

  • href 传入的 URI 中,也可以使用 HTML 字符实体。在打开链接时,字符实体也会被转换为对应的字符。
  • Html实体编码解码网站
  • 上面这是在线转换网站

level9

  • 发现只要包含http:// 就能成功放到href里
  • 所以构造javascr&#x69;pt:alert(1)*//http://*
  • 即使是注释也行

level10

  • 这一关是需要找到注入点
  • 发现有三个地方value没有值
  • 于是构造
  • test&t_sort=" onmouseover=javascript:alert(1) type "
  • type" 闭合了后面值为hidden的type
  • 让input框能显示出来

level11

  • Referer头修改
  • 可以看到有一个value等于referer的值
  • bp抓包
  • payload用回上一关的就行

level12

  • ua头修改,同样bp抓包即可

level13

  • cookie头,可以用浏览器的扩展来修改user的cookie值

level14

  • 网站失效,暂且跳过