[BJDCTF 2nd]8086
要先学一下汇编指令
这是一个直接看汇编的题(题目就是8086),因为XYCTF遇上了就去搜了一下
拖入exe啥也不知道,直接拖入ida看一下
啥也没有点进dseg看
汇编界面加注释是用“;”加点注释分析一下
写出脚本得到flag
#include <stdio.h>
#include <string.h>
int main()
{
char a[] = "]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b";
int i;
for (i=0;i<=strlen(a);i++)
{
a[i]^=31;
printf("%c",a[i]);
}
return 0;
}//BJD{jack_de_hu1b1an_xuede_henHa0}
NKCTF-REEZ
这道题用到了虚拟机和D-810去混淆
虚拟机:
现在ida中打开exe文件
1.虚拟机(先打开)
2.把ida里面的两个文件拖进去,在虚拟机桌面创建一个ida文件夹放入这两个文件
3.打开终端输入命令chmod 777 linux_server64(也可以直接将那个文件拖入)
4.继续输入命令.\linux_server64
5.重新开一个终端输入ifconfig命令
6.复制ip,放入框中的Hostname
想起来有之前培训的ppt(我懒)
D-810
对着数据去混淆
1.Edit->Plugins->D-810
2.出现这个界面然后点start,等一会儿回到之前的界面。按F5之后就可以去混淆了
之后大概就清晰很多了
题解
先拖入exe,发现是64位,然后拖入ida64,F5进入伪代码(什么也看不出来)
动态调试 之后会多出来一个文件,然后直接拖入ida
查看,应该是一个z3
去混淆,点start
回到之前界面按F5就好了
源码
int __cdecl main(int argc, const char **argv, const char **envp)
{
bool v3; // zf
const char *v4; // rdi
int v6; // [rsp+4h] [rbp-204h]
__int64 v7; // [rsp+8h] [rbp-200h]
char v8; // [rsp+17h] [rbp-1F1h]
__int64 v9; // [rsp+18h] [rbp-1F0h]
char *v10; // [rsp+20h] [rbp-1E8h]
__int64 v11; // [rsp+28h] [rbp-1E0h]
char v12; // [rsp+37h] [rbp-1D1h]
__int64 v13; // [rsp+38h] [rbp-1D0h]
__int64 v14; // [rsp+40h] [rbp-1C8h]
__int64 v15; // [rsp+48h] [rbp-1C0h]
__int64 v16; // [rsp+58h] [rbp-1B0h]
__int64 j; // [rsp+70h] [rbp-198h]
__in