CTFSHOW-PWN入门-前置基础(13-20)

pwn13

QQ20240801-213108

根据提示,使用gcc编译运行获得flag,gcc flag.c -o hello

QQ20240801-213309

flag:ctfshow{hOw_t0_us3_GCC?}

pwn14

QQ20240801-213352

阅读源代码,根据第10行代码得知文件名为key

QQ20240801-214636

使用gcc编译文件后,在当前目录下创建文件key,根据提示key为CTFshow,运行编译后文件,得到flag

QQ20240801-214922

flag:ctfshow{01000011_01010100_01000110_01110011_01101000_01101111_01110111_00001010}

pwn15

QQ20240801-215232

使用nasm生成flag.o文件,nasm -f elf64 flag.asm

ld -s -o flag flag.o,生成flag可执行文件

执行./flag得到flag

QQ20240801-215603

flag:ctfshow{@ss3mb1y_1s_3@sy}

pwn16

QQ20240801-215642

gcc flag.s -o flag

执行./flag获得flag

QQ20240801-215901

flag:ctfshow{daniuniuda}

pwn17

QQ20240801-220202

先使用nc连接,发现选项3是cat /ctfshow_flag,根据提示不要一直等,可能那样永远也等不到flag,使用IDA静态分析

QQ20240801-220519

发现选项3需要非常长的等待时间才能拿到flag,因此我们另寻他法

QQ20240801-220703

选项1和2都存在system后门函数,选项1system参数是id并不是/bin/sh,但是选项2我们发现system函数的参数是dest,而dest又是从buf中读取的,因此我们可以构造出/bin/sh

QQ20240801-220821

而选项4和选项5就没有什么用处了,选项四只起到提示的作用,而选项五用来退出程序

QQ20240801-220829

我们选择选项2,输入/bin/sh,然后ls,cat ctfshow_flag,得到flag

QQ20240801-221155

flag:ctfshow{1f651ad9-ae1f-412e-b97a-527d9d64b179}

pwn18

QQ20240801-221301

使用IDA打开程序,发现v4等于9就执行fake函数否则执行real函数

QQ20240801-221552

我们使用nc连接,输入9就直接出flag了,但是别着急,我们再重开容器,输入一个不等与9的数,发现没有flag,为什么呢?我们来看下fake函数和real函数的区别

QQ20240801-221731

QQ20240801-221847

利用搜索引擎查询之后发现,>和>>的区别是>>是在文件末尾追加字符串,而>是清空后新增内容,因此执行fake函数可以查看到flag,而执行real函数始终只显示flag is here。

QQ20240801-222323

QQ20240801-222332

flag:ctfshow{8f05bea8-f1db-4d23-9ff8-ebe2b2a4fa12}

pwn19

QQ20240802-073340

根据题目提示关闭了输出流,上网搜索1>&0可以把标准输出重定向到标准输入,执行命令pwd 1>&0,查看当前目录,返回了/,说明当前处于根目录

QQ20240802-074051

ls >&0查看当前目录下的文件,看到了ctfshow_flag

QQ20240802-074131

cat ctfshow_flag >&0,查看flag

QQ20240802-074247

flag:ctfshow{3358d79d-4dc7-4c77-bd5b-403bac7dc9fb}

pwn20

QQ20240802-075809

当RELRO为Partial RELRO时,表示.got不可写而.got.plt可写。
当RELRO为FullRELRO时,表示.got不可写.got.plt也不可写。
当RELRO为No RELRO时,表示.got与.got.plt都可写。

先使用checksec命令来查看RELRO的情况,No RELR表示.got与.got.plt都可写。

QQ20240802-080235

接着再来查看地址

readelf -S pwn

.got地址为0x600f18,.got.plt地址为0x600f28

QQ20240802-080333

flag:ctfshow{1_1_0x600f18_0x600f28}

  • 35
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值