如果你想要在網頁上產生一個新的 window,大概就只有兩個選擇,一個是利用 iframeembedobject 這些標籤將資源嵌入在同個頁面上,而另一個選擇則是使用 window.open 新開一個視窗。

身為前端開發者,我相信大家對這些都不陌生,可能有用過 iframe 嵌入第三方的網頁,或是嵌入一些 widget,也有用過 window.open 開啟新的視窗,並透過 window.opener 跟原來的視窗溝通。

但站在資安的角度來看,其實 iframe 有不少好玩的東西,無論是現實世界或是在 CTF 內都經常出現,因此我想透過這篇記錄近期學到的一些特性。

閱讀更多

在 JavaScript 的幾個資料型別中,Number 是非常常用的一個,而且有些小地方需要特別注意,不然很容易寫出有 bug 的程式碼。

這篇會帶大家看一些案例,有些是假想的情境,也有些是我自己碰過的問題,在每個案例繼續往下講解之前,大家也可以試著把自己帶入情境,想想看自己知不知道問題的成因,又該如何避免。

閱讀更多

上個週末除了有我上一篇心得寫的 SUSCTF 2022 以外,還有另外一個 TSJ CTF,裡面也有很多好題,因為時間不太夠所以我只有挑了自己比較有興趣的題目來看,就是標題說的這題 Nim Notes,最後沒解開(還差得遠呢),但解法十分有趣,因此寫一篇來記錄一下官方解法。

作者(maple3142)的 writeup 在這:https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes

閱讀更多

這個假日有不少 CTF,跟著隊伍 SU 一起打了 SUSCTF 2022,這篇簡單記錄一下幾個我有參與的題目的心得。

會講到的題目列表如下:

  1. web/fxxkcors
  2. web/ez_note
  3. web/baby gadget v1.0
  4. web/baby gadget v1.0’s rrrevenge
  5. web/HTML practice

閱讀更多

JavaScript 裡面一共有幾個資料型別?又分別是哪些?

要談型別之前,我們應該要先知道 JavaScript 中一共有幾種型別,並且對每一種型別都有最基本的理解。在文章開始之前,你也可以自己先數數看,再來跟我對答案,看是不是正確的。

由於 JavaScript 是會進化的,這篇的型別會以本文寫作時最新的 ECMAScript 2021 為準,底下如果有提到「spec」,指的都是 ECMAScript 2021 language specification

閱讀更多

我認為在理解 JavaScript 這個程式語言的時候,還需要認識到「執行環境(runtime)」這件事情,你心中的架構圖才會完整。有許多人並沒有意識到這一環,導致對於 JavaScript 或是一些技術的理解有認知上的差異;因此這一篇,就讓我們好好來談談執行環境。

附註:除了 runtime 叫做執行環境以外,execution environment 也叫做執行環境,但這兩個是完全不同的東西。為了避免歧義,底下會盡量用原文 runtime 這個詞。

另外,runtime 有許多意思,這邊的 runtime 比較像是 runtime environment 的意思。

閱讀更多

如果你不知道什麼是 CTF,可以參考我之前寫過的:該如何入門 CTF 中的 Web 題?,裡面有簡單介紹一下什麼是 CTF,以及一些基本的題型。

去年的 DiceCTF 2021 我有認真玩了一下,最後解出 6 題 web 題,心得都在這邊:DiceCTF 2021 - Summary。今年的 DiceCTF 我有看了一下,直接被電爆,難度完全是不同等級。

這次的 Web 題一共有 10 題,1 題水題 365 隊解開,另一題比較簡單一點 75 隊解開,其他 8 題都只有 5 隊以內解開,其中還有一題沒人解開。

身為一個喜歡 web 以及 JS 相關冷知識的人,這是一個很好的學習機會,透過賽後放出的 writeup 來學習各種技巧。底下不會有所有 web 題的筆記,只會有我關注的題目。

閱讀更多

如果你的網站想要搶先體驗瀏覽器還沒有正式上線的新功能,該怎麼做呢?

通常這些功能已經做好了,只是沒有開放而已,因此瀏覽器都會提供一些可以開關的 flag,只要把開關打開,就能夠搶先體驗到新功能,但我們通常不太可能叫使用者自己把開關打開。

因此,Chrome 提供了一個機制叫做 origin trials,你可以在網站上註冊,取得一組 token,接著只要設置好以後,如果使用者是用 Chrome 造訪你的網站,那就會開啟新功能,讓你的網站可以使用。

這篇就來簡單介紹一下這個機制該如何使用。

閱讀更多

談完了 JavaScript 的歷史以及包袱以後,我們來談談 JavaScript 本身。

不知道大家有沒有想過一個問題,當你看到一本 JavaScript 書籍或是教學文章的時候,你要怎麼知道作者沒有寫錯?要怎麼知道書裡講的知識是正確的?就如同標題所說,會不會你以前知道的 JavaScript 知識其實是錯的?

因為作者常寫技術文章,所以就相信他嗎?還是說看到 MDN 上面也是這樣寫,因此就信了?又或是大家都這樣講,所以鐵定沒錯?

有些問題是沒有標準答案的,例如說電車難題,不同的流派都會有各自認可的答案,並沒有說哪個就一定是對的。

但幸好程式語言的世界比較單純,當我們提到 JavaScript 的知識時,有兩個地方可以讓你驗證這個知識是否正確,第一個叫做 ECMAScript 規格,第二個大家可以先想想,我們待會再提。

閱讀更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×