pwnable.kr-passcode-witeup
进入远端运行,
废话不多说,下载下来分析。
根据提示,编译一下子。
知道问题了。
想象着,输入的值到了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的更多相关文章
- pwnable.kr的passcode
前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下 ...
- 【pwnable.kr】passcode
pwnable从入门到放弃,第六题. ssh passcode@pwnable.kr -p2222 (pw:guest) 完全是‘&’的锅. #include <stdio.h> ...
- pwnable.kr之passcode
使用ssh passcode@pwnable.kr -p2222登录到远程服务器, ls -l 查看目录下的文件, -r--r----- root passcode_pwn Jun flag -r-x ...
- pwnable.kr col之write up
Daddy told me about cool MD5 hash collision today. I wanna do something like that too! ssh col@pwnab ...
- 【pwnable.kr】col
pwnable从入门到放弃第二题, ssh col@pwnable.kr -p2222 (pw:guest) 同样是登录,然后看到了col.c.col.flag三个文件,读一下col.c #inclu ...
- pwnable.kr bof之write up
这一题与前两题不同,用到了静态调试工具ida 首先题中给出了源码: #include <stdio.h> #include <string.h> #include <st ...
- pwnable.kr brainfuck之write up
I made a simple brain-fuck language emulation program written in C. The [ ] commands are not impleme ...
- pwnable.kr login之write up
main函数如下: auth函数如下: 程序的流程如下: 输入Authenticate值,并base64解码,将解码的值代入md5_auth函数中 mad5_auth()生成其MD5值并与f87cd6 ...
- pwnable.kr详细通关秘籍(二)
i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...
- pwnable.kr simple login writeup
这道题是pwnable.kr Rookiss部分的simple login,需要我们去覆盖程序的ebp,eip,esp去改变程序的执行流程 主要逻辑是输入一个字符串,base64解码后看是否与题目 ...
随机推荐
- LDAP & Implentation
LDAP: LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需 ...
- java web开发环境tomcat安装配置
1.下载jdk8并安装 2.下载tomcat windows环境下的免安装版zip包 3.设置两个环境变量 4.在tomcat的bin路径下双击startup.bat 启动tomcat服务器 5.使用 ...
- 踩坑之VC报错 error RC2104 : undefined keyword or key name
.RC文件中第541行 MENUITEM "CNDev, ID_CNDEV 少了一个" 正确的应该是MENUITEM " ...
- C#添加VisionPro控件问题
安装完VisionPro8.2版本以后,用VS2013调用时,没有默认在工具箱内,那么就需要手动添加了,选择菜单栏---->工具----->选择工具箱项,如下图所示: ...
- asp.net mvc5中使用Swagger 自动生成WebApi文档笔记
Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public cla ...
- JAVA 中BIO,NIO,AIO的理解 (转)
转自: http://qindongliang.iteye.com/blog/2018539 另外类似可参考资料 :http://www.360doc.com/content/13/1029/20/9 ...
- 转: 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
我发现这个问题上网搜索 ,找到的地址为:http://blog.csdn.net/z69183787/article/details/19911935 .但是他的标题上也有一个"转" ...
- 取消win10 任务栏已固定的软件
通过组策略编辑器 设置为“已禁用”,就可 ,自由取消已固定的图标.
- yml文件搞一波
引用https://www.cnblogs.com/zslli/p/8717483.html https://www.cnblogs.com/baoyi/p/SpringBoot_YML.html 划 ...
- Pycharm去掉项目所有 # 注释
通过快捷键ctrl+shift+R 进入 项目全局替换窗口,点击右上角 勾选正则,然后 搜索框输入 (#.*) 即可 ,然后点击 replace all 去掉所有注释