0x01 debug

测试文件:https://www.lanzous.com/i7kr2ta

1.Linux运行环境

在Linux上运行linux_server64文件

2.IDA配置

 __int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
size_t v3; // ST08_8
size_t v4; // rax
signed int i; // [rsp+4h] [rbp-43Ch]
char v7[]; // [rsp+10h] [rbp-430h]
char v8; // [rsp+30h] [rbp-410h]
char v9[]; // [rsp+130h] [rbp-310h]
char v10; // [rsp+140h] [rbp-300h]
char s; // [rsp+230h] [rbp-210h]
char v12; // [rsp+231h] [rbp-20Fh]
char v13; // [rsp+232h] [rbp-20Eh]
char v14; // [rsp+233h] [rbp-20Dh]
char v15; // [rsp+234h] [rbp-20Ch]
char v16; // [rsp+235h] [rbp-20Bh]
char v17; // [rsp+236h] [rbp-20Ah]
char v18; // [rsp+237h] [rbp-209h]
char v19; // [rsp+238h] [rbp-208h]
char v20; // [rsp+239h] [rbp-207h]
char v21; // [rsp+23Ah] [rbp-206h]
char v22; // [rsp+23Bh] [rbp-205h]
char v23; // [rsp+23Ch] [rbp-204h]
char v24; // [rsp+23Dh] [rbp-203h]
char v25; // [rsp+23Eh] [rbp-202h]
char v26; // [rsp+23Fh] [rbp-201h]
char v27; // [rsp+240h] [rbp-200h]
char v28; // [rsp+241h] [rbp-1FFh]
char v29; // [rsp+242h] [rbp-1FEh]
char v30; // [rsp+243h] [rbp-1FDh]
char v31; // [rsp+244h] [rbp-1FCh]
char v32; // [rsp+245h] [rbp-1FBh]
char v33; // [rsp+246h] [rbp-1FAh]
char v34; // [rsp+247h] [rbp-1F9h]
unsigned __int64 v35; // [rsp+438h] [rbp-8h] v35 = __readfsqword(0x28u);
memset(&v8, , 0x100uLL);
strcpy(v9, "pisanbao");
memset(&v10, , 0xF0uLL);
memset(&s, , 0x200uLL);
s = -;
v12 = ;
v13 = ;
v14 = ;
v15 = ;
v16 = -;
v17 = -;
v18 = -;
v19 = ;
v20 = -;
v21 = ;
v22 = ;
v23 = ;
v24 = ;
v25 = ;
v26 = ;
v27 = -;
v28 = -;
v29 = -;
v30 = -;
v31 = ;
v32 = ;
v33 = -;
v34 = -;
v3 = strlen(&s);
v4 = strlen(v9);
sub_55E8ACF107FA(&v8, v9, v4);
sub_55E8ACF109B4(&v8, &s, v3);
puts("Remote Linux debugger");
printf("plz input your flag:", &s);
__isoc99_scanf("%29s", v7);
if ( strlen(v7) != )
{
printf("wrong length", v7);
exit();
}
for ( i = ; i <= ; ++i )
{
if ( v7[i] != *(&s + i) )
{
printf("GG");
exit();
}
}
printf("you win!!!", v7);
return 0LL;
}

在第79行代码设置好断点之后,选择Remote Linux debugger调试器,配置如下

调试运行至断点处

打开字符串s

[stack]:00007FFC04CF40E0 db  4Eh ; N
[stack]:00007FFC04CF40E1 db 43h ; C
[stack]:00007FFC04CF40E2 db 54h ; T
[stack]:00007FFC04CF40E3 db 46h ; F
[stack]:00007FFC04CF40E4 db 7Bh ; {
[stack]:00007FFC04CF40E5 db 6Ah ; j
[stack]:00007FFC04CF40E6 db 75h ; u
[stack]:00007FFC04CF40E7 db 73h ; s
[stack]:00007FFC04CF40E8 db 74h ; t
[stack]:00007FFC04CF40E9 db 5Fh ; _
[stack]:00007FFC04CF40EA db 64h ; d
[stack]:00007FFC04CF40EB db 65h ; e
[stack]:00007FFC04CF40EC db 62h ; b
[stack]:00007FFC04CF40ED db 75h ; u
[stack]:00007FFC04CF40EE db 67h ; g
[stack]:00007FFC04CF40EF db 5Fh ; _
[stack]:00007FFC04CF40F0 db 69h ; i
[stack]:00007FFC04CF40F1 db 74h ; t
[stack]:00007FFC04CF40F2 db 5Fh ; _
[stack]:00007FFC04CF40F3 db 32h ;
[stack]:00007FFC04CF40F4 db 33h ;
[stack]:00007FFC04CF40F5 db 33h ;
[stack]:00007FFC04CF40F6 db 33h ;
[stack]:00007FFC04CF40F7 db 7Dh ; }

3.get flag!

NCTF{just_debug_it_2333}

0x02 签到

测试文件:https://www.lanzous.com/i7kr2ij

1.IDA打开

int __cdecl main(int argc, const char **argv, const char **envp)
{
__int16 v4; // [esp+1Eh] [ebp-32h] sub_4035E0();
puts("ez reverse 2333~~~");
puts("plz input your flag:");
scanf("%55s", &v4);
sub_401340((unsigned __int8 *)&v4);
puts("欢迎南邮2019级学弟~~~");
puts("对re感兴趣的记得加群嗷");
puts("群号:893849151");
system("pause");
return ;
}

打开sub_401340函数

int __cdecl sub_401340(unsigned __int8 *a1)
{
int v2[]; // [esp+18h] [ebp-D0h] v2[] = * a1[] + * *a1 + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * *a1 + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * *a1 + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * *a1 + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * *a1 + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * *a1 + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * *a1 + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
v2[] = * a1[] + * a1[] + * a1[] + * a1[] + * a1[] + * a1[];
for ( v2[] = ; v2[] <= ; ++v2[] )
{
if ( v2[v2[]] != dword_404000[v2[]] )
{
printf("GG");
exit();
}
}
return puts("TQL");
}

2.代码分析

dword_404000的值是已知的,即v2数组的值已知,而函数传入的a1是flag的值,通过上面的方程组可以解出a1的值。

3.解方程

使用MATLAB的solve函数解方程式

syms a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a29 a30 a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 a48
[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48] = solve(34 * a3 + 12 * a0 + 53 * a1 + 6 * a2 + 58 * a4 + 36 * a5 + a6-18564 == 0,...
27 * a4 + 73 * a3 + 12 * a2 + 83 * a0 + 85 * a1 + 96 * a5 + 52 * a6 - 37316 == 0,...
24 * a2 + 78 * a0 + 53 * a1 + 36 * a3 + 86 * a4 + 25 * a5 + 46 * a6 - 32053 == 0,...
78 * a1 + 39 * a0 + 52 * a2 + 9 * a3 + 62 * a4 + 37 * a5 + 84 * a6 - 33278 == 0,...
48 * a4 + 6 * a1 + 23 * a0 + 14 * a2 + 74 * a3 + 12 * a5 + 83 * a6 - 23993 == 0,...
15 * a5 + 48 * a4 + 92 * a2 + 85 * a1 + 27 * a0 + 42 * a3 + 72 * a6 - 33151 == 0,...
26 * a5 + 67 * a3 + 6 * a1 + 4 * a0 + 3 * a2 + 68 * a6 - 15248 == 0,...
34 * a10 + 12 * a7 + 53 * a8 + 6 * a9 + 58 * a11 + 36 * a12 + a13 - 13719 == 0,...
27 * a11 + 73 * a10 + 12 * a9 + 83 * a7 + 85 * a8 + 96 * a12 + 52 * a13 - 34137 == 0,...
24 * a9 + 78 * a7 + 53 * a8 + 36 * a10 + 86 * a11 + 25 * a12 + 46 * a13 - 27391 == 0,...
78 * a8 + 39 * a7 + 52 * a9 + 9 * a10 + 62 * a11 + 37 * a12 + 84 * a13 - 28639 == 0,...
48 * a11 + 6 * a8 + 23 * a7 + 14 * a9 + 74 * a10 + 12 * a12 + 83 * a13 - 18453 == 0,...
15 * a12 + 48 * a11 + 92 * a9 + 85 * a8 + 27 * a7 + 42 * a10 + 72 * a13 - 28465 == 0,...
26 * a12 + 67 * a10 + 6 * a8 + 4 * a7 + 3 * a9 + 68 * a13 - 12384 == 0,...
34 * a17 + 12 * a14 + 53 * a15 + 6 * a16 + 58 * a18 + 36 * a19 + a20 - 20780 == 0,...
27 * a18 + 73 * a17 + 12 * a16 + 83 * a14 + 85 * a15 + 96 * a19 + 52 * a20 - 45085 == 0,...
24 * a16 + 78 * a14 + 53 * a15 + 36 * a17 + 86 * a18 + 25 * a19 + 46 * a20 - 35827 == 0,...
78 * a15 + 39 * a14 + 52 * a16 + 9 * a17 + 62 * a18 + 37 * a19 + 84 * a20 - 37243 == 0,...
48 * a18 + 6 * a15 + 23 * a14 + 14 * a16 + 74 * a17 + 12 * a19 + 83 * a20 - 26037 == 0,...
15 * a19 + 48 * a18 + 92 * a16 + 85 * a15 + 27 * a14 + 42 * a17 + 72 * a20 - 39409 == 0,...
26 * a19 + 67 * a17 + 6 * a15 + 4 * a14 + 3 * a16 + 68 * a20 - 17583 == 0,...
34 * a24 + 12 * a21 + 53 * a22 + 6 * a23 + 58 * a25 + 36 * a26 + a27 - 20825 == 0,...
27 * a25 + 73 * a24 + 12 * a23 + 83 * a21 + 85 * a22 + 96 * a26 + 52 * a27 - 44474 == 0,...
24 * a23 + 78 * a21 + 53 * a22 + 36 * a24 + 86 * a25 + 25 * a26 + 46 * a27 - 35138 == 0,...
78 * a22 + 39 * a21 + 52 * a23 + 9 * a24 + 62 * a25 + 37 * a26 + 84 * a27 - 36914 == 0,...
48 * a25 + 6 * a22 + 23 * a21 + 14 * a23 + 74 * a24 + 12 * a26 + 83 * a27 - 25918 == 0,...
15 * a26 + 48 * a25 + 92 * a23 + 85 * a22 + 27 * a21 + 42 * a24 + 72 * a27 - 38915 == 0,...
26 * a26 + 67 * a24 + 6 * a22 + 4 * a21 + 3 * a23 + 68 * a27 - 17672 == 0,...
34 * a31 + 12 * a28 + 53 * a29 + 6 * a30 + 58 * a32 + 36 * a33 + a34 - 21219 == 0,....
27 * a32 + 73 * a31 + 12 * a30 + 83 * a28 + 85 * a29 + 96 * a33 + 52 * a34 - 43935 == 0,...
24 * a30 + 78 * a28 + 53 * a29 + 36 * a31 + 86 * a32 + 25 * a33 + 46 * a34 - 37072 == 0,...
78 * a29 + 39 * a28 + 52 * a30 + 9 * a31 + 62 * a32 + 37 * a33 + 84 * a34 - 39359 == 0,...
48 * a32 + 6 * a29 + 23 * a28 + 14 * a30 + 74 * a31 + 12 * a33 + 83 * a34 - 27793 == 0,...
15 * a33 + 48 * a32 + 92 * a30 + 85 * a29 + 27 * a28 + 42 * a31 + 72 * a34 - 41447== 0,...
26 * a33 + 67 * a31 + 6 * a29 + 4 * a28 + 3 * a30 + 68 * a34 - 18098 == 0,...
34 * a38 + 12 * a35 + 53 * a36 + 6 * a37 + 58 * a39 + 36 * a40 + a41 - 21335 == 0,...
27 * a39 + 73 * a38 + 12 * a37 + 83 * a35 + 85 * a36 + 96 * a40 + 52 * a41 - 46164 == 0,...
24 * a37 + 78 * a35 + 53 * a36 + 36 * a38 + 86 * a39 + 25 * a40 + 46 * a41 - 38698 == 0,...
78 * a36 + 39 * a35 + 52 * a37 + 9 * a38 + 62 * a39 + 37 * a40 + 84 * a41 - 39084 == 0,...
48 * a39 + 6 * a36 + 23 * a35 + 14 * a37 + 74 * a38 + 12 * a40 + 83 * a41 - 29205 == 0,...
15 * a40 + 48 * a39 + 92 * a37 + 85 * a36 + 27 * a35 + 42 * a38 + 72 * a41 - 40913,...
26 * a40 + 67 * a38 + 6 * a36 + 4 * a35 + 3 * a37 + 68 * a41 - 19117 == 0,...
34 * a45 + 12 * a42 + 53 * a43 + 6 * a44 + 58 * a46 + 36 * a47 + a48 - 21786 == 0,...
27 * a46 + 73 * a45 + 12 * a44 + 83 * a42 + 85 * a43 + 96 * a47 + 52 * a48 - 46573 == 0,...
24 * a44 + 78 * a42 + 53 * a43 + 36 * a45 + 86 * a46 + 25 * a47 + 46 * a48 - 38322 == 0,...
78 * a43 + 39 * a42 + 52 * a44 + 9 * a45 + 62 * a46 + 37 * a47 + 84 * a48 - 41017 == 0,...
48 * a46 + 6 * a43 + 23 * a42 + 14 * a44 + 74 * a45 + 12 * a47 + 83 * a48 - 29298 == 0,...
15 * a47 + 48 * a46 + 92 * a44 + 85 * a43 + 27 * a42 + 42 * a45 + 72 * a48 - 43409 == 0,...
26 * a47 + 67 * a45 + 6 * a43 + 4 * a42 + 3 * a44 + 68 * a48 - 19655 == 0)

得到a1[0]~a1[48]的值,转换为ASCII码

4.get flag!

NCTF{nctf2019_linear_algebra_is_very_interesting}

0x03 Our 16bit Games.com

测试文件:https://www.lanzous.com/i7ks0uf

1.IDA分析

使用IDA打开文件之后,找到最下面有一堆int 21的地方

这里实际上就是将bh和bl交替的与dl异或,dl的值是已知的,因为bl和bh一共的情况也不过0xFF*0xFF种,就直接爆破了。

2.爆破求解

for num2 in range(0x100):
for num3 in range(0x100):
dec = ''
num1 = [0x8E, 0x9D, 0x94, 0x98, 0xBB, 0x89, 0xF3, 0xEF, 0x83, 0xEE, 0xAD, 0x9B, 0x9F,
0xEC, 0x9F, 0x9A, 0xF0, 0xEB, 0x9F, 0x97, 0xF6, 0xBC, 0xF1, 0xE9, 0x9F, 0xE7,
0xA1, 0xB3, 0xF3, 0xA3]
for i in range(len(num1)):
if i % 2 == 0:
dec += chr(num1[i] ^ num2)
else:
dec += chr(num1[i] ^ num3)
if dec.startswith('NCTF'):
print (dec)

3.get flag!

NCTF{W31C0mE_2_D05_I6b17_9am3}

2019 NCTF Re WP的更多相关文章

  1. [极客大挑战 2019]Secret File wp

    通过标题考虑可能为文件包含漏洞方面 打开网页 从页面并没任何思路,查看源代码 得到有一个跳转到./Archive_room.php的超链接,打开Archive_room.php 中央有一个secret ...

  2. php代码审计整理

    目录 变量覆盖 1x01.extract 变量覆盖 定义和用法 语法 漏洞产生:使用了默认设置 攻击方法:制造变量名冲突,对于需要相等的值可以同时置空 修复:设定一个冲突时的处理规则 例题: 1x02 ...

  3. 2019强网杯babybank wp及浅析

    前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDec ...

  4. 2019 上海市大学生网络安全大赛 RE部分WP

    这次比赛就做了这一道逆向题,看到队友的WP,下面的对v10的加密方式为RC4,从我提取的v4数组就能够察觉出这是CR4了,自己傻乎乎的用OD调试,跟踪数据半天才做出来,还是见得的少了... ...下面 ...

  5. 【wp】2021V&NCTF

    前几天打完的V&NCTF公开赛,做题的时候没记过程,这是复现wp. 最后排名Top 18,三道RE+两道杂项(wp没啥可放的hhh)+一道web,感觉re题目还是挺好的,难度适中点赞,尤其pc ...

  6. 2019“嘉韦思”杯RSA256题目wp

    首先我们从网站下载了一个压缩包,解压出来一看里面有2个文件 首先我们先打开fllllllag康康,结果发现是一串乱码,这时候第一反应就是,文件被加密了,再看fllllllag下面的gy.key文件,更 ...

  7. SWPUCTF 2019总结以及部分WP

    本次SWPUCTF开赛了,一共做了5个misc+2个web,RE和Android没时间看= =,pwn完全不会,果然又是和去年一样划水.题目都出的很不错,做题的时候思路其实也容易想到,剩下几个web有 ...

  8. 2019 安洵杯 Re 部分WP

    0x01.EasyEncryption 测试文件:https://www.lanzous.com/i7soysb 1.IDA打开 int sub_416560() { int v0; // eax i ...

  9. 2019 湖湘杯 Reverse WP

    0x01 arguement 下载链接:https://www.lanzous.com/i7atyhc 1.准备 获取到信息: 32位的文件 upx加密文件 在控制台打开文件 使用"upx ...

随机推荐

  1. http response压缩

    http response压缩 一.Spring boot启用Gzip压缩 application.xml新增配置: 未启用压缩时试验接口传输大小不变为61.88M,耗时1分多钟 启动压缩时试验接口传 ...

  2. sweetalert2 全面替代 alert ,从 sweetalert2 弹出 text 到 弹出 Dom 以及模态框和取消 sweetalert2 的 OK 按钮

    1. 简易基本版 sweetalert 涵盖日常基本的弹出及对话框 2. 升级版本 sweetalert2 满足常见开发工作中的各种要求 3 取消 OK 按钮, 只需要设置 showConfirmBu ...

  3. (62)通信协议之一protobuf

     Protobuf协议特点分析 KingKa.吴永聪 1.protobuf是什么? protobuf(Google Protocol Buffers)是Google提供的一个具有高效的协议数据交换格式 ...

  4. 解决vuex保存的数据刷新页面时清空

    参考文章: vuex中store保存的数据,刷新页面会清空 主要解决代码: 1.更改store文件下index文件state的定义 const store = new Vuex.Store({ sta ...

  5. php的数组

    Array 数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种 ...

  6. 一句话搞定python六剑客

    六剑客 一行搞定六剑客:三个函数:map filter reduce + lambda 切片 推导列表 python最有特点的一行代码,所有代码均可以借用一行代码(目标) 1.map(函数,列表或者字 ...

  7. Singleton(Java)

    1.定义私有静态易变的类变量2.定义getInstance静态方法 2.1.若静态变量为null,则在同步类类型的同时判断静态实例是否为null, 是null则创建新实例赋给静态变量 2.2.不为nu ...

  8. Cordova-在现有iOS工程自动化接入Cordova插件

    模拟Cordova插件命令 自己编写脚本,了解cordova添加插件做了哪些事情. 上一篇文章了解到,web与native的交互主要是cordova.js中的exec方法调用,触发交互事件.UIWeb ...

  9. MYSQL常见安装错误集:[ERROR] --initialize specified but the data directory has files in it. Abort

    1.[ERROR] --initialize specified but the data directory has files in it. Abort [错误] -初始化指定,但数据目录中有文件 ...

  10. Jmeter之简单控制器

    在很多情况下,我们 需要将多个请求放置在一起,但是没有逻辑上的操作,这个时候就可以使用简单控制器了. 如 :