0%

gcc 命令

gcc 命令使用 GNU 推出的基于 C/C++ 的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用 GCC,怎样才能更好的应用 GCC。目前,GCC 可以用来编译 C/C++、FORTRAN、JAVA、OBJC、ADA 等语言的程序,可根据需要选择安装支持的语言。

语法

gcc (选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
-m32:生成32位机器上的代码。
-m64:生成64位机器上的代码。

各种安全选择的编译参数如下:
NX:-z execstack / -z noexecstack (关闭 / 开启)
Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启)
PIE:-no-pie / -pie (关闭 / 开启)
RELRO:-z norelro / -z lazy / -z now (关闭 / 部分开启 / 完全开启)

参数

C 源文件:指定 C 语言源代码文件。

0X01 game 2020.10.16

IDA 打开,主要是 main_0 函数

题目大概意思是:有若干灯,需要全部点亮,可以通过输入改变某一个灯的状态,但是相邻两个灯也会改变,全部灯亮方为获胜。

这是 main_0 函数主要的地方,if 条件通过后进入一个函数

这个是进入的函数最主要的地方是

paload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
str1 = [18, 64, 98, 5, 2, 4, 6, 3, 6, 48, 49, 65, 32, 12, 48, 65, 31, 78, 62,
32, 49, 32, 1, 57, 96, 3, 21, 9, 4, 62, 3, 5, 4, 1, 2, 3, 44, 65, 78,
32, 16, 97, 54, 16, 44, 52, 32, 64, 89, 45, 32, 65, 15, 34, 18, 16, 0]

str2 = [123, 32, 18, 98, 119, 108, 65, 41, 124, 80, 125, 38, 124, 111, 74, 49, 83, 108,
94, 108, 84, 6, 96, 83, 44, 121, 104, 110, 32, 95, 117, 101, 99, 123, 127, 119,
96, 48, 107, 71, 92, 29, 81, 107, 90, 85, 64, 12, 43, 76, 86, 13, 114, 1, 117, 126, 0]

flag = ''
for i in range(56):
x = str1[i] ^ str2[i]
flag += chr(x ^ 0x13)

print(flag)

安装

1
2
3
$ pip install peda
$ git clone https://github.com/longld/peda.git ~/peda
$ echo "source ~/peda/peda.py" >> ~/.gdbinit
阅读全文 »

  1. yafu 使用方法

使用 cmd 进入 yafu 的解压目录(为了方便的话,自己可以把该目录加入到环境变量。)

输入 yafu-x64 进入命令行

最常用的命令是 factor (n),将 n 值分解

如分解 23333333333333

factor(23333333333333)

阅读全文 »

  1. 安装
    安装可以参考我写的另一篇文章,不过也就几条命令。

  2. 模块介绍
    使用 from pwn import * 将所有的模块导入到当前 namespace,这条语句还会帮你把 os,sys 等常用的系统库导入。

常用模块如下:

1
2
3
4
5
6
7
8
asm : 汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台
dynelf : 用于远程符号泄漏,需要提供leak方法
elf : 对elf文件进行操作
gdb : 配合gdb进行调试
memleak : 用于内存泄漏
shellcraft : shellcode的生成器
tubes : 包括tubes.sock, tubes.process, tubes.ssh, tubes.serialtube,分别适用于不同场景的PIPE
utils : 一些实用的小功能,例如CRC计算,cyclic pattern等
阅读全文 »

序列化与反序列化

定义

序列化(串行化):
是将变量转换为可保存或传输的字符串的过程;

反序列化(反串行化):
就是在适当的时候把这个字符串再转化成原来的变量使用。

这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。

阅读全文 »

PHP preg_match () 函数

作用

preg_match 函数用于执行一个正则表达式匹配。

语法

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
搜索 subject 与 pattern 给定的正则表达式的一个匹配。

阅读全文 »

0x01 ICMP 协议与 ping 命令

0x11 ping 什么?

在网络中 ping 是一个十分强大的 TCP/IP 工具。它的作用主要为:
(1)用来检测网络的连通情况和分析网络速度;
(2)根据域名得到服务器 IP;
(3)根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。我们通常会用它来直接 ping IP 地址,来测试网络的连通情况。

阅读全文 »