进入远端运行,

废话不多说,下载下来分析。

根据提示,编译一下子。

知道问题了。

想象着,输入的值到了passcode1和passcode2的值作为地址的地方,passcode1处刚输入值时,程序终止,百度了下,错误原因是访问了不可访问的内存,此时passcode1的随机地址emmmmm不可操作咯。

所以咯,想个其他办法,啥子嘞?

大佬说,用Got表,它是全局偏移表,记录了程序在链接后的函数重定位地址信息,以后函数再调用,其地址就是从这里找到。

好嘞,看到welcome函数的超长name变量没,可以想象覆盖passcode1的值为fflush或printf的地址(这里以printf为例),然后scanf时,将printf的got中对应定位地址变为程序中system("/bin/cat flag");的地址。这样,程序运行到scanf后的printf时,其实就跳转到system("/bin/cat flag")地址处执行此代码咯。跳转语句执行代码,真神奇,got挺强大滴,但linux添加了保护机制PIE,当此保护没开时就能肆无忌惮了,咩哈哈。

可以蹂躏,0804a000 R_386_JUMP_SLOT   printf@GLIBC_2.0。

真的能蹂躏。

0x080485e3 <+127>: mov DWORD PTR [esp],0x80487af
0x080485ea <+134>: call 0x8048460 <system@plt>

看看最初始的覆盖passcode1的情况,看代码,welcome和login函数的ebp一样,结合IDA,name(ebp-0x70)呢,

passcode1(ebp-0x10)呢,

emmm,相差96字节,passcode1是4字节,刚好占用够了name的100字节。所以,

python -c "print 'a'*96+'\x00\xa0\x04\x08'+'\n'+'134514147'+'\n'" | ./passcode

欧克,成功

pwnable.kr-passcode-witeup的更多相关文章

  1. pwnable.kr的passcode

    前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下 ...

  2. 【pwnable.kr】passcode

    pwnable从入门到放弃,第六题. ssh passcode@pwnable.kr -p2222 (pw:guest) 完全是‘&’的锅. #include <stdio.h> ...

  3. pwnable.kr之passcode

    使用ssh passcode@pwnable.kr -p2222登录到远程服务器, ls -l 查看目录下的文件, -r--r----- root passcode_pwn Jun flag -r-x ...

  4. pwnable.kr col之write up

    Daddy told me about cool MD5 hash collision today. I wanna do something like that too! ssh col@pwnab ...

  5. 【pwnable.kr】col

    pwnable从入门到放弃第二题, ssh col@pwnable.kr -p2222 (pw:guest) 同样是登录,然后看到了col.c.col.flag三个文件,读一下col.c #inclu ...

  6. pwnable.kr bof之write up

    这一题与前两题不同,用到了静态调试工具ida 首先题中给出了源码: #include <stdio.h> #include <string.h> #include <st ...

  7. pwnable.kr brainfuck之write up

    I made a simple brain-fuck language emulation program written in C. The [ ] commands are not impleme ...

  8. pwnable.kr login之write up

    main函数如下: auth函数如下: 程序的流程如下: 输入Authenticate值,并base64解码,将解码的值代入md5_auth函数中 mad5_auth()生成其MD5值并与f87cd6 ...

  9. pwnable.kr详细通关秘籍(二)

    i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...

  10. pwnable.kr simple login writeup

    这道题是pwnable.kr Rookiss部分的simple login,需要我们去覆盖程序的ebp,eip,esp去改变程序的执行流程   主要逻辑是输入一个字符串,base64解码后看是否与题目 ...

随机推荐

  1. LDAP & Implentation

    LDAP: LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需 ...

  2. java web开发环境tomcat安装配置

    1.下载jdk8并安装 2.下载tomcat windows环境下的免安装版zip包 3.设置两个环境变量 4.在tomcat的bin路径下双击startup.bat 启动tomcat服务器 5.使用 ...

  3. 踩坑之VC报错 error RC2104 : undefined keyword or key name

    .RC文件中第541行 MENUITEM "CNDev,                       ID_CNDEV 少了一个"    正确的应该是MENUITEM " ...

  4. C#添加VisionPro控件问题

    安装完VisionPro8.2版本以后,用VS2013调用时,没有默认在工具箱内,那么就需要手动添加了,选择菜单栏---->工具----->选择工具箱项,如下图所示:           ...

  5. asp.net mvc5中使用Swagger 自动生成WebApi文档笔记

    Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public cla ...

  6. JAVA 中BIO,NIO,AIO的理解 (转)

    转自: http://qindongliang.iteye.com/blog/2018539 另外类似可参考资料 :http://www.360doc.com/content/13/1029/20/9 ...

  7. 转: 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

    我发现这个问题上网搜索 ,找到的地址为:http://blog.csdn.net/z69183787/article/details/19911935 .但是他的标题上也有一个"转" ...

  8. 取消win10 任务栏已固定的软件

    通过组策略编辑器 设置为“已禁用”,就可 ,自由取消已固定的图标.

  9. yml文件搞一波

    引用https://www.cnblogs.com/zslli/p/8717483.html https://www.cnblogs.com/baoyi/p/SpringBoot_YML.html 划 ...

  10. Pycharm去掉项目所有 # 注释

    通过快捷键ctrl+shift+R 进入 项目全局替换窗口,点击右上角 勾选正则,然后 搜索框输入 (#.*) 即可 ,然后点击 replace all 去掉所有注释