代码编织梦想

XCTF 攻防世界 Reverse新手题(getit)

首先,判断文件有没有加壳,是多少位的,利用exeinfoPE可以得知,程序并没有加壳,并且是64位的elf程序
直接用IDA64打开,找到main函数,F5反编译一下:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char v3; // al
  __int64 v5; // [rsp+0h] [rbp-40h]
  int i; // [rsp+4h] [rbp-3Ch]
  FILE *stream; // [rsp+8h] [rbp-38h]
  char filename[8]; // [rsp+10h] [rbp-30h]
  unsigned __int64 v9; // [rsp+28h] [rbp-18h]

  v9 = __readfsqword(0x28u);
  LODWORD(v5) = 0;
  while ( (signed int)v5 < strlen(s) )
  {
    if ( v5 & 1 )
      v3 = 1;
    else
      v3 = -1;
    *(&t + (signed int)v5 + 10) = s[(signed int)v5] + v3;
    LODWORD(v5) = v5 + 1;
  }
  strcpy(filename, "/tmp/flag.txt");
  stream = fopen(filename, "w");
  fprintf(stream, "%s\n", u, v5);
  for ( i = 0; i < strlen(&t); ++i )
  {
    fseek(stream, p[i], 0);
    fputc(*(&t + p[i]), stream);
    fseek(stream, 0LL, 0);
    fprintf(stream, "%s\n", u);
  }
  fclose(stream);
  remove(filename);
  return 0;
}

简单分析一下代码,看到最后的for循环,猜测很有可能是输出flag的,所以先找到strlen()函数的地址400824,之后去汇编代码的界面,找到400824,确实是strlen函数:

.text:0000000000400824                 call    _strlen
.text:0000000000400829                 cmp     rbx, rax
.text:000000000040082C                 jnb     loc_4008B5
.text:0000000000400832                 mov     eax, [rbp+var_3C]
.text:0000000000400835                 cdqe

回到伪代码,for循环的第一个函数是fseek(),因此jnb loc_4008B5很有可能就是fseek(),这一点确定之后,接下来便可以动态调试把400832设为断点进行尝试

pwndbg 文件名 //进入动态调试界面
b *0x400832 //设置断点的地址
r //运行

可以看到,运行一下直接就可以看到flag信息了:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_43456810/article/details/111127072

一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2-爱代码爱编程

概述 项目地址 本题是一个盲注题,可以基于布尔也可以基于时间,如果不会的话可以根据提示在网址后面加一个?tips=1降低难度成为一个基于报错的盲注。本题所有脚本均用傻逼爆破,没有用二分法,有兴趣的大佬可以根据我提供的脚本二次开发,可以的话在评论区给个链接(菜鸡对二分法不是很懂,觉得写脚本的时间还不如等爆破完成) 解法一:基于时间 直接在前端进行注入

攻防世界 Reverse高手进阶区 2分题 elrond32-爱代码爱编程

前言 继续ctf的旅程 攻防世界Reverse高手进阶区的2分题 本篇是elrond32的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 PE查壳 扔进IDA 一个验证输入 一个负责输出 跟进 8048769,这里需要 33*4=132=16*8+1 个字节的内容,即需要前往 hex 窗口中找 8 行加

XCTF 攻防世界 Reverse新手题(no-strings-attached)-爱代码爱编程

XCTF 攻防世界 Reverse新手题(no-strings-attached) 和之前的题目一样,先用exeinfoPE查看一下文件有没有被加壳,发现并没有加壳,并且是一个32位的elf文件 接下来,直接用IDA32打开即可,先找main函数,F5反编译查看源代码: int __cdecl main(int argc, const char **a

CTF-RSA-爱代码爱编程

题目 已知RSA公钥生成参数: e = 65537,求d =  请提交PCTF{d} RSA基础知识 RSA加密算法是一种非对称加密算法。RSA算法首先生成一对RSA密钥,一个公钥,一个私钥。 RSA算法原理: 1.任意选取两个不同的大素数p和q; 2.,计算p和q的乘积,n=pq 3.计算n的欧拉函数φ(n)=(p-1)(q-1)。

[CTF]W型栅栏密码解密算法-爱代码爱编程

校赛现写- - #include<bits/stdc++.h> using namespace std; char str[10000]; char ans[1000]; int line=0,key,len,sit,ssit; int check() { if(line==1||line==key) return sit+

CTFshow—web(1~7)-爱代码爱编程

文章目录 Web1签到题Web2web3web4web5web6web7 Web1签到题 直接查看源码,base64解密 Web2 最简单的注入 尝试万能密码: admin' or 1= 1# 密码随便输: 可判断闭合符号就是单引号; 判断回显位 payload:username=admin' or 1=1 union s

DNSlog注入浅谈-爱代码爱编程

文章目录 前言一、前提条件二、利用步骤1.注册一个域名2.数据库配置3.实际操作总结 前言 DNSlog在Web漏洞利用简单理解就是在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起DNS请求,这个时候就可以通过这种方式把想获得的数据外带出来。 这里使用的DNS的原因是:DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志

XCTF 攻防世界 Reverse新手题(no-strings-attached)-爱代码爱编程

XCTF 攻防世界 Reverse新手题(no-strings-attached) 和之前的题目一样,先用exeinfoPE查看一下文件有没有被加壳,发现并没有加壳,并且是一个32位的elf文件 接下来,直接用IDA32打开即可,先找main函数,F5反编译查看源代码: int __cdecl main(int argc, const char **a

密码破解:SSH-爱代码爱编程

  在本文中,我们将学习如何通过SSH端口来控制受害者的PC。我们可以通过多种方式破解SSH端口的密码。让我们花一些时间来学习所有这些内容,因为有时不同的情况需要采取不同的措施。 包含的内容: Hydra(九头蛇)Medusa(美杜莎)X-Hydra(九头蛇)MetasploitPatatorNcrack让我们开始密码破解吧! Hydra Hyd

OWASP TOP 10(一)SQL注入(自动化工具sqlmap)-爱代码爱编程

文章目录 sqlmap一、概述二、基本参数1. 检测注入点2. 列出所有数据库名3. 列出当前数据库名4. 列出数据库名表名5. 列出表中字段名6. 列出字段内容- 读取post请求三、sqlmap简单原理分析- 测试环境- 测试1. 初始化&与目标站点建立连接2. WAF 判断2.1 WAF 检测2.2 WAF 识别3. 稳定性检测4.

CTF中干扰逆向分析的几种技术的介绍和解题思路-爱代码爱编程

CTF中干扰逆向分析的几种技术的介绍和解题思路 常见的干扰逆向分析的技术:花指令,反调试,加壳,控制流混淆,双进程保护,虚拟机保护技术 1.花指令 这是一种比较简单的技巧,在原始的代码中插入一段无用的,能够干扰反汇编引擎的代码 解题思路:花指令主要影响的是静态分析,在IDA中,可以手动将花指令patch为nop空指令 2. 反调试 反调试技术是指

网站漏扫工具的另类思路进行渗透测试-爱代码爱编程

在渗透测试过程中,我们可以通过插件识别类型后,使用漏洞脚本对特定系统进行模糊。在这里,笔者将与大家分享漏洞POC验证系统的设计和研究思路。在系统开发之初,选用了分布式平台设计架构。后来因为考虑到与分布式资产扫描平台兼容的接口,最后理解了耦合机制,彻底变成了单机版。首先我们可以看到这个地方没有单独设计web管理端,只能通过命令行调度。但是,在设计中,守护进程