测试文件:https://adworld.xctf.org.cn/media/task/attachments/8ef2f7ef55c240418f84b3c514a7a28a

准备

得知

  • 64位文件

2.IDA打开

反编译得到C语言代码

 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[]; // [rsp+10h] [rbp-30h]
unsigned __int64 v9; // [rsp+28h] [rbp-18h] v9 = __readfsqword(0x28u);
LODWORD(v5) = ;
while ( (signed int)v5 < strlen(s) )
{
if ( v5 & )
v3 = ;
else
v3 = -;
*(&t + (signed int)v5 + ) = s[(signed int)v5] + v3;
LODWORD(v5) = v5 + ;
}
strcpy(filename, "/tmp/flag.txt");
stream = fopen(filename, "w");
fprintf(stream, "%s\n", u, v5);
for ( i = ; i < strlen(&t); ++i )
{
fseek(stream, p[i], );
fputc(*(&t + p[i]), stream);
fseek(stream, 0LL, );
fprintf(stream, "%s\n", u);
}
fclose(stream);
remove(filename);
return ;
}

2.1 常量参数值

接着其中一些参数的值

.data:00000000006010A0                 public s
.data:00000000006010A0 ; char s[]
.data:00000000006010A0 s db 'c61b68366edeb7bdce3c6820314b7498',
.data:00000000006010A0 ; DATA XREF: main+25↑o
.data:00000000006010A0 ; main+3F↑r
.data:00000000006010C1 align 20h
.data:00000000006010E0 public t
.data:00000000006010E0 ; char t
.data:00000000006010E0 t db 53h ; DATA XREF: main+65↑w
.data:00000000006010E0 ; main+C9↑o ...
.data:00000000006010E1 aHarifctf db 'harifCTF{????????????????????????????????}',
.data:000000000060110C align 20h
.data: public u
.data: u db '*******************************************',
.data: ; DATA XREF: main+A5↑o
.data: ; main+13F↑o
.data:000000000060114C align 20h
.data: public p
.data: ; int p[43]
.data: p dd 1Eh ; DATA XREF: main+E1↑r
.data: ; main+104↑r

其中值得我们注意的是t的值,t的值应该是0x53+'harifCTF{????????????????????????????????}',即

SharifCTF{????????????????????????????????}

t很有可能是储存flag的数组。

2.2 代码分析

代码整体上可以分为3个部分

1~11 变量定义初始化

12~20 定义flag值

20~34 flag值写入文件

因此我们只需要将第二部分复现,输出flag即可。

2.3 flag获取代码

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> #pragma warning(disable:4996) int main(void)
{
char v3;
__int64 v5;
char s[] = "c61b68366edeb7bdce3c6820314b7498";
char t[] = "SharifCTF{????????????????????????????????}"; v5 = ;
while (v5 < strlen(s)) {
if (v5 & )
v3 = ;
else
v3 = -;
*(t + v5 + ) = s[v5] + v3;
v5++;
}
printf("%s", t); system("PAUSE");
return ;
}

3. get flag!

SharifCTF{b70c59275fcfa8aebf2d5911223c6589}

攻防世界--getit的更多相关文章

  1. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  2. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

  3. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  4. 【攻防世界】高手进阶 pwn200 WP

    题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...

  5. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  6. 攻防世界 | CAT

    来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...

  7. 攻防世界 robots题

    来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...

  8. 【攻防世界】 高手进阶区 Recho WP

    0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...

  9. CTF -攻防世界-crypto新手区(5~11)

    easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间  明明没算错 ...

随机推荐

  1. 奇虎360的开源OpenResty Windows版本

    https://github.com/LomoX-Offical/nginx-openresty-windows

  2. Codeforces 1221F Game With String 思维题

    题意:有两个人玩游戏,游戏规则如下:有一个长度为n的字符串,这个字符串由 . 和 X 构成,Alice可以选择a个连续的 . 把它们变成X, Bob可以选择连续的b个 . 把它们变成X.题目中保证a ...

  3. Hugin

    Hugin简介 Hugin是一个开源的拼接软件,包含大量的拼接所需模块源码以及使用了部分Panorama Tools中的工具. 1)libpano13(Panorama Tools). 2)cpfin ...

  4. Linux必备软件安装

    若想Linux体验感更强,安装linux著名的KDE界面 (里面可以配置很多个性化的界面,特效等) # apt install plasma-desktop mpv ---很炫酷的视频播放器okula ...

  5. [BZOJ] 最长距离

    问题描述 windy 有一块矩形土地,被分为 NM 块 11 的小格子. 有的格子含有障碍物.如果从格子 A 可以走到格子 B,那么两个格子的距离就为两个格子中心的欧几里德距离.如果从格子 A 不可以 ...

  6. 手动ubuntu 18.04修改登录锁屏界面效果(含登录背景修改)flat-remix

    前言 在ubuntu 18.04,可以通过修改/etc/alternatives/gdm3.css来进行修改 本来想直接使用flat-remix主题,但是只有这个登录界面没有达到作者演示的效果,所以手 ...

  7. [LOJ161] 仙人掌计数

    Statement 带标号仙人掌计数问题. \(n< 131072\). Solution 设\(x\)个点的仙人掌个数的生成函数为\(C(x)\) 对于与根相邻的块, 还是仙人掌, 生成函数为 ...

  8. 在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()

    适配器代码如下: public class Myadapter extends BaseAdapter { List<String> date; Context context; //构造 ...

  9. Linux┊详解udev

    是一小部分例子,如果你的系统采用了udev方式,那你应该可以看到更多的规则.如果你想修改设备的权限或者创建信的符号连接,那么你需要熟读这些规则,特别是要仔细注意你修改的那些与之相关的设备. 修改你的u ...

  10. 相同name,取最小的id的值,mysql根据相同字段 更新其它字段

    id name info1 a 1232 a 2353 a 1244 b 125 b 987相同name,取最小的id的值id name info1 a 1232 a 1233 a 1234 b 12 ...