作者hth9494 (掰掰惹 仙度瑞拉)
看板Ajax
标题[ js ] 请问这段程式语法代表的意思
时间Fri Aug 6 20:35:44 2021
大家好
最近在学习网站弱点的时候,发现一段程式,但不太明白其语法的涵义
因此想请问一下这种写法的意思是什麽
以下是lab的连结
https://portswigger.net/web-security/cors/lab-internal-network-pivot-attack
点开solution後就会有程式码跑出来
我有困惑的地方是在Step1中的
for(i=1;i<=255;i++){
q.push(
function(url){
return function(wait){
fetchUrl(url,wait);
}
}('
http://192.168.0.'+i+':8080'));
}
q.push(function(...){...}('
http://192...'));
这一段function(...){...}後面怎麽又跟了一个('
http://192...'),不太清楚这个要怎麽理解
第一次看见function(){}()这样的语法
後面这个('
http://192...')是参数吗,是什麽的参数要传去哪里
另外还有下面一点的
if(q.length)q.shift()(i*100);
q.shift()()这样的语法也是第一次见
後面的(i*100)也是参数吗
以上两点是我困惑的地方
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.146.16 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1628253351.A.697.html
1F:→ lynx: 看起来是IIFE,但少了个括号,这样能执行吗@@ 08/06 20:47
2F:→ hth9494: 我有直接把整段程式复制到exploit server执行 是有结果的 08/06 20:52
3F:→ BugofBook: 你可以找"high order function" 08/06 22:30
4F:→ BugofBook: 大多是有react 底子的工程师会这样写。 08/06 22:33
5F:→ BugofBook: 是要找“curry javascript”才对 08/06 22:36
6F:推 microloft: IIFE 在表达式 (expression) 中不用括号也可以执行 08/06 22:50
7F:推 microloft: 应该说加括号本来就是要让它变成表达式 08/06 22:53
8F:→ lynx: 谢谢楼上 08/06 23:25
9F:→ horsekit: 这应该跟react没关系 个人不爱这种写法 也很少看到在回 10/11 14:23
10F:→ horsekit: 圈用IIFE 很难阅读 10/11 14:23