首页 > 其他分享 >格式化字符串走过的坑 pwn109

格式化字符串走过的坑 pwn109

时间:2024-04-08 21:26:55浏览次数:23  
标签:返回 格式化 pwn109 地址 走过 字符串

格式化字符串走过的坑 pwn109

今天做的一道题有一个坑我调试半天终于打通了,格式化字符串的坑,确实不少,东西也比较多容易忘记,怎么说呢,功夫在平时,经验少了

老规矩先看一下保护

Full RELRO意味着got不能修改也就是不能通过格式化字符串漏洞来改got表,但是nx保护关闭了,也就是我们可以通过修改返回地址到我们写的shellcode上就好了

iad打开

选项2printf打印你写的数据(格式化字符串漏洞)选项1是往栈上写数据,而且他还把栈地址给你了,就不需要额外泄露了

首先计算一下我们输入的数据偏移

那既然有栈地址了还有偏移了直接构造payload

但是却失败了,怎么回事,难道我手工改失败了用工具再试一遍

依旧失败,这里我选择一步步去调试了,我首先怀疑返回地址填充的数据不够,因为ida静态毕竟没有动态更能体现返回地址的问题

奇怪的是返回地址是正确的,然后我选择3退出的时候看一下返回地址

发现返回地址并不是刚刚的地址而是这个地址,那么我们把找到的ret_addr + 0x10

成功了!!

也就是说刚刚手改是正确的,这里我建议最好自己手改几次,对这个原理理解透彻,才能更好的学习,只会不停的用工具,而不懂原理这样的学习是没有太大意义的

格式化字符串走过的坑........

标签:返回,格式化,pwn109,地址,走过,字符串
From: https://www.cnblogs.com/CH13hh/p/18122611

相关文章

  • strcat追加字符串以及其模拟实现
        如此处代码将arr2追加到arr1中的字符串后面。这样就要用两次循环达到字符串的效果,第一次循环是要找到arr1当中'\0'的位置,第二次循环就将src的字符串加入到dest斜杠0后的位置,直到*src==0,结束字符串的追加。#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#i......
  • 递归实现字符串长度的计算
        我们可以模拟实现strlen函数。传入指针arr时,进入函数,我们要判断该指针是不是空函数,防止空指针的出现,用到了断言assert。当一个数组元素没有走到‘\0’时,我们就要利用递归1+my_strlen(arr+1),arr+1是走向下一个数组元素。并且递归的使用一定要有条件的设置,否则会进......
  • JS中时间对象与时间的格式化
    newDate("2024-04-08T00:00:00")//输出MonApr08202400:00:00GMT+0800(中国标准时间)时间是正常的,没有多出来8个小时newDate("2024-04-0800:00:00")//输出MonApr08202400:00:00GMT+0800(中国标准时间)时间是正常的,没有多出来8个小时newDate()//MonAp......
  • 字符串进阶-字符串函数
    字符串进阶-字符串函数应用c++提供了大量的字符串函数,供我们在解题时使用。一、常用函数介绍1-长度(有返回值)a.size()或a.length()2-查找(有返回值)a.find("hello")//返回子串hello在a中第一次出现时开头字母h的下标a.find('h')//返回字符h在a中第一次出......
  • 字符串的扩展
    字符串的扩展字符的Unicode表示法ES6加强了对Unicode的支持,允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的Unicode码点。但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表示"\uD842\uDFB7"//"......
  • 字符串的新增方法
    字符串的新增方法String.fromCodePoint()ES5提供String.fromCharCode()方法,用于从Unicode码点返回对应字符,但是这个方法不能识别码点大于0xFFFF的字符String.fromCharCode(0x20BB7)//"ஷ"String.fromCharCode()不能识别大于0xFFFF的码点,所以0x20BB7就发生了溢出,最高......
  • 字符串哈希板子
    #include<iostream>#include<cstring>#defineMAX_SIZE100usingnamespacestd;classStringHash{public:intsize;char*array;char*array_forward;unsignedlonglong*pre_base;unsignedlonglong*hash_array;uns......
  • python学习--基础知识(字符串扩展)
    八、字符串扩展1、字符串的三种定义方式2、字符串的拼接3、字符串的格式化4、字符串格式化的精确度控制5、字符串格式化的快速方法6、字符串格式化--对表达式进行格式化......
  • python 字符串的操作
    #字符串拼接str1="Hello"str2="World"combined_str=str1+""+str2print(combined_str)#字符串重复str1="Python"repeated_str=str1*3print(repeated_str) #根据字符串索引取值str1="Hello"char=str1[1]#......
  • 两个字符串间的最短路径问题【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目-两个字符串间的最短路径问题给定两个字符串,分别为字符串A与字符串B。例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,映射成坐标系如下图。从原点(0,0)到(0,A)为水平边,距离为1,从(0,A)......