MailBox Step2
来源:互联网 发布:新三板网络销售合法吗 编辑:程序博客网 时间:2024/05/03 12:07
上次的mailbox还有一个step2,提示是目录文件下面还有一个flag文件,需要getshell。hint也给出了要ret2libc。那么题目意思已经很明白了。可惜我是一只渣,什么都不会。反复思考了一个星期还是没有结果。最后发现了一篇大神的writeup,也是差不多的题目。瞬间脑洞大开,会了。
上一次的step1已经找到了一个栈溢出的漏洞,但是其实程序还有一个漏洞。
.text:0804937C call get_input.text:08049381 mov dword ptr [esp], offset aTitle ; "Title:".text:08049388 call _printf.text:0804938D mov eax, [ebp+title].text:08049390 mov [esp], eax ; format <-直接print一个title
除了我这种渣渣,估计都应该知道这种有名的格式化字符串漏洞了吧。因为服务器上什么nx,aslr,所以还需要动态的计算system和\bin\sh的地址。不过有经验人应该都可以想到,程序入口点start函数会调用libc中的libc_start_main,然后再回调main函数。这样main函数的栈帧下方肯定有libc的地址。用printf的漏洞就可以打印出来。因为服务器已经挂了,所以不能把栈打印出来了。主要思路是
“%e”*45+”%x”
前面的是360个字节废数据,然后是call main的返回地址。在libc里面找到libc_start_main
env= dword ptr -6Chvar_68= dword ptr -68hvar_64= dword ptr -64hvar_54= dword ptr -54hvar_50= dword ptr -50hvar_48= byte ptr -48hvar_2C= dword ptr -2Chvar_28= dword ptr -28haddr_of_func= dword ptr 4 <--函数的第一个参数arg_4= dword ptr 8arg_8= dword ptr 0Charg_C= dword ptr 10harg_14= dword ptr 18h
看看start处的代码可以发现,其实就是main函数的地址,改成addr_of_func,往下找调用。
.text:00019A7F call [esp+6Ch+addr_of_func].text:00019A83 mov [esp+6Ch+env], eax.text:00019A86 call exit
可以看到刚才打印的返回地址就是指向这里的。libc的基地址就可以得到了。
base=ret_addr - 0x19A83
然后system和/bin/sh的地址就可以动态的算出来了。
addr_system = base + 0x40190
addr_str = base + 0x160A24
该找的东西都找到了,那么构造溢出数据就行了。
ret_addr = addr_system
ret_addr + 8 = addr_str
如何溢出的部分已经step1里面提及过了,这里就不说明了。
然后渣渣又来用c写代码了,写了快300行你伤不起啊!!!以后用心学python去。
代码太长我就不贴了(反正没人看)
PS:最后我已经getshell了,ls一下就在根目录下面。然后。。。。。
liunx下这么看文件来着,只用window的完全不知道啊!你能体会看着flag文件打不开的感觉吗?
- MailBox Step2
- QT step2
- step2-委托
- remove step2 billing information
- 自建博客历程 - Step2
- Step2 -- 工作环境配置
- CANoe CAPL语言Step2
- Angualr2 (step2) 概述
- TinySpring学习(Step2)
- Mailbox in Openvms
- Mailbox locked and ready
- live mailbox setting
- MailBox writeup(step1)
- mailbox的controller
- mailbox的client
- RTAI API---Mailbox functions
- AKKA 邮箱Mailbox
- 异步连接池整理step2
- xcode相对路径和绝对路径
- C#第二次作业—目标二(顺序图片阅读器)
- ArcGIS教程:TIFF图像拼接及几何校正
- oracle中从一个连续时间段中去除想要的的时间,
- Linux设备驱动篇——[I2C设备驱动-1]
- MailBox Step2
- unity3d 3d场景中人物的2d头像/血条位置计算
- NYOJ1100---WAJUEJI which home strong!
- unity所需的模型由来
- 当tableview的样式为grouped的时候上边有多一行白边——的解决办法(iOS调试)
- 成员指针(pointer-to-member)
- ORACLE9i_性能调优基础七(Using Resource Manager)
- 数据挖掘算法之关联规则挖掘(二)FPGrowth算法
- HDU ACM 2222->AC自动机模版题(入门题)