[HNCTF 2022 WEEK2]Try2Bebug_Plus 使用IDA 远程调试Linux文件
以[HNCTF 2022 WEEK2]Try2Bebug_Plus为例
下载程序,发现是一个Linux程序,分析一下源码
int __fastcall main(int argc, const char **argv, const char **envp)
{
int i; // [rsp+Ch] [rbp-4h]
for ( i = 0; i <= 11; i += 2 )
{
argv = (const char **)&k;
decrypt((char *)&v + 4 * i, &k);
}
puts("waiting and i will give you flag!");
sleep(0x2710u);
function(&v, argv);
printf("sorry! something wrong!");
printf("please find the flag by Debug!");
return 0;
}
unsigned __int64 __fastcall function(__int64 a1)
{
int i; // [rsp+1Ch] [rbp-24h]
_BYTE v3[12]; // [rsp+2Ch] [rbp-14h] BYREF
unsigned __int64 v4; // [rsp+38h] [rbp-8h]
v4 = __readfsqword(0x28u);
for ( i = 0; i <= 11; ++i )
v3[i] = (16 * i) ^ *(_BYTE *)(4LL * i + a1);
printf("flag is %%s\n");
puts("sorry!!! I forget where is flag ");
return v4 - __readfsqword(0x28u);
}
注意到,程序将最终的flag保存到了v3 中,所以我们目前需要做两件事
- 在
sleep(0x2710u);打断点,修改sleep时间 - 在printf处打断点,得到
v3的值
由于这是一个Linux程序,我所有的是Windows的IDA,没法对其调试,所以需要进行远程调试
在IDA文件夹内找到
dbgsrv\linux_server
把它复制到Linux虚拟机中,然后
chmod +x linux_server
./linux_server
IDA Linux 64-bit remote debug server(ST) v9.0.30. Hex-Rays (c) 2004-2024
2025-11-16 01:56:46 Listening on 0.0.0.0:23946 (my ip 192.168.130.122)...
再把需要调试的elf文件上传到Linux虚拟机
然后在IDA的debugger 选择remote Linux debugger
根据对应的文件地址和ip填写,我这里是
/home/kali/a/elf 填写Linux虚拟机中文件的位置
/home/kali/a/ 填写Linux虚拟机中文件目录的位置
... 中间部分不用管
<ip> <port> 填写刚刚显示的ip和port
<passwd> 填写Linux虚拟机的密码
然后就可以连接上虚拟机,运行就可以调试
.text:0000555555555466 mov edi, 2710h
.text:000055555555546B call sub_5555555550B0
sub_5555555550B0为sleep函数,在call打断点,然后把RDI改成一1就行
a2 = (unsigned int)(16 * i) ^ *(_DWORD *)(4LL * i + a1);
v5[i] = (16 * i) ^ *(_BYTE *)(4LL * i + a1);
}
sub_5555555550A0("flag is %%s\n");
sub_555555555080("sorry!!! I forget where is flag ", a2, v2);
程序停在了sub_5555555550A0 此时就可以查看v5的值
[stack]:00007FFFFFFFDF8C db 74h ; t
[stack]:00007FFFFFFFDF8D db 68h ; h
[stack]:00007FFFFFFFDF8E db 31h ; 1
[stack]:00007FFFFFFFDF8F db 73h ; s
[stack]:00007FFFFFFFDF90 db 5Fh ; _
[stack]:00007FFFFFFFDF91 db 31h ; 1
[stack]:00007FFFFFFFDF92 db 73h ; s
[stack]:00007FFFFFFFDF93 db 5Fh ; _
[stack]:00007FFFFFFFDF94 db 66h ; f
[stack]:00007FFFFFFFDF95 db 6Ch ; l
[stack]:00007FFFFFFFDF96 db 61h ; a
[stack]:00007FFFFFFFDF97 db 67h ; g

浙公网安备 33010602011771号