首页 > 其他分享 >BUGKU_PWN_OVERFLOW2_WP

BUGKU_PWN_OVERFLOW2_WP

时间:2023-06-10 19:23:53浏览次数:46  
标签:bin BUGKU RDI OVERFLOW2 system 地址 sh PWN rdi

WP_OVERFLOW2

 

拿到程序,首先放到我们的kali里面看看是多少位的程序,然后在看看有没有什么安全属性

64位程序,并且开启了RELRO,NX

也就是说,这道题我们需要使用ROP绕过

 

使用ida64打开这个程序,对这个程序的伪代码进行分析

 

 

首先看看main函数

 

发现最开始定义的buf是32个字节

然后在memset中讲buf给清空了,然后read函数讲100字节的数据丢给了buf,这里可以产生栈溢出漏洞

 

我们在函数列表中可以发现我们无法找到/bin/sh这个函数,这里有两个方法可以找到bin/sh

  1. shift+F12,可以找到一些关键词
  2. 使用ROPgadget进行过滤

 

我们看第一种方法的效果

 

然后我们在看到第二种方法的效果

 

知道了/bin/sh的地址以后

我们还需要找system的地址

 

现在我们有了system的地址,/bin/sh的地址也有的,我们要将/bin/sh的地址传递给system需要知道RDI寄存器的地址

这里是这样解释的

system()函数的第一个参数需要通过RDI寄存器传递。如果没有使用pop rdi; ret的ROP gadget,就无法将/bin/sh字符串的地址加载到RDI寄存器中,也就无法调用system()函数。

 

这里我们需要继续使用到ROPgadget了

 

为什么是POP rdi而不是直接rdi

原因:pop rdi 是一条汇编指令,它的作用是将栈顶的值弹出并存储到寄存器 RDI 中。而 rdi 是 RDI 寄存器本身。

 

Exp构造:

 

标签:bin,BUGKU,RDI,OVERFLOW2,system,地址,sh,PWN,rdi
From: https://www.cnblogs.com/AnimeBucket/p/17471781.html

相关文章

  • 2023年第三届陕西省大学生网络安全技能大赛-pwn-may be all
    2023年第三届陕西省大学生网络安全技能大赛-pwn-maybeall?前言校队丢了两道题给我,看了看都是简单题,简单做了做。不知道具体叫什么名,就用pwn1、pwn2代替了。pwn1简单的格式化字符串泄露,除了远程docker的变量偏移不一样之外,没什么好说的。(出题人的docker可能有问题#!/usr/bin......
  • 攻防世界_PWN_stack2
    本文通过结合其他师傅的思路以及自己的一些理解完成。希望在记录自己所学知识的同时能够帮助有同样疑惑的人。pwn入门新手一个,如果有说错的地方请师傅们多多包涵0x00前置知识本题关键汇编指令:mov指令和lea指令以及ret指令movmov指令的功能是传送数据,它可以把一个操作数的值......
  • pwn1_sctf_2016
    先检查一下开了什么保护机制打开32位ida看看这个是啥鸭,像这种c++的代码最难看了,只能一个函数一个函数的百度我在这边简述一下,这些函数一大串就是实现了把s数组中的I整体替换成了you,其他的就没了,然后我们先去找找有没有后门函数之类的找到了一个叫做get_flag的函数,打开一看......
  • buuctf ciscn_2019_n_5 pwn ret2shellcode
    首先checksec查看保护策略,没有开栈不可执行NX,考虑构造shellcodeArch:amd64-64-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXdisabledPIE:NoPIE(0x400000)RWX:HasRWXsegments查看反编译代码,可以看......
  • 从0到1:CTFer成长之路-PWN篇
    72217_格式化字符串不在栈上的利用方式格式化字符串不在栈上的利用方式,参数在.bss段,不在栈上条件:需要多次可输入参数voidvuln(){while(strcmp(chr,"bye")){gets(chr);printf(chr);}}在栈上找到一个利用链a->b->c,另一个指针p->0x4005d0,......
  • kernel pwn 从 0.5 到 0
    xman2020-level1注册了一个baby驱动,在sub_0中存在栈溢出,可以将0x100的用户数据copy到内核栈上,缓冲去到rbp距离为0x80。什么保护没开直接ret2user......
  • pwn刷题笔记
    jarvisoj_level2(ret2text)checksec检查保护机制,开启了NX。vulnerable_function函数处存在栈溢出漏洞:buf只能存放0x88个字节,但可以读入0x100个字节。system函数plt地址:0x8048320ida查看字串,“/bin/sh”地址:0x804A024构造payload#!/usr/bin/envpython3frompwnimport*io......
  • pwntools
    PwntoolsCheatsheet(github上薅的)(方便自己查找)ProgramInteractionEnvironmentandContextsLoggingandOutputEncoding,PackingandUtilityAssemblyandShellcraftELFs,StringsandSymbolsReturnOrientedProgrammingSROPandSigreturnFramesFormatStringEx......
  • pwnable passcode 10pt
    题目在[email protected](pw:guest)先看passcode.c:#include<stdio.h>#include<stdlib.h>voidlogin(){intpasscode1;intpasscode2;printf("enterpasscode1:");scanf("%d",passcod......
  • pwn刷题笔记(格式化字符串)
    攻防世界:CGfsbchecksec查看保护机制,开启了NX和Canary,32位ELF。反汇编代码如下:intmain(){charbuf[0x7E-0x76];ebp-7Eshortintanonymous_0;ebp-76chars[0x74-0x10];ebp-74intanonymous_1;ebp-10anonymous_1=gs:14h//g......