文章目录

  • 概述
  • 题目
    • 题目描述
    • 连接信息
    • 查看leg.c
    • 源代码分析
    • 查看leg.asm
    • 题目解法

概述

pwnable是一个经典的CTF中PWN方向练习的专业网站,本文记录的题目是leg,主要考察的是基于ARM的寄存器与汇编相关知识点。

题目

题目描述

题目提示 Daddy told me I should study arm,已经很明确的说明了与ARM有关,同时提供了两个文件下载

  • http://pwnable.kr/bin/leg.c
  • http://pwnable.kr/bin/leg.asm

连接信息

通过ssh登录靶机

ssh leg@pwnable.kr -p2222 (pw:guest)

查看家目录

查看leg.c

#include <stdio.h>
#include <fcntl.h>
int key1(){asm("mov r3, pc\n");
}
int key2(){asm("push    {r6}\n""add    r6, pc, $1\n""bx    r6\n"".code   16\n""mov    r3, pc\n""add    r3, $0x4\n""push    {r3}\n""pop    {pc}\n"".code    32\n""pop    {r6}\n");
}
int key3(){asm("mov r3, lr\n");
}
int main(){int key=0;printf("Daddy has very strong arm! : ");scanf("%d", &key);if( (key1()+key2()+key3()) == key ){printf("Congratz!\n");int fd = open("flag", O_RDONLY);char buf[100];int r = read(fd, buf, 100);write(0, buf, r);}else{printf("I have strong leg :P\n");}return 0;
}

源代码分析

可以看到,得到flag的条件为三个函数key1()、key2()、key3()相加的结果与输入的key值相等即可。

查看leg.asm

除了提供C语言的源代码,还提供了汇编语言的代码

main()的主要代码片段

   0x00008d60 <+36>:    mov    r1, r30x00008d64 <+40>:    bl    0xfbd8 <__isoc99_scanf>0x00008d68 <+44>:    bl    0x8cd4 <key1>0x00008d6c <+48>:    mov    r4, r00x00008d70 <+52>:    bl    0x8cf0 <key2>0x00008d74 <+56>:    mov    r3, r00x00008d78 <+60>:    add    r4, r4, r30x00008d7c <+64>:    bl    0x8d20 <key3>0x00008d80 <+68>:    mov    r3, r00x00008d84 <+72>:    add    r2, r4, r3

函数key1(),可以看到把结果保存到r3,其值为$pc,为0x00008ce4,即 (下一条指令地址+4)

   0x00008cdc <+8>:    mov    r3, pc0x00008ce0 <+12>:    mov    r0, r30x00008ce4 <+16>:    sub    sp, r11, #0

函数key2(),可以看到把结果保存到r3,其值为$pc+4,为0x00008d0c,即 ((下一条指令地址+4)+4)

   0x00008d04 <+20>:    mov    r3, pc0x00008d06 <+22>:    adds    r3, #40x00008d08 <+24>:    push    {r3}

函数key3(),可以看到把结果保存到r3,其值为$lr,即返回地址0x00008d80

   0x00008d28 <+8>:    mov    r3, lr0x00008d2c <+12>:    mov    r0, r30x00008d30 <+16>:    sub    sp, r11, #0

题目解法

通过汇编代码分析,得到三个函数key1()、key2()、key3()的值,相加结果为

In [1]: 0x00008ce4 + 0x00008d0c + 0x00008d80
Out[1]: 108400

则key输入108400即可

pwnable-leg相关推荐

  1. pwnable.kr第七八题 input leg

    第七题 input 参考链接: 这道题可太痛苦了,好多知识点: 这里只需要按它的比较走就可以了. 解题过程 第一次比较: 这里只需要让输入的长度为100,并且满足argv['A'].['B']的值即可 ...

  2. 【pwnable.kr】day8:leg

    pwnable:leg pwnable.kr:leg 题目链接 question Daddy told me I should study arm. But I prefer to study my ...

  3. 【pwnable.kr】leg

    pwnable从入门到放弃第八题. Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ss ...

  4. pwnable.kr wp leg

    题目 Daddy told me I should study arm. But I prefer to study my leg!Download : http://pwnable.kr/bin/l ...

  5. pwnable.kr---leg

    pwnable.kr-leg 解题思路 这是一道和asm有关的题,题目提供了源代码..asm文件.flag文件以及leg的可执行文件.虽然leg.c代码比较长,但是关键点只有四处,掌握好四处关键点,就 ...

  6. pwn的学习8 leg

    首先看 . Daddy told me I should study arm. But I prefer to study my leg!Download : http://pwnable.kr/bi ...

  7. pwnable.kr 简单题目详细笔记汇总

    文章目录 fd collision bof flag passcode random input leg mistake shellshock coin1 lotto cmd1 cmd2 uaf bl ...

  8. pwnable.kr之Toddler‘s Bottle前八题知识点记录

    pwn刷题网站地址(点击直达): http://pwnable.kr/play.php 文章目录 第一题 fd 第二题:collision 1.首先是char和int数据类型的转换 2.python实 ...

  9. Pwnable之[Toddler's Bottle](一)

    Pwnable之[Toddler's Bottle] Pwn挑战地址 1.fd #include <stdio.h> #include <stdlib.h> #include ...

  10. 【pwnable】asm之write up

    首先查看源代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <s ...

最新文章

  1. 行上下移动_这有一台你迟早要用到的“移动空调”
  2. MVC5 + EF6 完整入门教程三
  3. Android Studio提示忽略大小写
  4. mysql重连服务器失败_java – MySQL连接器错误“服务器时区值中...
  5. java amf3_Java AMF3 反序列化漏洞分析
  6. linux weblogic修改内存,在linux运行weblogic出现运行内存不足错误,求鞭挞....
  7. 【英语学习】【Daily English】U11 Work L02 Just be honest
  8. 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
  9. P2326 AKN’s PPAP
  10. Premiere Pro CC 2019破解教程
  11. Completed shut down of DiscoveryClient
  12. 全线路IC闭环控制自动温控电热毯维修记
  13. 【005】基于51单片机的多路热释电红外报警器proteus仿真与实物设计
  14. 32位x86处理器编程架构
  15. 演讲实录(文字+视频)丨基于DevOps的质量左移与右移思考
  16. 【图灵机器人】图灵机器人API V2版使用采坑指南
  17. MEC — 边缘网络
  18. Spring项目启动报Could not resolve placeholder解决
  19. js学习与总结(包含了js中小型项目的截图和代码)(包含了Json、Ajax、Jquery等知识)
  20. 备战APEC 智利公布2019峰会主要议题

热门文章

  1. 视频如何制作虚化边框背景的效果?
  2. Dimensionality Reduction - Principle Component Analysis problem formulation
  3. C语言小项目——走迷宫
  4. internal_error:xst:cmain.c:3423:1.29
  5. day09【字节流、字符流】
  6. 安装VMware tools按钮是灰的
  7. 双camera景深计算
  8. winserver修改计算机用户名,如何修改Windows系统的管理员账户名
  9. 央行数字货币研究报告:法定数字币势在必行,或先应用于票据领域
  10. 樱陀花园10月份活动策划