前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >reverse认知

reverse认知

作者头像
故里[TRUE]
发布2023-04-12 19:54:39
4560
发布2023-04-12 19:54:39
举报
文章被收录于专栏:网络安全【故里】

CTF中的Reverse领域的入门学习

逆向

​ 不说题外话,经过一学期的学习和参加一次CTF大赛后,对于reverse的最直观的印象就是写脚本,写各种程序,不论是很简单的reverse题还是较为复杂的,甚至有时候思路很明确,写出来脚本之后flag就到手了。

​ 总而言之,对于reverse,如果想学精学透,最基础的应该就是从脚本下手,多刷题,多写脚本,而对于解题方便,脚本语言习惯上使用python,所以学好python,非常重要,不仅仅是python,多掌握一门语言没有坏处,学习C语言也是必不可少的。

逆向的核心

​ 学习逆向不仅仅要学好语言,最重要的核心是解析验证算法,要学好算法!

验证算法如下

输入:key

验证:if H(key)==Secret

代码语言:javascript
复制
{
    flag=O(key);
    print flag;
}

输出:flag

验证算法分类

1.简单比较验证

2.密码算法验证

3.算法求解验证

算法举例如下:

1.key直接比较

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
int main()
{
   char szKey[20];
   printf("input Key:");
   scanf("%16s",szKey);
   if(strncmp(szKey,"Thi5_i5_TOo_E4sy",16)==0)
   {
      printf("flag is your key!\n");
   }
   else
   {
      printf("please decompiler or debug me!\n");
   }
   return 0;
}

这种类型flag就在其中,善于观察即可!

2.key简单变换

代码语言:javascript
复制
char secret[]="\x58\x31\x70\x5C\x35\x76\x59\x69\x38\x7D\x55\x63\x38\x7F\x6A";
int main()
{
   char szKey[20]={0},szXor[20]={0};
   unsigned int i=0;
   printf("input Key:");
   scanf("%16s",szKey);
   for(i=0;i<strien(szKey);i++)
   {
      szXor[i]=szKey[i]^i;
   }
   if(memcmp(szXor,secret,sizeof(secret))==0)
   {
      printf("xman{%s}\r\n",szKey);
   }
   else
   {
      printf("please reverse me!\r\n");
   }
   return 0;
}

这个用异或,再进行一次就出来了,见识短浅的我表示还再学习学习才能明白。

3.key编码转换

代码语言:javascript
复制
char secret[]="QjRzZTYOX2k1X2MwbW1vbg==";
int main()
{
   char szKey[20]={0},szBase64[40]={0};
   unsigned int i=0;
   printf("input key:");
   scanf("%16s",szkey);
   Base64encode(szBase64,szKey,strlen(szkey));
   if(memcmp(szBase64,secret,sizeof(serect))==0)
   {
      printf("xman{%s}\r\n",szKey);
   }
   else 
   {
      printf("please reverse me!\r\n");
   }
   return 0;
}

这种转换常见为Base64,也不排除会出现其他编码!

4.key散列计算

这种类型的,可以用md5进行反查

验证算法逆向思路

简单变化验证

----人工逆向,找到可逆运算,按位分步解析

密码算法验证

----识别密码算法,针对性解密

解题算法验证

----理解算法原理,针对性解题

验证常见漏洞

----直接输出flag

----密钥空间过短

----伪随机算法

现实竞赛

----分段,嵌套验证

爆破奇招

----简单验证(按位解析)

----密码算法(密钥部分已知)

----解题算法(暴力搜索)

解题

要学会用F5做签到题,害,暂时就写到这吧,先学好就是多刷题,goodbye!!!

练习平台

1.i春秋训练平台:https://www.ichunqiu.com/battalion

2.We Chall: http://www.wechall.net/sites.php

3.很炫酷游戏化————https://microcorruption.com/login

4.攻防世界 (xctf.org.cn)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-202,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 逆向
  • 逆向的核心
    • 验证算法如下
      • 验证算法分类
        • 算法举例如下:
          • 1.key直接比较
          • 2.key简单变换
          • 3.key编码转换
          • 4.key散列计算
        • 验证算法逆向思路
          • 简单变化验证
          • 密码算法验证
          • 解题算法验证
          • 验证常见漏洞
          • 现实竞赛
          • 爆破奇招
        • 解题
        • 练习平台
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档