笔记

python编程

初级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#平方
5**2 #5**2=25

#train
train = {1:{'序号':1,'属性1':'哈哈'},2:{},3:{},4:{},5:{}}
count = max(train.keys()) #count = 5

#函数
#函数内用全局变量
def testB():
global a #a是函数外定义的全局变量,用了global后函数内修改的就是全局变量

#for循环
for i in range(0,5,1): #0,1,2,3,4,第三个参数不写的话默认是1
for i in range(5,-1,-1): #4,3,2,1,0

#一维数组
a = [0,0,0]

#二维数组
a = [[]]*3 #即a=[[],[],[]],但不同于直接定义的a=[[],[],[]]
#实践说话:
>>> d = [[]]*3
>>> d[0].append("123")
>>> print(d)
[['123'], ['123'], ['123']]
>>> e = [[],[],[]]
>>> e[0].append("123")
>>> print(e)
[['123'], [], []]
a = [[0 for i in range(2)] for i in range(2)] #a = [[0,0],[0,0]]

#列表
#列表去重 https://blog.csdn.net/qdPython/article/details/121051323
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
lst = list(set(l1)) #lst = [1,2,3,5,6]

li=['1','2','3','4','5','1','2','3']
new_li=[]
for i in li:
if i not in new_li:
new_li.append(i)
print(new_li)

#列表元素个数
a = len(lst) #a = 4
#列表元素下标
target_list = [35, 67, 6, 77, 89, 98]
print(target_list.index(89)) #4
#列表改升序
num.sort()

#保留3位小数
#round
round(x,3) #x = 3.1415926 -> x = 3.141
# decimal
from decimal import Decimal
Decimal('3.897654326').quantize(Decimal('0.000'))

#随机数
#生成 0 ~ 9 之间的随机数
import random
print(random.randint(0,9))
#产生n--m之间的k个整数 https://blog.csdn.net/zq476668643/article/details/95219453
import numpy as np
print(np.random.randint(1,50,5))

#deepcopy:python对于列表这些变量,赋值只是简单赋内存地址,用deepcopy可解决这一问题
import copy
a = [{123},{456},{789}]
b = copy.deepcopy(a)

WEB(荐)

学习资料:

    链接1:https://mp.weixin.qq.com/s/vKmmGzh_i6QbBR_xPUtk_A

        注:微信公众号(三叶草小组Syclover),有兴趣的可以关注一下

    链接2:https://mp.weixin.qq.com/s/4MeV5XFFJ4Q67bNmJNfseA

    链接3(逆向):https://mp.weixin.qq.com/s/tBCy3zegkWN_PkKIGTORvA

    链接4(pwn):https://mp.weixin.qq.com/s/GDso2Y_cYwV5iOSGWAmICA

    链接5(web):https://mp.weixin.qq.com/s/8a7kHZlwZRtOCkEwLEYqrQ


    链接1里的一句话:当然我的意思不是必须学完这些所有基础才能进一步学习安全,很多时候都是在研究具体某个安全问题的时候才会临时去学习相关的知识。



PWN

学习资料:

    链接:简介 - CTF Wiki (ctf-wiki.org)

    链接:pwnable.kr



Python

1、代码中存在中文时报错:

1
SyntaxError: Non-ASCII character '\xe8' in file D:/PyCharmProject/TempConvert.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

原因:注释里面出现了中文,而 Python 支持的 ASCII 码无中文。

解决方法:

1
2
3
4
# -*- coding: utf-8 -*-

# 这样也行
# coding:utf-8

注意:本行要添加在源代码的第一行


2、print语句在python2与python3中使用方式不同,python3的print需加(),而python2不需要加括号


3、python3与python2中print的区别

1
区别: Python2中 的 print 是一个关键字,而 Python3 里的 print 是一个 函数 。 关键字用法“ print 要打印的内容”; 函数 用法“ print (要打印的内容)”。 总地来说, Python2.7的 print 不是一个function,而 Python3 里的 print 是一个function。



正则表达式

    链接:正则表达式 – 语法 | 菜鸟教程 (runoob.com)



PHP

phpstorm:

        注:不想选择评估免费版本的话,安装好后不要动,先去淘宝买激活码(附带激活教程)

        (很多软件都可以通过淘宝买激活码的方式获取专业版使用权限。白嫖党请自行去寻找资源)

        链接(基本教程):PhpStorm的使用教程(本地运行PHP+远程开发+快捷键) - 知乎 (zhihu.com)

        链接(汉化教程):https://blog.csdn.net/weixin_46397725/article/details/107443128

        链接(进阶教程):https://blog.csdn.net/fangkang7/article/details/112383620

注:若找不到php.exe文件,请下载 wampserver 教程如下:↓


wampserver:

        链接:wampserver下载安装使用教程_空心人的博客-CSDN博客_wampserver

        链接:PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration. - 易几 - 博客园 (cnblogs.com)


效果图如下:

image-20220209205600804



HTML

1
2
词条收录:
HTML <link> 标签

解决乱码:

1
2
3
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
or
<meta http-equiv="Content-Type" content="text/html;charset=GBK"/>

根据具体情况在自己的代码中选择一句进行添加

image-20220210173002721


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<input>标签disabled属性:
<input type="text" name="lname" disabled="disabled" />

下拉框默认选中(selected):
<select>
<option>大专</option>
<option selected>本科</option>
<option>硕士</option>
</select>

<input>默认选中(checked):
<input type="radio" name="state" checked/><label for="male">未婚</label>
<input type="radio" name="state"/><label for="female">已婚</label>
<input type="radio" name="state"/><label for="secret">保密</lable>

下拉框:
<select>
<option></option>
</select>
例:
<body>
<form action="">
<select name="city">
<option value="fuzhou">福州</option>
<option value="xiamen">厦门市</option>
<option value="quanzhou">泉州</option>
<option value="zhangzhou">漳州</option>
</select>
</form>
</body>


----------------------------------------------------------------
link 标签中“rel=stylesheet”的作用:
rel各个属性值配置的意思:
Alternate -- 定义交替出现的链接
** Stylesheet -- 定义一个外部加载的样式表
Start -- 通知搜索引擎,文档的开始
Next -- 记录文档的下一页.(浏览器可以提前加载此页)
Prev -- 记录文档的上一页.(定义浏览器的后退键)
Contents
Index -- 当前文档的索引
Glossary -- 词汇
Copyright -- 当前文档的版权
Chapter -- 当前文档的章节
Section -- 作为文档的一部分
Subsection -- 作为文档的一小部分
Appendix -- 定义文档的附加信息
Help -- 链接帮助信息
Bookmark -- 书签

我们用这样的方式<link rel="stylesheet" href="css/bootstrap.css">
引入外部的css文件时,一定不能忘记rel属性的配置。

----------------------------------------------------------------



CSS

1
2
3
4
5
词条收录:
CSS border-style 属性
CSS display 属性
CSS position 属性
CSS border-bottom 属性

1
2
3
4
5
6
7
8
9
10
11
12
13
例:
.search-index {
display: flex; #灵活布局
position: fixed;
height: 44px;
width: 100%;
max-width: 540px;
min-width: 320px;
background-color: #F6F6F6;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}

position: fixed会导致顶部搜索栏固定,即使滚轮移动也会使搜索栏在最顶部不动

image-20220309095915969



MySQL

    学习链接:MySQL 基础课程_MySQL - 蓝桥云课 (lanqiao.cn)


MySQL安装:

1
2
3
4
5
sudo service mysql start             #检查Linux系统中是否已安装MySQL
sudo apt-get install mysql-server #安装 MySQL 服务端、核心程序
sudo apt-get install mysql-client #安装 MySQL 客户端
sudo netstat -tap | grep mysql #检查是否安装成功
sudo gedit /etc/mysql/my.cnf #修改 MySQL 的配置文件

MySQL使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#windows下
#net start mysql 启动 mysql 服务
#net stop mysql 关闭 mysql 服务

mysql -hlocalhost -uroot -proot #进入mysql数据库,其中-h表示服务器名,localhost表示本地;

>> mysql -hlocalhost -uroot -p321qwe

#-u为数据库用户名,root是mysql默认用户名;-p为密码,如果设置了密码,可直接在-p后直接输入。


#linux
sudo service mysql start #linux下启动 MySQL 服务
mysql -u root #使用 root 用户登录,实验楼环境的密码为空,直接回车就可以登录

数据库:
show databases; #查看数据库
CREATE DATABASE <数据库名>; #创建数据库,大部分情况SQL语句不区分大小写
use <数据库名>; #连接/进入数据库
DROP DATABASE <数据库名>; #删除数据库

表:
show tables; #查看表
SELECT * FROM <表名>; #查看表中的所有内容
CREATE TABLE <表名> #新建表
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);
#例:CREATE TABLE employee (id int(10),name char(20),phone int(12));

INSERT INTO <表名>(列名a,列名b,列名c) VALUES(值1,值2,值3); #向表中插入数据
RENAME TABLE 原名 TO 新名字; #重命名表
DROP TABLE <表名>; #删除表


quit (or) exit #退出
source xxx.sql #加载.sql文件中的SQL语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
增:
ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束; #表中增加一列
ALTER TABLE 表名字 ADD 列名字 数据类型 约束; #表中增加一列
DEFAULT、AFTER、 FIRST 关键字:
ALTER TABLE employee ADD height INT(4) DEFAULT 170; #末尾增加一列
ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age; #age列后增加一列
ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST; #增加在第一列

删:
DROP DATABASE <数据库名>;
DROP TABLE <表名>;
ALTER TABLE 表名字 DROP COLUMN 列名字; #删除指定列
ALTER TABLE 表名字 DROP 列名字; #删除指定列
DELETE FROM 表名字 WHERE 条件; #删除一行记录
DELETE FROM employee WHERE name='Tom'; # ↑ 删除Tom的数据

改:
RENAME TABLE 原名 TO 新名字; #重命名表
ALTER TABLE 原名 RENAME 新名; #重命名表
ALTER TABLE 原名 RENAME TO 新名; #重命名表
ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束; #重命名列
ALTER TABLE 表名字 MODIFY 列名字 新数据类型; #改变数据类型
UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件; #修改表中某个值 ,注:一定要有 WHERE 条件
update 表名 set 字段名=‘新内容’ where 条件;
# https://blog.csdn.net/qq_42254088/article/details/81705274

查:
SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; #select语句基本格式
SELECT * FROM <表名>; #查看表中的所有内容
SELECT name,age FROM employee WHERE age>25; #WHERE 限制条件
SELECT name,age,phone FROM employee WHERE name='Mary';
# OR 与 AND
SELECT name,age FROM employee WHERE age>25 AND age<30;
# IN 与 NOT IN
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4');
# 通配符 _ 与 % ,通常与实现模糊查询的LIKE关键字联用
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__'; #查询6位号码
SELECT name,age,phone FROM employee WHERE name LIKE 'J%'; #查询J开头的字符
# ORDER BY 排序关键字,默认为升序,可用 ASC 与 DESC 指定 升序 或 降序
SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;#按表中salary的值排序

# 内置函数与计算
函数名: COUNT SUM AVG MAX MIN
作用: 计数 求和 求平均值 最大值 最小值
SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee; #找出最大最小值
## 想要知道名为 "Tom" 的员工所在部门做了几个工程。员工信息储存在 employee 表中,
## 但工程信息储存在 project 表中。 ↓ 子查询
SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt
HAVING of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
## 上面代码包含两个 SELECT 语句,第二个 SELECT 语句将返回一个集合的数据形式, ↑
## 然后被第一个 SELECT 语句用 in 进行判断。
## HAVING 关键字可以的作用和 WHERE 是一样的,都是说明接下来要进行条件筛选操作。
## 区别在于 HAVING 用于对分组后的数据进行筛选

# 连接查询 ,join
SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt = department.dpt_name
ORDER BY id;
##这条语句查询出的是,各员工所在部门的人数,其中员工的 id 和 name 来自 employee 表,
##people_num 来自 department 表:
##另一种格式 ,结果相同 ↓
SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt = department.dpt_name
ORDER BY id;

Show命令:https://blog.csdn.net/zztfj/article/details/6181379 ↓ 摘录如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。
2. show databases; -- 显示mysql中所有数据库的名称。
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。
4. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。
5. show index from table_name; -- 显示表的索引。
6. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
7. show variables; -- 显示系统变量的名称和值。
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
9. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
10. show privileges; -- 显示服务器所支持的不同权限。
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。
14. show innodb status; -- 显示innoDB存储引擎的状态。
15. show logs; -- 显示BDB存储引擎的日志。
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。
17. show errors; -- 只显示最后一个执行语句所产生的错误。
18. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。

数据类型

数据类型 大小(字节) 用途 格式
INT 4 整数
FLOAT 4 单精度浮点数
DOUBLE 8 双精度浮点数
ENUM 单选,比如性别 ENUM(‘a’,’b’,’c’)
SET 多选 SET(‘1’,’2’,’3’)
DATE 3 日期 YYYY-MM-DD
TIME 3 时间点或持续时间 HH:MM:SS
YEAR 1 年份值 YYYY
CHAR 0~255 定长字符串
VARCHAR 0~255 变长字符串
TEXT 0~65535 长文本数据

整数除了 INT 外,还有 TINYINT、SMALLINT、MEDIUMINT、BIGINT。

CHAR 长度固定,VARCHAR 长度可变,VARCHAR长度==具体分配的字符串长度

CHAR, VARCHAR,TEXT,DATE,TIME,ENUM 等类型的数据需要用单引号修饰

详细介绍:


SQL常见约束

约束类型: 主键 默认值 唯一 外键 非空
关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL

其他基本操作

1
2
3
4
5
6
7
8
索引:

视图:

导入和导出:

备份和恢复:



SQLi-Labs

    链接:SQLi-Labs下载、安装(环境搭建)教程 - 付杰博客 (fujieace.com)

    链接:sqli-labs安装教程_wwt260的博客-CSDN博客


首先,在 GitHub - Audi-1/sqli-labs 上下载压缩的sqli-labs文件

image-20220215202111964


其次,在 www.xp.cn 找到以下界面下载 phpStudy 做前期准备

image-20220215202329165


phpStudy安装好后,找到WWW目录,将sqli-labs文件解压至WWW目录

image-20220215202745379


之后进入以下两个目录找到该.inc文件,将$dbpass的值从空字符串改成 ‘root’ 即可

image-20220215203057013


最后调配 phpStudy ,打开MySQL与Apache

image-20220215203827439

软件管理中下载php5.4.45nts并将下图中php版本调配到php5.4.45nts

image-20220215204749877


注:若不修改php版本为5.4.45,则会遇到如下报错:

image-20220215204445997


完成以上步骤后,进入网页中输入 http://localhost/sqli-labs-master/ ,点击Setup/reset Database for labs

image-20220215205118928


显示以下界面说明调配成功,可以开始你的SQL手工注入学习之旅了

image-20220215205237256


回到 http://localhost/sqli-labs-master/ ,查看第一题是什么样的

image-20220215205453686

好了,开始做题吧 ^_^

image-20220215205556248



MarkDown

    学习链接:Markdown 基本语法 | Markdown 官方教程

1
2
3
4
5
6
7
个人用到过的:
# <center> 一级标题 #居中,一级标题前加入<center> 即可完成居中
<br/> #换行
&nbsp; #空格
<font color="Blue">Test</font> #修改字体颜色为蓝色

&nbsp;&nbsp;&nbsp;&nbsp;


hexo

因为老师要求各类软件,导致无法将博客同步至网上,便找到了一个帮我解决了问题的博客

链接:(完美解决 bash: hexo: command not found_BOB’S BLOG-CSDN博客

网站构建

    学习链接:网站构建教程 (w3school.com.cn)



学&录

推荐书籍:

1
2
3
4
基础类:《图解HTTP》*、《图解TCP/IP》*、《网络是怎样连接的》、《MySQL必知必会》、
《图解密码技术》......

进阶类:《白帽子讲web安全》、《CTF特训营》、《程序员的自我修养》、《CTF权威指南》......

网站:

链接:攻防世界 (xctf.org.cn)

链接(pwn):https://ctf-wiki.org/

链接(pwn):http://pwnable.kr/

链接:蓝桥云课 (lanqiao.cn)

链接:合天网安实验室 (hetianlab.com)

链接:w3school 在线教程

链接(课内):https://www.xuetangx.com/

链接:清华大学开源软件镜像站 | Tsinghua Open Source Mirror

链接(一个神奇的网站):MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)


HTML:

    链接:https://www.bilibili.com/video/BV11t411K74Q?share_source=copy_web

    链接:https://www.w3school.com.cn/html/index.asp


PHP:

    链接:https://www.bilibili.com/video/BV1Vp4y1e7pz

    链接:PHP 教程 (w3school.com.cn)


MySQL:

    链接:MySQL 基础课程_MySQL - 蓝桥云课 (lanqiao.cn)


NISP

链接:nisp一级题库

来源链接:https://blog.csdn.net/weixin_43931875/article/details/108005695



啥也不会__╭(°A°`)╮__



收藏

GPS劫持:https://toutiao.io/posts/uax8a1p/preview

(1条消息) GPS欺骗(一)—无人机的劫持_xiaoi123的博客-CSDN博客_gps欺骗

GPS相关内容推荐:

1、 HTML5之GPS定位保存【附源码】

2、源码分享:代码完结一款多用户Gps定位平台

3、克里姆林宫疑似开启GPS干扰器:当地民众定位异常 **
**

4、时空线索——Hack Key 邂逅 GPS——袁舰、张婉桥


你想了解的炫酷白帽黑客技能都在这!【i春秋】 (ichunqiu.com)


付杰博客 - 专注“IT/互联网“领域,主攻”PHP编程+渗透测试“技术 (fujieace.com)


https://www.const27.com/2021/09/03/windows%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%80%BB%E6%B1%87/