buuctf pwn 19-23

2023-02-04 WP

week5

0x00 T1 others_shellcode

第五周提交wp辽,祝福大家元宵快乐,幸福安康。
题目来源是buuctf pwn的第五行第三个题,others_shellcode。

一道送分题,但是需要好好理解题意。

0x01 wp

第一步,checksec

虽然全开保护了,但是不用慌张!

第二步,反编译+静态分析

在这里插入图片描述

跟进看一下函数"getshell"如下。

在这里插入图片描述

不明白,我们具体看看汇编如下,具体注释如下,文章不赘述。

在这里插入图片描述

第三步,写exp

从上述得知,"getshell()"直接运行了execve("/bin/sh",0,0)
#如注释有问题欢迎指出!!
故直接nc获得flag。
之所以叫"others_shellcode",大概意思是之前用的都是
system("/bin/sh")
#所以这次想给我们看点不一样的吧~

nc拿到flag

在这里插入图片描述题目看似简单但是暗藏玄机,不能轻易错过哦~

0x00 T2 ciscn_2019_ne_5

是下一题。

0x01 wp

第一步,checksec

在这里插入图片描述

第二步,反编译+静态分析

在这里插入图片描述

只看这里还不明白,看看别的函数。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

发现"Addlog(int a1)"函数可以录入128字节的数据,而在"GetFlag(char *src)"中,
将src作为指针传入字符串,且实行'strcpy'将src复制到dest,
dest长度只有48,而可以复制128过去,则可以在这里实现溢出。

在这里插入图片描述

我们看到有现成的"system"函数,所以在需要"/bin/sh"就行了。
根据wp,只有"sh",也是可以的!(新知识点!)
所以构造
system("sh")
即可!

第三步,写exp

在这里插入图片描述

exp思路便是,先输入正确的密码,然后传入1,运行'Addlog'函数,再传入我们的payload,
最后运行'getflag'函数,拿到权限。

最后一步,运行拿到flag

在这里插入图片描述

0x00 T3 铁人三项(第五赛区)_2018_rop

下一题

0x01 题解

1.checksec

在这里插入图片描述这次直接运行看看,就是read函数应该吗,然后打印个你好世界。

2.静态分析

在这里插入图片描述
在这里插入图片描述

果然,这题没后门函数,有read,那就泄露read打ret2libc即可。

4.写exp并且运行拿flag

在这里插入图片描述
先泄露一下地址。ok,去查好地址写好 exp如下。
在这里插入图片描述
拿flag。
在这里插入图片描述
这题就是很传统的ret2libc了,64位的。

0x00 T4 bjdctf_2020_babyrop

0x01 题目来源

下一题捏。

0x02 题解

1.分析文件

第一步:checksec 文件名

用checksec看看这个文件的保护情况。
在这里插入图片描述

64位,无pie和canary,安心

2.IDA反编译

第一步:拖入ida静态分析

在这里插入图片描述

有点中二但是我喜欢。和上一题差不多看起来。

第二步:看看栈的偏移量

在这里插入图片描述

可见偏移量为(0x20+0x08)
那还等啥,直接ret2libc!

2.exp

在这里插入图片描述
泄露得到地址。
但是由于puts 690的libc太过古早,搜索半天没搜到,libcsearcher又用不了,卡了很久,最后被群里一位大哥解救,远程感谢一下Byron~
我当时找了下puts 690的libc搜到了这个wp。
在这里插入图片描述并且在网站都找不到这个libc,于是Byron为我提供了下面这些信息。


这是他给我提供的,但是这个libcbase引起了我的兴趣。
在这里插入图片描述
最后问题解决,拿到flag。
在这里插入图片描述因为这个卡了一晚上也是够蠢的……

0x00 T5 bjdctf_2020_babystack2

依然是下一题!

0x01 wp

第一步,checksec

在这里插入图片描述

第二步,反编译+静态分析

在这里插入图片描述

看到if(xxxx>xxxx)基本可以知道是整数溢出了,且下面有read,
显然此题思路就是绕过if判断并且read足够多的数据达成一处运行后门。

在这里插入图片描述

后门函数

在这里插入图片描述
关于整数溢出,就是指大到最大以后他会变到最小的数(这和二进制溢出有关系,比如1111最大了,1111+1就会变成10000,但是人家只会存后四位,所以右边为了0000,不管多大字节的都同理)

由于输入时是signed,使用时是unsigned,这个漏洞就可以利用了。因为signed的负数(如1111是-1),在unsigned是很大的数字(如1111是15),字节越多越大。

第三步,写exp

在这里插入图片描述由于发现存放的int是四个字节,定为long int,故传入singed最大值加一,达到整数溢出的效果,随后即是ret2text
在这里插入图片描述
拿下flag。

尾声:别走!一点小喜悦

刚才提到'libc-database'吸引到了我,于是安装了一波!方法如下,大家一起看看
1. git clone https://github.com/niklasb/libc-database
2. cd libc-database
3. ./get

使用方法:
在这里插入图片描述
参考原文点击这里!
安装好了,我们试试看吧!

在这里插入图片描述
在这里插入图片描述
不过原本那个查不到,可能真的太老了,没办法啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值