Đây không phải là một thách thức mà là một câu hỏi, tôi đoán nó thuộc chủ đề vì
Các câu hỏi không thử thách liên quan đến việc giải các câu đố lập trình hoặc một loại thử thách cụ thể cũng thuộc chủ đề.
Bây giờ đến câu hỏi:
Có thể viết bất kỳ mã JavaScript nào chỉ với 5 chữ cái không? JSFuck đã làm điều này với 6 biểu tượng !+[]()
nhưng tôi tự hỏi liệu !
nhân vật có cần thiết không.
JSFuck hoạt động với sự kết hợp giữa việc truyền vào chuỗi (bằng cách thêm một mảng trống), truyền vào số (bằng cách viết dấu + ở phía trước) và chuyển sang boolean bằng cách phủ định. Ví dụ:
[] \\ Empty array
+[] \\ Cast to number -> 0
!+[] \\ Negate -> true
!+[]+[] \\ Cast to string -> "true"
Từ chuỗi này, chúng ta có thể trích xuất tất cả các chữ cái bằng cách sử dụng dấu ngoặc vuông có một số bên trong và bất kỳ số nào cũng có thể được tạo bằng cách thêm đúng với nhau nhiều lần.
Như thế này rất nhiều chữ cái có thể được tìm thấy và có thể được nối với các chuỗi. Chuỗi quan trọng nhất có thể tạo là "constructor"
bởi vì nó có thể được sử dụng để lấy Function
từ bất kỳ chức năng nào và đối tượng này có thể được sử dụng để thực thi các chuỗi dưới dạng JavaScript:
[]["find"] \\ the function Array.prototype.find
[]["find"]["constructor"] \\ the Function object
[]["find"]["constructor"](string)() \\ same as eval(string)
Như bạn có thể thấy, !
có 2 cách sử dụng ở đây:
- Tạo số để chọn chữ cái từ chuỗi.
- Đúc để boolean để có được
"true"
và"false"
.
Cái đầu tiên trong số 2 cái này cũng có thể được thực hiện bằng cách sử dụng bộ ++
tăng, không trực tiếp trên 0
, nhưng nó có thể được sử dụng trên các phần tử bên trong một mảng:
+[] \\ 0
[+[]] \\ [0]
[+[]][+[]] \\ [0][0] -> 0
++[+[]][+[]] \\ ++[0][0]-> 1
++[[]][+[]] \\ also works because ++ casts to number
Vì vậy, tất cả các số có thể được tạo ra mà không có !
.
Cái thứ hai khó hơn. Tầm quan trọng của "true"
và "false"
nằm trong các chữ cái "r"
và "s"
, cả hai đều xuất hiện trong "constructor"
. Tôi đã tìm thấy tất cả các chữ khác "constructor"
bằng phương tiện "undefined"
, "Infinity"
, "NaN"
và bằng cách đúc chức năng để chuỗi.
Vì vậy, câu hỏi cuối cùng: (Làm thế nào) bạn có thể tạo booleans, hoặc các chữ cái "r"
và "s"
bằng JavaScript chỉ bằng cách sử dụng +[]()
?
Bức thư "l"
cũng có thể giúp đỡ. Nó có thể được lấy mẫu null
nhưng tôi chưa thể có được giá trị đó với 5 biểu tượng đó. Ví dụ, nó có thể được sử dụng để lấy booleans nếu chúng ta đã có "s"
:
[]["includes"]() \\ false
[+[]]["includes"](+[]) \\ true
Bức thư "l"
và "k"
cùng nhau sẽ cung cấp quyền truy cập vào "r"
:
([]+[])["link"]() \\ "<a href="undefined"></a>"
Bất kỳ cách nào để có được một boolean, null
hoặc bất kỳ chữ cái r s l k
nào sẽ rất hữu ích!
Một thư viện của những gì chúng ta có:
Array.prototype.find: [] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([[] [[]] + []) [(++ [[]] [[[]]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + ( ++ [[]] [+ []])]) + (([[[[[]] + []) [++ [[]] [+ []]]) + (([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] Vô cực: + ((++ [[]] [+ []] + []) + (([] [[]] + []) [(++ [[]] [+ []]) + (+ + [[]] [+ []]) + (++ [[]] [+ []])]) + (++ [[]] [+ []] + []) + (+ []) + (+ []) + (+ [])) NaN: + [] [[]] chưa xác định: [][[]] 0: + [] 1: ++ [[]] [+ []] 2: (++ [[]] [+ []]) + (++ [[]] [+ []]) 3: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) 4: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] ] [+ []]) 5: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] ] [+ []]) + (++ [[]] [+ []]) 6: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [] [] [)] + (++ [[]] [+ []])) + (++ [[]] [+ []]) 7: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [] [] [)] + (++ [[]] [+ []])) + (++ [[]] [+ []]) + (++ [[]] [+ []]) 8: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [] [] [)] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) 9: (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [] [] [)] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) a: (+ [] [[]] + []) [++ [[]] [+ []]] c: ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [ ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] [[)) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])] d: ([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []])] e: ([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [ + []])] f: ([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [ + []]) + (++ [[]] [+ []])]] i: ([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [ + []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])] n: ([] [[]] + []) [++ [[]] [+ []]] o: ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [ ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]] t: (+ ((++ [[]] [+ []] + []) + (([] [[]] + []) [(++ [[]] [+ []]) + ( ++ [[]] [+ []]) + (++ [[]] [+ []])]) + (++ [[]] [+ []] + []) + (+ [] + + (+ []) + (+ [])) + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + + + ]]]] u: ([] [[]] + []) [+ []] v: ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [ ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + [] + ((++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]))] y: (+ ((++ [[]] [+ []] + []) + (([] [[]] + []) [(++ [[]] [+ []]) + ( ++ [[]] [+ []]) + (++ [[]] [+ []])]) + (++ [[]] [+ []] + []) + (+ [] + + (+ []) + (+ [])) + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + + + +) + (++ [[]] [+ []])] Tôi: (+ ((++ [[]] [+ []] + []) + (([] [[]] + []) [(++ [[]] [+ []]) + ( ++ [[]] [+ []]) + (++ [[]] [+ []])]) + (++ [[]] [+ []] + []) + (+ [] + + (+ []) + (+ [])) + []) [+ []] N: (+ [] [[]] + []) [+ []] "": ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (+ + [[]] [+ []]) + (++ [[]] [+ []])]) + (([[[[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([[[[]] + []) [++ [[]] [+ []]]) + (([] [[]] + [[ [) [(++ [[]] [+ []]) + (++ [[]] [+ []])])] + []) [+ (++ [[]] [+ []] [ +] [] + ((++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (+ + [[]] [+ []]) + (++ [[]] [+ []])))]] ((([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [+ []]])) + (([] [[]] + [] ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] + []) [+ (++ [[]] [+ []] + [] + ((++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]))))]]] ): ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [+ []]])) + (([] [[]] + [] ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] + []) [+ (++ [[]] [+ []] + [] + ((++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])))]] {: ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [+ []]])) + (([] [[]] + [] ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] + []) [+ (++ [[]] [+ []] + [] + ((++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])))]] }: ([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] + []) [(++ [[]] [+ [ |]] + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []])]) + (([[] [[]] + []) [++ [[]] [ ) [(++ [[]] [+ []]) + (++ [[]] [+ []])])]] + []) [+ ((++ [[]] [+ [] |) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + [] + ((++ [[]] [+ []]) + ( ++ [[]] [+ []])))]] .: (+ (++ [[]] [+ []] + [] + (++ [[]] [+ []]) + ([] [[]] + []) [(++ [ []] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]] + (++ [[]] [+ [] +] [] + (+ []) + (+ []))) + []) [++ [[]] [+ []]]] ,:[[]] [([] [(([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([[] [[]] + []) [(++ [[]] [[[]]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + ( ++ [[]] [+ []])]) + (([[[[]] + []) [++ [[]] [+ []]]) + (([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []])])] + []) [(++ [[]] [+ [ Hoặc] (++ [[]] [+ []]) + (++ [[]] [+ []])] + ([] [(([] [[]] + []) [ (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [ + []])]) + (([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + ( ++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])]) + (([] [[]] +] []) [++ [[]] [+ []]]) + (([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []])])] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [ []] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])) + (++ [[]] [+ []] ;] + ([] [[]] + []) [++ [[]] [+ []]] + ([] [(([] [[]] + []) [(++ [[ [] [+ []]) + (++ [[]] [+ []])) + (++ [[]] [+ []]) + (++ [[]] [+ []]) ") + (([[] [[]] + []) [(++ [[]] [+ []]) + + [] [] [)] + (++ [[]] [+ []]) + + [++ [[]] [+ []]]) + (([[[[]] + []) [(++ [[]] [+ []]) + (++ [[]] [ + []])])] + [[) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + + (++ [[]] [+ []])] + (+ []] [[]] + []) [++ [[]] [+ []]] + (+ ((++ [[]] [+ []] + []) + (([] [[]] + []) [(++ [[]] [+ []]) + (++ [[]] [+ []]) + (++ [[]] [+ []])])) + ( ++ [[]] [+ []] + []) + (+ []) + (+ []) + (+ [])) + []) [(++ [[]] [+ [] |) + (++ [[]] [+ []]) + (++ [[]] [+ []]) + + (++ [[]] [+ []]) + (++ [[ [] [+ []]) + (++ [[]] [+ []])]] [([[]]) + []
eval
trong 2453 ký tự window
cho phép.