pwnable-leg
文章目录
- 概述
- 题目
- 题目描述
- 连接信息
- 查看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相关推荐
- pwnable.kr第七八题 input leg
第七题 input 参考链接: 这道题可太痛苦了,好多知识点: 这里只需要按它的比较走就可以了. 解题过程 第一次比较: 这里只需要让输入的长度为100,并且满足argv['A'].['B']的值即可 ...
- 【pwnable.kr】day8:leg
pwnable:leg pwnable.kr:leg 题目链接 question Daddy told me I should study arm. But I prefer to study my ...
- 【pwnable.kr】leg
pwnable从入门到放弃第八题. Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ss ...
- pwnable.kr wp leg
题目 Daddy told me I should study arm. But I prefer to study my leg!Download : http://pwnable.kr/bin/l ...
- pwnable.kr---leg
pwnable.kr-leg 解题思路 这是一道和asm有关的题,题目提供了源代码..asm文件.flag文件以及leg的可执行文件.虽然leg.c代码比较长,但是关键点只有四处,掌握好四处关键点,就 ...
- pwn的学习8 leg
首先看 . Daddy told me I should study arm. But I prefer to study my leg!Download : http://pwnable.kr/bi ...
- pwnable.kr 简单题目详细笔记汇总
文章目录 fd collision bof flag passcode random input leg mistake shellshock coin1 lotto cmd1 cmd2 uaf bl ...
- pwnable.kr之Toddler‘s Bottle前八题知识点记录
pwn刷题网站地址(点击直达): http://pwnable.kr/play.php 文章目录 第一题 fd 第二题:collision 1.首先是char和int数据类型的转换 2.python实 ...
- Pwnable之[Toddler's Bottle](一)
Pwnable之[Toddler's Bottle] Pwn挑战地址 1.fd #include <stdio.h> #include <stdlib.h> #include ...
- 【pwnable】asm之write up
首先查看源代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <s ...
最新文章
- 行上下移动_这有一台你迟早要用到的“移动空调”
- MVC5 + EF6 完整入门教程三
- Android Studio提示忽略大小写
- mysql重连服务器失败_java – MySQL连接器错误“服务器时区值中...
- java amf3_Java AMF3 反序列化漏洞分析
- linux weblogic修改内存,在linux运行weblogic出现运行内存不足错误,求鞭挞....
- 【英语学习】【Daily English】U11 Work L02 Just be honest
- 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
- P2326 AKN’s PPAP
- Premiere Pro CC 2019破解教程
- Completed shut down of DiscoveryClient
- 全线路IC闭环控制自动温控电热毯维修记
- 【005】基于51单片机的多路热释电红外报警器proteus仿真与实物设计
- 32位x86处理器编程架构
- 演讲实录(文字+视频)丨基于DevOps的质量左移与右移思考
- 【图灵机器人】图灵机器人API V2版使用采坑指南
- MEC — 边缘网络
- Spring项目启动报Could not resolve placeholder解决
- js学习与总结(包含了js中小型项目的截图和代码)(包含了Json、Ajax、Jquery等知识)
- 备战APEC 智利公布2019峰会主要议题
热门文章
- 视频如何制作虚化边框背景的效果?
- Dimensionality Reduction - Principle Component Analysis problem formulation
- C语言小项目——走迷宫
- internal_error:xst:cmain.c:3423:1.29
- day09【字节流、字符流】
- 安装VMware tools按钮是灰的
- 双camera景深计算
- winserver修改计算机用户名,如何修改Windows系统的管理员账户名
- 央行数字货币研究报告:法定数字币势在必行,或先应用于票据领域
- 樱陀花园10月份活动策划