[CTF]攻防世界Simple-check-100题解(GDB)

简介: [CTF]攻防世界Simple-check-100题解(GDB)

关于GDB的简单使用

题目链接simple-check-100

GDB安装教程(以及peda插件)我的另一篇文章

本博文记录压缩包中ELF文件flag的获取过程,exe文件flag是乱码,具体过程就不给大家演示了。着重分享GDB的内容。

GDB的实现原理:其他师傅的文章,很详细

step 1 获取信息

我们拿到了题目,老样子获取信息。

image.png

step 2 放入IDA分析一下

int __cdecl main(int argc, const char **argv, const char **envp)
{
  void *v3; // rsp
  const char **v5; // [rsp+0h] [rbp-60h]
  int v6; // [rsp+Ch] [rbp-54h]
  char v7; // [rsp+1Ch] [rbp-44h]
  char v8; // [rsp+1Dh] [rbp-43h]
  char v9; // [rsp+1Eh] [rbp-42h]
  char v10; // [rsp+1Fh] [rbp-41h]
  char v11; // [rsp+20h] [rbp-40h]
  char v12; // [rsp+21h] [rbp-3Fh]
  char v13; // [rsp+22h] [rbp-3Eh]
  char v14; // [rsp+23h] [rbp-3Dh]
  char v15; // [rsp+24h] [rbp-3Ch]
  char v16; // [rsp+25h] [rbp-3Bh]
  char v17; // [rsp+26h] [rbp-3Ah]
  char v18; // [rsp+27h] [rbp-39h]
  char v19; // [rsp+28h] [rbp-38h]
  char v20; // [rsp+29h] [rbp-37h]
  char v21; // [rsp+2Ah] [rbp-36h]
  char v22; // [rsp+2Bh] [rbp-35h]
  char v23; // [rsp+2Ch] [rbp-34h]
  char v24; // [rsp+2Dh] [rbp-33h]
  char v25; // [rsp+2Eh] [rbp-32h]
  char v26; // [rsp+2Fh] [rbp-31h]
  char v27; // [rsp+30h] [rbp-30h]
  char v28; // [rsp+31h] [rbp-2Fh]
  char v29; // [rsp+32h] [rbp-2Eh]
  char v30; // [rsp+33h] [rbp-2Dh]
  char v31; // [rsp+34h] [rbp-2Ch]
  char v32; // [rsp+35h] [rbp-2Bh]
  char v33; // [rsp+36h] [rbp-2Ah]
  char v34; // [rsp+37h] [rbp-29h]
  __int64 v35; // [rsp+38h] [rbp-28h]
  const char ***v36; // [rsp+40h] [rbp-20h]
  unsigned __int64 v37; // [rsp+48h] [rbp-18h]
  v6 = argc;
  v5 = argv;
  v37 = __readfsqword(0x28u);
  v7 = 84;
  v8 = -56;
  v9 = 126;
  v10 = -29;
  v11 = 100;
  v12 = -57;
  v13 = 22;
  v14 = -102;
  v15 = -51;
  v16 = 17;
  v17 = 101;
  v18 = 50;
  v19 = 45;
  v20 = -29;
  v21 = -45;
  v22 = 67;
  v23 = -110;
  v24 = -87;
  v25 = -99;
  v26 = -46;
  v27 = -26;
  v28 = 109;
  v29 = 44;
  v30 = -45;
  v31 = -74;
  v32 = -67;
  v33 = -2;
  v34 = 106;
  v35 = 19LL;
  v3 = alloca(32LL);
  v36 = &v5;
  printf("Key: ", argv, 3LL, 16LL, 20LL, 0LL, argv);
  __isoc99_scanf("%s", v36);
  if ( (unsigned int)check_key(v36) )
    interesting_function(&v7);
  else
    puts("Wrong");
  return 0;
}

我们可以得出check_key是核心函数,只要使得if ( (unsigned int)check_key(v36) )成功即可。这样我们就可以进入GDB进行调试了。

step 3 进入GDB进行动态调试

step 3 进入GDB进行动态调试

GDB的常用命令如下:

image.png

peda的常用命令如下:

image.png

现在来看我们的程序,需要输入指令如下:

gdb
file task9_x86_64_46d01fe312d35ecf69c4ff8ab8ace75d080891dc
b main
r

1.png

我们单步步过直到check_key函数,单步步过的指令是n

step 4 跳过check_key函数

把test eax,eax改为真即可,也就是把eax改为1。

set $eax=1

image.png

这样我们就得到了这个题目的flag:flag_is_you_know_cracking!!!

希望大家可以有所收获!

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
6月前
|
前端开发 网络安全
[网络安全]xss-labs level-10 解题详析
[网络安全]xss-labs level-10 解题详析
49 0
|
6月前
|
网络安全
[网络安全]xss-labs level-12 解题详析
[网络安全]xss-labs level-12 解题详析
44 0
|
6月前
|
网络安全
[网络安全]xss-labs level-1 解题详析
[网络安全]xss-labs level-1 解题详析
49 0
|
6月前
|
JavaScript 前端开发 网络安全
[网络安全]xss-labs level-5 解题详析
[网络安全]xss-labs level-5 解题详析
45 0
|
6月前
|
网络安全
[网络安全]xss-labs level-15 解题详析
[网络安全]xss-labs level-15 解题详析
97 0
|
6月前
|
JavaScript 前端开发 网络安全
[网络安全]xss-labs level-8 解题详析
[网络安全]xss-labs level-8 解题详析
79 0
|
6月前
|
网络安全
[网络安全]xss-labs level-18 解题详析
[网络安全]xss-labs level-18 解题详析
37 0
|
6月前
|
JavaScript 前端开发 网络安全
[网络安全]xss-labs level-6 解题详析
[网络安全]xss-labs level-6 解题详析
46 0
|
6月前
|
网络安全
[网络安全]xss-labs level-11 解题详析
[网络安全]xss-labs level-11 解题详析
68 0
|
6月前
|
JavaScript 前端开发 网络安全
[网络安全]xss-labs level-4 解题详析
[网络安全]xss-labs level-4 解题详析
41 0