easyre-153

查壳:

upx壳

脱壳:

 1 int __cdecl main(int argc, const char **argv, const char **envp)
2 {
3 int pipedes[2]; // [esp+18h] [ebp-38h]
4 __pid_t v5; // [esp+20h] [ebp-30h]
5 int v6; // [esp+24h] [ebp-2Ch]
6 char buf; // [esp+2Eh] [ebp-22h]
7 unsigned int v8; // [esp+4Ch] [ebp-4h]
8
9 v8 = __readgsdword(0x14u);
10 pipe(pipedes); // pipe函数可用于创建一个管道,以实现进程间的通信。
11 // pipe函数的定义如下:
12 // #include<unistd.h>
13 // int pipe(int fd[2]);
14 // pipe函数定义中的fd参数是一个大小为2的一个数组类型的指针。该函数成功时返回0,并将一对打开的文件描述符值填入fd参数指向的数组。失败时返回 -1并设置errno。
15 // 通过pipe函数创建的这两个文件描述符 fd[0] 和 fd[1] 分别构成管道的两端,往 fd[1] 写入的数据可以从 fd[0] 读出。并且 fd[1] 一端只能进行写操作,fd[0] 一端只能进行读操作,不能反过来使用。要实现双向数据传输,可以使用两个管道。
16 v5 = fork(); // 1)在父进程中,fork返回新创建子进程的进程ID;
17 // 2)在子进程中,fork返回0;
18 // 3)如果出现错误,fork返回一个负值;
19 if ( !v5 ) // 等于0,即在子进程中时
20 {
21 puts("\nOMG!!!! I forgot kid's id");
22 write(pipedes[1], "69800876143568214356928753", 0x1Du);// 写入
23 puts("Ready to exit ");
24 exit(0);
25 }
26 read(pipedes[0], &buf, 0x1Du); // 读取
27 __isoc99_scanf("%d", &v6);
28 if ( v6 == v5 )
29 {
30 if ( (*(_DWORD *)((_BYTE *)lol + 3) & 0xFF) == 204 )
31 {
32 puts(":D");
33 exit(1);
34 }
35 printf("\nYou got the key\n ");
36 lol(&buf); // 生成flag
37 }
38 wait(0);
39 return 0;
40 }

查看lol(&buf)

 1 int __cdecl lol(_BYTE *a1)
2 {
3 char v2; // [esp+15h] [ebp-13h]
4 char v3; // [esp+16h] [ebp-12h]
5 char v4; // [esp+17h] [ebp-11h]
6 char v5; // [esp+18h] [ebp-10h]
7 char v6; // [esp+19h] [ebp-Fh]
8 char v7; // [esp+1Ah] [ebp-Eh]
9 char v8; // [esp+1Bh] [ebp-Dh]
10
11 v2 = 2 * a1[1];
12 v3 = a1[4] + a1[5];
13 v4 = a1[8] + a1[9];
14 v5 = 2 * a1[12];
15 v6 = a1[18] + a1[17];
16 v7 = a1[10] + a1[21];
17 v8 = a1[9] + a1[25];
18 return printf("flag_is_not_here");
19 }

wp:

 1 a1='69800876143568214356928753'
2 a1=list(map(ord,a1))
3 v2 = 2 * a1[1];
4 v3 = a1[4] + a1[5];
5 v4 = a1[8] + a1[9];
6 v5 = 2 * a1[12];
7 v6 = a1[18] + a1[17];
8 v7 = a1[10] + a1[21];
9 v8 = a1[9] + a1[25];
10
11 # x=locals().items()
12 # print(x)
13 flag=''
14 for i in range(2,9):
15 flag+=chr(locals()['v'+str(i)])
16 print(flag)

rhelheg

特娘的,提交需要加上RCTF{}

RCTF{rhelheg}

最新文章

  1. php使用js对表格进行排序
  2. 推荐两款免费的优质云服务MongoLab和RedisLabs
  3. 为什么没调用 didRegisterForRemoteNotificationsWithDeviceToken 和 didFailToRegisterForRemoteNotificationsWithError
  4. 我的c程序
  5. Func&lt;T,TResult&gt;泛型委托
  6. iOS下UITableView的单元格重用逻辑
  7. HTML5之应用缓存---manifest---缓存使用----HTML5的manifest缓存
  8. jQuery Mobile 基础
  9. studio_ 优化Android Studio 启动、编译和运行速度?
  10. void指针(void*)用法
  11. Windows内存管理[转]
  12. 轻量级GUI enlightenment
  13. Linux基础测试--11道题
  14. Houdini Distributed Simulations and Render
  15. (PAT)L2-006 树的遍历 (二叉树构建)
  16. winform datagridview 导出excel
  17. 《Dare To Dream》第七次作业:团队项目设计完善&amp;编码测试
  18. Fantacy团队周二站立会议
  19. BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
  20. WCF学习分享2

热门文章

  1. 用python写的一个自动卸载python包的脚本
  2. js Nullish Coalescing Operator
  3. React Transforming Elements All In One
  4. UI Design &amp; App &amp; Free Icons
  5. auto embedded component in an online code editor
  6. img &amp; srcset
  7. Redis all in one
  8. Kubernetes中分布式存储Rook-Ceph部署快速演练
  9. iOS中web与Js的交互
  10. System.IO.IOException:“找不到资源“window1.xaml”。” 解决方法