首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
c语言
hook
cookie
split
java
bash
ascii
loops
process
actionscrip
datetime
flutter
erlang
heap
text
case
web3
httpclient
php5
sum
cSharp
export
testing
get
js
search
function
frameworks
rsa
runtime
hashset
keyword
metadata
hashtable
stream
cPlusPlus
regex
vba
python2
range
php
expression
数组
substring
include
golang
hash
tree
iostream
copy
replace
heatmap
go
uml
join
window
scala
timezone
integer
cmd
config
import
php8
chat
grid
php7
char
main
const
bit
md5
dockerfile
byte
buffer
io
usb
audio
require
dagger
当前位置:
开发笔记
>
编程语言
> 正文
合天网络安全实验室CTF实战演练中的逆向工程挑战题
作者:W蓝尾蝶SUH_435 | 来源:互联网 | 2024-11-11 21:02
近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。
最近搞逆向,就做做CTF题吧
挑战地址:http://www.hetianlab.com/CTFrace.html
对linux的逆向还没深入学习,所以re300暂时空着
逆向100
先把后缀改为.apk吧
安装看看吧,
输入密码,随便输入,点击Enter没任何反应,应该是输入正确后才会有提示flag什么的
那我们反编译看看
反编译就看到明文比较了
输入后直接出flag了
逆向200
打开看看,应该是先输入第一个password,正确了才让你输入第二个password,第一个错误了就直接退出了
查壳没有加壳
那我们下一个退出断点,其实下一个strcmp断点更快
从反汇编跟随就可以找到用户领空的退出代码,ctrl+a分析一下,发现有个跳转跳过来,直接跟过去,
下个断点,跟进去
一直f8,都可以看到真的password了
测试一下,确实是
当然借助一下ida,就更加容易看到了
看看过了level1后又会怎样
发现这个应该是反调试的
下面从某处复制的
新增的
AddVectoredExceptionHandler
这个API将一个指向函数的指针作为参数,把这个函数的地址添加到已注册的异常处理程序链表中。
那么这里的int3异常会交给异常处理程序链表中第一个处理函数处理,假如调试器处理这个异常,我们就到不了那里了,所以od的设置一定要忽略所以异常,让程序或系统自己处理
具体是在哪设置的呢,其实这里不用知道也可以,知道就更好了,如下图,可以直接去到40157f,删除一下分析就可以看到代码了
不知道这个怎么办呢,我们可以用退出函数断点啊,也可以根据堆栈的反汇编跟随到达password2的代码
那么401547的代码肯定是关键了,f7跟进,我们可以看到作者设定的常量了
那么接下来做了什么呢,首先判断是否到达字符串的结尾,这里作者设定的是二进制的02为结尾
那么具体的算法下面已注射的比较清楚了
当然也可以借助ida,不过通过汇编看学得更多哦
弄懂这个简单的算法后,我们可以把je改为jmp
直接在cmp处下断点,不断f9,记下al中的每个字母,password2就出来了
成功
当然也可以写个脚本
最终flag: r0b0RUlez!_w3lld0ne
安全
http
html
linux
apk
编译
io
api
int
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
heap
深入解析Java虚拟机(JVM)架构与原理
本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ...
[详细]
蜡笔小新 2024-12-21 23:50:40
c语言
VC++如何监控cpu fan 转速?
主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ...
[详细]
蜡笔小新 2024-12-22 13:48:42
function
Coursera ML 机器学习
2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ...
[详细]
蜡笔小新 2024-12-22 16:09:09
js
优化C++项目中的JSON处理:选择高性能的RapidJSON库
在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ...
[详细]
蜡笔小新 2024-12-21 18:13:59
get
SQL Server 中 INSERT 语句无法插入数据的问题分析与解决
本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ...
[详细]
蜡笔小新 2024-12-21 09:52:27
rsa
2018-2019学年第六周《Java数据结构与算法》学习总结
本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ...
[详细]
蜡笔小新 2024-12-22 16:43:19
get
优化DB2数据库性能的关键策略
本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ...
[详细]
蜡笔小新 2024-12-22 16:20:33
search
Nginx 反向代理与负载均衡实验
本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ...
[详细]
蜡笔小新 2024-12-22 15:15:48
get
紫荆花之恋:动态树上的小精灵友谊问题
本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ...
[详细]
蜡笔小新 2024-12-22 14:36:54
js
实用正则表达式有哪些
小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ...
[详细]
蜡笔小新 2024-12-22 13:59:04
function
使用Fetch进行HTTP请求的基本示例
本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ...
[详细]
蜡笔小新 2024-12-22 12:55:37
function
深入理解sed的G、H、g、h命令及其高级应用
本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ...
[详细]
蜡笔小新 2024-12-22 12:24:49
function
F# Interactive 中的数据格式化技巧:使用 AddPrinter 和 AddPrintTransformer 自定义输出
本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ...
[详细]
蜡笔小新 2024-12-22 12:09:23
get
JSON 解析失败问题排查
在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ...
[详细]
蜡笔小新 2024-12-21 18:39:23
java
深入理解Java多线程并发处理:基础与实践
本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ...
[详细]
蜡笔小新 2024-12-20 19:28:45
W蓝尾蝶SUH_435
这个家伙很懒,什么也没留下!
Tags | 热门标签
c语言
hook
cookie
split
java
bash
ascii
loops
process
actionscrip
datetime
flutter
erlang
heap
text
case
web3
httpclient
php5
sum
cSharp
export
testing
get
js
search
function
frameworks
rsa
runtime
RankList | 热门文章
1
Linux做系统有中毒的先例吗
2
急!!wubi装ubuntu的几个问题???
3
谷歌输入法的Linux版本何时出现?
4
遭遇网通“后方RAS拨号系统”
5
debian lenny体验LXDE桌面飞一般的感觉
6
debian真牛啊!!!
7
一款基于Murrina的主题Murrina Personal
8
Debian GNU Linux 4.0 r5正式发布
9
请哪位提供一个简单易懂的Debian安装和配置的教程
10
删除了Linux后进不了windowsXP,只出现grub,下一步该怎么做?怎么办?
11
红了Ubuntu为什么灰了Debian
12
请问linux学习与英语的关系
13
要成为一名合格的LINUX管理员的规则
14
菜鸟有几个关于linux的问题请教各位高手
15
Debian快沉下去了
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有