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解码后看是否与题目 ...
随机推荐
- 面试题_lambda函数调用
res多少? def func(): return [lambda x: i * x for i in range(4)] res = [m(2) for m in func()] # print(r ...
- mybatis与Spring
提问1:如果没有spring-mybatis,我们如何在spring中使用定义bean,如何使用事务? mybatis-Spring为我们带来多种方式的Mapper接口的注册,扫描,识别. 如果不使用 ...
- Linux背背背(5)
目录: 1.rpm 2.运行模式 3.网卡 rpm软件管理 在Linux中的rpm其实有点类似于windows下的“xxx电脑管家”.“xxx软件管家”,其作用就是管理软件(查询软件的安装情况,安装软 ...
- eclipse注解模板,实实在在的
1.可以引用其他codetemplate.xml 2.可以自己配置,很快,就几个主要的,个人建议这个,配一次妥妥的,以后就会了,也不用搭理模板了 3.按照公司要求 拿去https://www.jian ...
- DRF 认证、权限、限制
DRF 认证.权限.限制 认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class ...
- 强一致性hash实现java版本及强一致性hash原理
一致性 hash 分布式过程中我们将服务分散到若干的节点上,以此通过集体的力量提升服务的目的.然而,对于一个客户端来说,该由哪个节点服务呢?或者说对某个节点来说他分配到哪些任务呢? 强哈希 考虑到单服 ...
- Disconnected from the target VM, address: '127.0.0.1:57178', transport: 'socket'
idea 执行测试单元debug时控制台出现:Disconnected from the target VM, address: '127.0.0.1:57178', transport: 'sock ...
- python列表中的pop函数
再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...
- 用360清理了一下电脑后发现Eclipse软件无法打开
今天用360安全卫士清理了一下电脑,然后双击Eclipse软件发现不能打开,弹出以下界面: 解决方法如下: 打开计算机-属性-高级系统设置,修改系统变量里变量名为JAVA_HOME.CLASSPATH ...
- JavaScript值全等判断
作为开发员,很多时候拿到数据之后都是要做数据判断,比较特别的情况就是我们需要做数组判断和对象判断,经常的我们就array === array ,object === object;但是可惜是我们得到的 ...