首页 > 其他分享 >axb_2019_fmt32

axb_2019_fmt32

时间:2022-09-26 15:36:14浏览次数:47  
标签:char Repeater format read fmt32 axb libc 地址 2019

axb_2019_fmt32

Involved Knowledge

  • format string

Checksec

    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x8048000)

Program

Hello,I am a computer Repeater updated.
After a lot of machine learning,I know that the essence of man is a reread machine!
So I'll answer whatever you say!
Please tell me:123
Repeater:123

Analyze

main
int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
  char s[257]; // [esp+Fh] [ebp-239h] BYREF
  char format[300]; // [esp+110h] [ebp-138h] BYREF
  unsigned int v5; // [esp+23Ch] [ebp-Ch]

  v5 = __readgsdword(0x14u);
  setbuf(stdout, 0);
  setbuf(stdin, 0);
  setbuf(stderr, 0);
  puts(
    "Hello,I am a computer Repeater updated.\n"
    "After a lot of machine learning,I know that the essence of man is a reread machine!");
  puts("So I'll answer whatever you say!");
  while ( 1 )
  {
    alarm(3u);
    memset(s, 0, sizeof(s));
    memset(format, 0, sizeof(format));
    printf("Please tell me:");
    read(0, s, 256u);
    sprintf(format, "Repeater:%s\n", s);
    if ( strlen(format) > 0x10E )
      break;
    printf(format);
  }
  printf("what you input is really long!");
  exit(0);
}

这里注意程序定义s变量时的大小和通过read去接收的大小是不足以形成stackoverflow这个漏洞的

 char s[257];
 read(0 , s , 256u);

同时这里有一个format string漏洞,我们可以在这里来从栈上泄露或者写入一些东西

sprintf(format, "Repeater:%s\n", s);

Solution 1

观察main函数结构我们可以构造这么一种我们通过format string来泄露出函数真实地址,拿到libc基址,system,然后通过fmtstr_payload将read函数的got表地址改成system,再搭配one_gadget拿到shell

泄露read函数地址

payload = b'a' + p32(read_got) + %8$s

这里因为用户的输入在栈上的偏移为7,这里也就是'a'的偏移为7,那么read的got表地址偏移则为8了,通过%8$s的方式来泄露read函数的真实地址

拿到read函数真实地址后减去偏移则为libc的基址,本来我是用LibcSearcher来打的,但是无奈libc库不太全,拿到的libc基址有问题,所以手动拿read的地址去找到对应的libc版本

下一步就是找对应的gadgets了

[0x3a80c , 0x3a80e , 0x3a812 , 0x3a819 , 0x5f065 , 0x5f066]

这道题的话0x3a812能打通

其他solution后续进行补充

标签:char,Repeater,format,read,fmt32,axb,libc,地址,2019
From: https://www.cnblogs.com/m1nus/p/16731079.html

相关文章

  • CSP201912_3
    CSP201912_3目录CSP201912_3题目思路Code题目化学方程式思路大模拟,考虑先整体以等号为界,将方程式分为左串与右串。分别针对两个子串,以加号为界分离成独立的化合物,在......
  • [RoarCTF2019]黄金6年
    [RoarCTF2019]黄金6年下载下来是一个视频,用010打开视频(mp4)文件,最后面有base64编码解密后发现是rar文件,将base64编码用python进行输出importbase64code="UmFyIRoHAQAz......
  • 做题记录整理dp8 P5665 [CSP-S2019] 划分(2022/9/23)
    P5665[CSP-S2019]划分这题其实并不是题单的第八题,但我现在一做完题目马上就想来(测出题人的码)整理题目因为这题是真的恶心首先朴素的n三次方dp,枚举上一个端点,以及上上......
  • 2019 ICPC Malaysia National C. I Don't Want To Pay For The Late Jar!
    2019ICPCMalaysiaNational翻译岛田小雅C.IDon'tWantToPayForTheLateJar!出题人IT支持部门的Nina小姐需要你解决一个生活中的小问题。她可以在任何时刻......
  • IDE//VS//VS2017,VS2019没有代码提示的问题解决
    IDE//VS//VS2017,VS2019没有代码提示的问题解决小小菜鸡于2022-07-2815:24:44发布235 收藏文章标签:idec++visualstudio版权开始菜单-->所有程序–>VisualStudi......
  • VS2019编译项目出现:“错误: 值不能为 null”“参数名: path1”问题
    问题:VS2019编译项目出现以下问题:1>错误:值不能为null。1>参数名:path1解决方法:解决方案资源管理器里卸载项目,再重新加载。......
  • P5658 CSP-S2019括号树
    [CSP-S2019]括号树(傻逼绿题题目背景本题中合法括号串的定义如下:()是合法括号串。如果A是合法括号串,则(A)是合法括号串。如果A,B是合法括号串,则AB是合法括......
  • JAXB 使用记录
    JAXB使用记录目录JAXB使用记录参考资料什么是JAXB?使用1.基本使用1.1编写User类1.2编写测试类1.3验证2改进版2.1JAXBUtil工具类2.2编写XML对应类2.2.1root......
  • SQL2008至SQL2019缩小日志
    USEabframeworkf2DECLARE@LogFileLogicalNamesysnameSELECT@LogFileLogicalName=NameFROMsys.database_filesWHEREType=1PRINT@LogFileLogicalNameDBCCSHRINK......
  • mosquitto在windows10中VS2019进行编译出lib和dll
    mosquitto在Windows编译需要环境如下:1、cmake,安装Windows版的cmake。2、VS2019安装;3、openssl安装;4、mosquitto源码;5、windows版的pthread下载库。其中的cmake和vs20......