《随笔 二》

1,is_numeric(),  ctype_digit() 都是PHP中判断 变量是否是纯数字

2,PHP 中变量作用域明析:

变量的声明的关键字: global,  static,    define,      const

global 用法:在函数外面用global 声明的变量在函数内部 不能直接使用,要想使用必须通过全局变量数组                                                        $GLOBALS['var'] 的方式使用;  

                      在函数外部声明的变量为全局变量,要想使用该变量,必须在函数内部重新用 global 来重新声明该变量,说明该                        变量不是局部变量,可以在函数内对该变量进行一系列操作

                     注意: 用global声明的变量不能同时进行初始化

static用法:在函数内部用static声明的变量,在函数调用结束后变量的值会被保留,但它依然是局部变量,不能再函数外部调用

                     在函数外部用static声明的变量,不能再函数内部调用

                    注意: 用static声明变量时可以同时初始化,也可以改变其值

define用法:define(‘PI’,3,1415926) 可以在函数内部外部调用,必须用大写字母

                     注意: 用define声明的变量的值不能再改变,  调用时可以不带$,  必须在顶部声明

const用法:const PI = 3.1415926  可以在函数内部外部调用,必须用大写字母

                      注意: 用const声明的变量的值不能再改变,  调用时可以不带$,  必须在顶部声明

3,Python中变量的作用域明析:

Python中只分 局部变量  和全局变量

     1,在函数外部定义的变量为全局变量,在函数内部定义的变量为局部变量,

          全局变量可以在函数内部调用,但不能对其进行操作(修改,改变类型……),若强行改变其值,系统会默认生成了一个            新的与原全局变量同名的局部变量,此时操作的函数的局部变量

      2,在函数外部用 global 声明的变量,在函数内部依然不能对其进行修改,

           要想在函数内部对函数外部的全局变量进行修改,操作的话,必须在函数内部重新用global 声明

      3,global 不能再嵌套函数中使用,如:def ……

                                                                           def ……

           此时可用 nonlocal ;来代替 global

      4,Python中没用定义常量的语法,但约定用纯大写的字符串 的变量 为常量

           但此常量 不是真正的常量,它的值可以被改变

          为实现真正的常量,可以用自定义类的方法实现常量,这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件

定义一个名为 const.py 的文件

# -*- coding: utf-8 -*-
# python 3.x
# Filename:const.py
# 定义一个常量类实现常量的功能
# 
# 该类定义了一个方法__setattr()__,和一个异常ConstError, ConstError类继承 
# 自类TypeError. 通过调用类自带的字典__dict__, 判断定义的常量是否包含在字典 
# 中。如果字典中包含此变量,将抛出异常,否则,给新创建的常量赋值。 
# 最后两行代码的作用是把const类注册到sys.modules这个全局字典中。
class _const:
    class ConstError(TypeError):pass
    def __setattr__(self,name,value):
        if name in self.__dict__:
            raise self.ConstError("Can't rebind const (%s)" %name)
        self.__dict__[name]=value
        
import sys
sys.modules[__name__]=_const()

使用的时候只要 import const,便可以直接定义

#使用的时候只要 import const,便可以直接定义常量了,例如

# test.py
import const
const.PI=3.14
print(const.PI)

在同一个文件中使用:
 

# -*- coding: utf-8 -*-
# python 3.x
# Filename:const.py
# 定义一个常量类实现常量的功能
# 
# 该类定义了一个方法__setattr()__,和一个异常ConstError, ConstError类继承 
# 自类TypeError. 通过调用类自带的字典__dict__, 判断定义的常量是否包含在字典 
# 中。如果字典中包含此变量,将抛出异常,否则,给新创建的常量赋值。 
# 最后两行代码的作用是把const类注册到sys.modules这个全局字典中。
class _const:
    class ConstError(TypeError):pass
    def __setattr__(self,name,value):
        if name in self.__dict__:
            raise self.ConstError("Can't rebind const (%s)" %name)
        self.__dict__[name]=value
        
const = _const()
const.PI=3.14
print(const.PI)

4,php中的 $_SERVER[]数组:


$_SERVER['PHP_SELF']                                     #当前正在执行脚本的文件名,与 document root相关。 

$_SERVER['SERVER_NAME']                             #当前运行脚本所在服务器主机的名称。

$_SERVER['REQUEST_METHOD']                     #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。 
$_SERVER['QUERY_STRING']                           #查询(query)的字符串。 

$_SERVER['HTTP_ACCEPT_CHARSET']          #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。

$_SERVER['HTTP_HOST']                                   #当前请求的 Host: 头部的内容。 
$_SERVER['HTTP_REFERER']                           #链接到当前页面的前一页面的 URL 地址。 
$_SERVER['HTTP_USER_AGENT']                    #当前请求的 User_Agent: 头部的内容。

$_SERVER['REMOTE_ADDR']                           #正在浏览当前页面用户的 IP 地址。 
$_SERVER['REMOTE_HOST']                            #正在浏览当前页面用户的主机名。 
$_SERVER['REMOTE_PORT']                              #用户连接到服务器时所使用的端口。 
$_SERVER['SCRIPT_FILENAME']                      #当前执行脚本的绝对路径名。 
$_SERVER['SERVER_ADMIN']                            #管理员信息 
$_SERVER['SERVER_PORT']                               #服务器所使用的端口 


$_SERVER['argv'] #传递给该脚本的参数。 
$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。 
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。 
$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。 
$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。 
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。 
$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。 
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。 
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。 
$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off 

$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。 
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。 
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。 
$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html”。 
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。 
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。 
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型
 

5, updatexml( ) 和  extractvalue() 都是最多返回 32 位字符

6, Python   的  字符串切片是   前包后不包 

意思: 

str = "0123456789"

print(str[:5])  # 输出01234
print(str[5:])  #输出56789

7,python : 中 try  expect   、try ……finally 、try……else语句

try:后面跟着需要执行的语句

except 捕获异常 并处理异常,通常异常有不同类型,可分别处理

else:当try语句块正常执行时,无异常产生,执行else语句块

finally:无论是否有异常产生,均执行

raise: 自定义异常

8,python 中:   

                             chr()  : 将 ascii 转化为 相应的字符

                             ord() : 将 字符转化为  ascii

                             ascii(): 类似 repr() 函数, 返回一个表示对象的字符串

>>> ascii('runoob')
"'runoob'"

       sql 中:        ascii() :返回字符表达式最左端字符的ASCII 码值

                             char(): 将ASCII 码转换为字符

 

       php中:        chr()  : 将 ascii 转化为 相应的字符

                             ord() : 将 字符转化为  ascii

                              php中 没有 ascii()函数

9,sqlmap中 在使用 --tables 无法爆出 的时候    可以用  --common-tables   进行爆破 

10,sqlmap 居然还可以进行  这些操作:

 

   把文件上传到数据库服务器中

参数:--file-write,--file-dest

   运行任意操作系统命令

参数:--os-cmd,--os-shell

11,PHP:

file_get_content() 会将 读取的文件的内容写入资格字符串 ,返回值为 字符串 ,读取失败时,返回布尔的0

12,PHP:

传入 数组的方法:

GET:   $sd =   $_GET['xss']         :url?xss['1']=123&xss['2']=456

必须以get里面的 字符为数组名

 

 13,sqlmap 中 指定注入点     

-p “id,user-agent,x-forwarded-for”             指定具体的参数

--skip  "user-agent"                忽略指定参数

   *                                     在url中 指定 注入点  (只需要在想要探测的位置加上 *)

14,php中大多数函数都不能处理数组

15,php中  ===   比较符  两边不会进行类型变换,所以 null   不等于 false

==  可以进行类型变化 ,null =false

16,php中 strlen() 也不能处理数组, 用 count()测数组长度

17,部分os.path常用:

os.path.abspath(path) 返回path规范化的绝对路径

os.path.split(path) 将path分割成目录和文件名二元组返回

os.path.dirname(path) 返回path的目录,其实就是os.path.split(path)的第一个元素

os.path.basename(path) 返回path最后的文件名

os.path.splitext(path) 分离文件名与扩展名;默认返回(fname, fextension)元组,可做分片操作,以” . “为分隔符。

18,python中 shutil库  常用:

shutil 是高级的文件,文件夹,压缩包处理模块。

shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中

import shutil

shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

shutil.copyfile(src, dst)      拷贝文件

shutil.copyfile('f1.log', 'f2.log')

 

线程 、进程 和 协程

 

19,python 中的  enumerate():  将数组拆分成元组

例如:names =['aa','bb','cc']

a,b = (11,12) 可以拆分元组

20,自定义 Thread类 :  其中必须要继承 Thread 类 ,并且必须要有 run方法

21,python,在一个函数中 判断什么时候该加  global 什么时候不用加global:
 

变量名其实相当于一个指针,当 指针没有指向新的地方的时候就不用 加 global

例如:上图中 , 当向数组 nums中 append元素时,指针并没有指向新的地方,所有加入元素成功

而  当 合并 nums  和  num2 时 生成了新的数组,指针指向了新的地方,这里不加global 就会出现错误

 

总结: 在一个函数中 对全局变量进行修改时,到底是是否需要使用global进行说明 要看 是否对 全局变量的指向进行了修改,

如果修改了指向,即让全局变量指向了一个新的地方,那么必须使用 global 

如果只是修改了指向的空间里的数据,就不用使用 global

 

22, python中 线程之间的资源共享(子线程之间共享全局变量)

23,使用线程时,携带数据过去 的方法:

args 指定将来调用函数的时候 传递什么数据过去    注意必须加  逗号

 

 

24,PHP中 :

passthru($string):       把字符串$string当成命令执行

在使用 passthru()之前 往往先调用  以下两个函数,以确保用户不会欺骗系统执行任意命令

escapeshellarg() 转义一个字符串以用作shell参数,在字符串周围添加单引号,并引用/转义任何现有的单引号

escapeshellcmd () 转义shell元字符,转义字符串中可能用于欺骗shell命令执行任意命令的任何字符

 

25, python 中 base64  的调用:

       1 ,       '12345' . encode('base64')

        2,         base64.b64encode($string)

 

26,恢复.swp文件

发现一个 index.php.swp文件

关于swp文件: 
使用vi,经常可以看到swp这个文件。那这个文件是怎么产生的呢,当打开一个文件,vi就会生成这么一个.(filename)swp文件 以备不测(比如非正常退出),如果你正常退出,那么这个这个swp文件将会自动删除 。

怎么恢复.swp: 
可以使用 
vi -r {your file name} 
来恢复文件,然后用下面的命令删除swp文件,不然每一次编辑时总是有这个提示。 
rm .{your file name}.swp 

 

27,jpg文件:

文件头  FF D8 FF E0           文件尾  FF D9

蓝色框内为JFIF段,长度字节流为00 10 = 16,

后面14个字节为内容。4A 46 49 46是JFIF的asci码。后面10个字节不清楚。直接通过JFIF长度跳过即可。

红色箭头开始位置为Exif段头部的10个字节含义如下

FF E1开始,
16 6F = 24096,约24k的数据,信息量还是相当丰富的,
45 78 69 66 为Exif的asci码流,
00 00 未使用

Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全球定位信息

28,png文件:

文件头: 89 50 4E 47 0D 0A 1A 0A

数据块

这里有两种类型的数据块,一种是称为关键数据块(critical chunk),就是必须要有的块;另一种叫做辅助数据块(ancillary chunks)。

每个数据块都由下表所示的的4个域组成。

名称字节数说明
Length(长度)4字节指定数据块中数据域的长度,其长度不超过$(2^{31}-1)$字节
Chunk Type Code(数据块类型码)4字节数据块类型码由ASCII字母(A-Z和a-z)组成
Chunk Data(数据块实际内容可变长度存储按照Chunk Type Code指定的数据
CRC(循环冗余检测4字节存储用来检测是否有错误的循环冗余码

其中CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的,可以看做一种校验码。

关键数据块

关键数据块中的4个标准数据块是:

(1) 文件头数据块IHDR(header chunk):

文件头数据块由13字节,组成结构如下:

域的名称字节数说明
Width4 bytes图像宽度,以像素为单位
Height4 bytes图像高度,以像素为单位
Bit depth1 byte图像深度:索引彩色图像:1,2,4或8 ;灰度图像:1,2,4,8或16 ;真彩色图像:8或16
ColorType1 byte颜色类型:0:灰度图像, 1,2,4,8或16;2:真彩色图像,8或16;3:索引彩色图像,1,2,4或84:带α通道数据的灰度图像,8或16;6:带α通道数据的真彩色图像,8或16
Compression method1 byte压缩方法(LZ77派生算法)
Filter method1 byte滤波器方法
Interlace method1 byte隔行扫描方法:0:非隔行扫描;1: Adam7(由Adam M. Costello开发的7遍隔行扫描方法)

(2) 调色板数据块PLTE(palette chunk):

(3) 图像数据块IDAT(image data chunk):

(4) 图像结束数据IEND(image trailer chunk):

89 50 4E 47 0D 0A 1A 0A    文件头

00 00 00 0D    说明IHDR头块长为13

49 48 44 52    IHDR标识(ascii码为IHDR)

00 00 03 BD  图片的宽 

00 00 02 0F  图片的高

08 06 00 00 00  图片颜色信息

BF A8 B9 66    CRC校验码

 

29,gif文件: 文件头      47 49 46 38

       RAR                    文件头:52 61 72 21

30,kali更新源:

leafpad /etc/apt/sources.list

在原来的源前面加 #

将下面的两个源添加上:保存退出

#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#中科大kali源
deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

然后执行:

apt-get update        (更新列表)

apt-get upgrade      (更新系统软件,更新的内容比较多,时间较长,20min左右)

apt-get dist-upgrade

31,设置开机启动

systemctl enable apache2   //开机启动Apache2

32,linux设置时区(ubuntu)

sudo tzselect

然后选择亚洲Asia,继续选择中国China,最后选择北京Beijing。


然后创建时区软链

sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

现在看下时间,是不是已经正常了呢。

33, rar的png类型编码是rar压缩指定的png标志,和png的文件头没什么关系,只是rar压缩中对文件的标识

png:A8 3C 74

34,

端口号服务名称和内容
21FTP 文件传输协议的命令端口
22SSH较安全的远程连接协议
23Telnet 早期的连接服务器软件
25SMTP 邮件传输协议
53 DNS 域名解析服务器
80/8080/3128/8081/9080HTTP 协议代理服务器
110 pop3邮件接受协议
443HTTPS 有加密安全的www服务器
3306MYSQL
3389WIN2003 远程登录默认端口
1521Oracke数据库
1433MYSQL_server
1080QQ
69tFTP
8080TOMCAT
445/139SMP共享服务
67/68dhcp
  
  
  

35,windows启用管理员:

1,用管理员身份打开cmd ;2,开启管理员 : net user administrator /active:yes

3, 设置管理员密码: net user administrator 123123

 

36, 蓝牙传输协议 : OBEX

 

37,WIFI连接认证的重点在WPA的四次握手包,也就是 eapol 协议的包

tcp 是三次握手,当PSH标志位为1时意味着有数据的传输,我们可以通过分组详情中注意到TCP层下面还有一个Data字段,Data字段就是这个数据包所包含的数据

38, linux 中的字典生成工具   crunch (kali自带)  用法:https://www.jianshu.com/p/a3401b0f3d9a

 

39,DNS即Domain Name System,域名系统,作为Internet的一个重要组成部分,和常用的协议。DNS采用53端口基于UDP协议,当数据量大时,采用TCP协议。DNS协议的作用是把域名解析到IP地址,或者实现不通域名的跳转等等。在网络安全中也常用DNS数据包作为信息的载体,以绕过防火墙等安全设施。

40,DNS协议查询和应答字段往往会传输大量的数据,所以可以用于隐藏数据。在常见的CTF和网络安全的实际应用中,往往会出现DNS夹杂数据的情况出现。

41,FTP即File Transfer Protocol,文件传输协议。常用与互联网上对文件的操作,方便用户上传与下载,并对服务器的文件进行操作。用户通过一个支持FTP协议的客户端程序,连接到在远程主机上的FTP服务器。通过客户端程序向服务端发出命令,服务端执行用户所发出的命令,并将执行的结果返回到客户端。

 

42,volatility 的一些操作:

1,使用imageinfo插件获取到基本信息,特别是内存数据是什么操作系统下生成的

volatility -f easy_dump.img imageinfo

2,查看进程列表:

volatility -f easy_dump.img --profile=Win7SP1x64 pslist

3,提取某个进程为文件

volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 表中的PID值  -D ./

4,列举缓存在内存的注册表 :

volatility -f easy_dump.img --profile=Win7SP1x64 hivelist

5,hivedump 打印出注册表中的数据 :

volatility -f easy_dump.img --profile=Win7SP1x64 hivedump -o 表中Virtual地址

6,获取SAM表中的用户 :

volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”

7,获取最后登录系统的账户 :

volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” 

8,提取内存中保留的 cmd 命令使用情况 。

volatility -f easy_dump.img --profile=Win7SP1x64 cmdline
volatility -f easy_dump.img --profile=Win7SP1x64 cmdscan

9,获取到当时的网络连接情况 。

volatility -f easy_dump.img --profile=Win7SP1x64 netscan

10,获取 IE 浏览器的使用情况。 

volatility -f easy_dump.img --profile=Win7SP1x64 iehistory

11, 获取内存中的系统密码,我们可以使用 hashdump 将它提取出来 。

 

volatility -f easy_dump.img --profile=Win7SP1x64 hashdump -y (注册表 system 的 virtual 地址 )-s (SAM 的 virtual 地址)

12,文件扫描:

volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "doc\|docx\|rtf"
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "png\|pdf\|jpeg\|jpg\|gif\|bmp"
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "Desktop"

13,查看截图:

volatility -f easy_dump.img --profile=Win7SP1x64 screenshot --dump-dir=./

14,查看tcp连接:tcp连接池扫描:
 

volatility -f easy_dump.img --profile=Win7SP1x64 connscan

43,在解密RSA 中:

N = n = q * p

r = (q-1)(p-1)

d =( pq + 1 )/e

公钥: (N,e)

私钥: (N,d)

44,异或运算:(XOR ,^,)

23  ^ 11 = 28

7 ^ 11 = 12

2 ^ 3 = 1

其实 是将 十进制 转为 二进制  然后 对齐 进行 异或运算(同为 0,异为 1)

45,openssl 对rsa的加密解密操作:

RSA PEM文件格式

1.PEM私钥格式文件

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

2. PEM公钥格式文件

-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

3. PEM RSAPublicKey公钥格式文件

-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----

OpenSSL密钥相关命令

 

1,生成一个私钥。后面的1024是生成密钥的长度。

openssl genrsa -out rsa_private_key.pem 1024

2,生成私钥对应的公钥:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

-in指定输入文件,-out指定提取生成公钥的文件名。至此,我们手上就有了一个公钥,一个私钥,现在可以将用公钥来加密文件了。

利用此前生成的公钥加密文件 

openssl rsautl -encrypt -in hello -inkey rsa_public_key.pem -pubin -out hello.en 

-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。

3,解密文件:

openssl rsautl -decrypt -in flag.enc -inkey rsa_private_key.pem

-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件。

 

4,提取 公钥 pubkey.pem 中的 参数:

openssl rsa -pubin -text -modulus -in warmup -in pubkey.pem

46, 

.php.bak

是在编辑这个文件时,自动生成的备份文件

如果编辑后没有什么问题,可以删除.BAK文件。

47 .git文件泄露的原理

git相当于是一个用于储存网站项目源码的仓库

用 git命令可以管理 git这个仓库

例如:

git init命令初始化一个空的Git 仓库

git status命令可以查看仓库状态,列出当前目录所有还没有被git管理追踪的文件和被git管理且被修改但还未提交更新的文件.

git commit提交更新到仓库

.git目录

在我们使用git init初始化git仓库的时候,会生成一个.git的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。

 

  • COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考
  • config:这个是GIt仓库的配置文件
  • description:仓库的描述信息,主要给gitweb等git托管系统使用
  • HEAD:这个文件包含了一个档期分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent
  • hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他
    git托管系统会经常用到hook script
  • index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
  • info:包含仓库的一些信息
  • logs:保存所有更新的引用记录
  • objects:所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名
  • refs:这个目录一般包括三个子文件夹,heads、remotes和tags,heads中的文件标识了项目中的各个分支指向的当前commit
  • ORIG_HEAD:HEAD指针的前一个状态

48,.DS_Store文件

.DS_Store是一种由苹果公司Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性

例如文件们的图标位置或者是背景色的选择。[2]该文件由Finder创建并维护,类似于Microsoft Windows中的desktop.ini文件

Mac OS X的Finder程序会在进行存取的每个目录下创建.DS_Store文件,甚至是在远程系统上的目录(例如通过SMB连接或者苹果文件协议连接来共享的目录),并且甚至如果用户仅仅通过移动该目录的Finder窗口自定义了其显示

49,mysql 中遇到的问题:

问题一:

在脚本中连接数据库时蹦出来的问题:

mysqli_connect(): (HY000/1698): Access denied for user 'root'@'localhost'

解决办法:

mysql -u root

use mysql;

update user set plugin='mysql_native_password' where user='root';

flush privileges;

exit


service mysql restart

然后执行:

mysql -u root -p

输入密码,如果登不进去了,去修改密码

mysql -u root

update mysql.user set authentication_string=password('root') where host='localhost' and user='root';

flush privileges;

应该就可以了

问题二:

创建 新用户并 赋予新用户 所有权限后  在用新用户登录后,创建数据库时出现:新用户不能创建数据库

create database sd;

ERROR 1044 (42000): Access denied for user 'luohao'@'%' to database 'sd'

解决办法:(应该是权限赋予的不对,重新赋予新用户权限)

mysql -u root -p

输入密码

mysql> grant all on *.*
    -> to luohao identified by 'root'
    -> with grant option;

flush privileges;

exit

service mysql restart

50,命令执行漏洞

涉及到的函数:PHP中的  system()exec()eval()shell_exec()passthru()、assert()等函数

函数功能:

system():

system ( string $command [, int &$return_var ] ) : string

操作系统 — 执行外部程序并显示输出

exec():

exec (字符串 $command [,数组 &$output [, int &$return_var ]]):字符串

exec()执行给定的 commandEXEC - 执行外部程序

 

passthru():

passthru (字符串 $command [, int &$return_var ]): void

函数是类似于 EXEC()的功能,它执行 command。当Unix命令的输出是二进制数据且需要直接传递回浏览器时,应使用此函数代替exec()或 system()。这样做的常见用法是执行类似pbmplus实用程序的程序,该程序可以直接输出图像流。通过将Content-type设置为image / gif,然后调用pbmplus程序输出gif,可以创建直接输出图像的PHP脚本,没有返回值

shell_exec():

shell_exec (字符串 $cmd ):字符串

shell_exec — 通过外壳执行命令并以字符串形式返回完整的输出

 assert():

assert ( mixed $assertion [, Throwable $exception ] ) : bool

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。 assertion 是字符串的优势是当禁用断言时它的开销会更小,并且在断言失败时消息会包含 assertion 表达式。 这意味着如果你传入了 boolean 的条件作为 assertion,这个条件将不会显示为断言函数的参数;在调用你定义的 assert_options() 处理函数时,条件会转换为字符串,而布尔值 FALSE 会被转换成空字符串。  assert_options()函数是assert()的约束版本

assert_options(ASSERT_ACTIVE, 1);  将ASSERT_ACTIVE置1,即打开 assert()功能

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值