抱歉给大家带来这一跑JS盲区,但是不得不说,JSFuck方法已经成为Web安全领域中的一个重要话题。如果你还未读过我们的前两篇文章“别跟我来JSFuck”和“别跟我来JSFuck:第二部分”,别忘了在读完本文之后补一下啊!

接下来,我们将继续介绍新的JSFuck技巧。我们前面已经涉及了常见的字符转换、数组创建和函数构造,但是还有一些非常有用的技巧,可以帮助您更好地使用JSFuck进行攻击。

第一个技巧是“join削减”。在JSFuck中,当我们已经创建了一个数组时,我们可以使用join方法来将数组转化为字符串。例如,我们可以使用以下代码将数字1转化为字符串:

var arr = [1];

var str = arr.join(”);

但是在某些情况下,我们只需要使用该数组中的一个元素,那么我们如何避免将整个数组转化为字符串呢?这便需要使用“join削减”技巧。我们可以构造以下代码:

var arr = [1];

var str = arr.join()[0];

这样,我们只需将数组转化为字符串并获取第一个字符即可。这个技巧特别适用于我们的payload需要特定字符,但是我们又需要从JSFuck中获取该字符。

另一个很有用的技巧是使用“位运算”。在我们攻击目标页面时,可能需要进行一些计算和操作。如果我们使用JSFuck进行攻击,如何进行这些计算和操作呢?这时候“位运算”技巧就派上用场了。以下是一些例子:

将数字6转化为二进制:(6).toString(2)

将二进制1010转化为十进制:parseInt(‘1010’, 2)

取整:(3.14 | 0)

这些都是JavaScript中的常规操作。但是,在使用JSFuck时,我们需要将它们转化为JSFuck语言。以下是转化后的代码:

将数字6转化为二进制:([]+{})[+[!+[]+!+[]]+[+[]]+[+!![]]+[!+[]+!+[]+!+[]]]

将二进制1010转化为十进制:[]+[][[]-~[]]+({}+[]) [!+[]+!+[]+!+[]]+([]+{}) [!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+([][[]]+[]) [!+[]+!+[]+!+[]]

取整:([]+{})[+[!+[]+!+[]]+[+[]]+[+!![]]+[!+[]+!+[]+!+[]]]

通过使用位运算和其他技巧,我们可以在JSFuck语言中轻松实现诸如加法、减法、乘法、除法等操作。

总的来说,在Web应用程序中,我们需要使用JSFuck技术进行攻击和提高我们的安全性。我们需要了解常见的字符转换和数组构造技巧,以及一些高级技巧,例如join削减和位运算。当我们掌握了这些技巧后,我们就可以更加轻松地在JSFuck语言中编写出更有效的代码。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/