安全矩阵

 找回密码
 立即注册
搜索
楼主: Anatasha

周家敏学习日记

[复制链接]

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-3 22:23:05 | 显示全部楼层
本帖最后由 Anatasha 于 2020-3-17 22:22 编辑

第三章:数据表示和计算
补充:字典
0x01 字典对象的方法
d.keys():返回字典d中所有键的列表,类型为dict_keys
d.values():返回字典d中值的列表,类型为dict_values。
d.items():返回字典d中由键和相应值组成的元组的列表,类型为dict_items。
d.clear():删除字典d的所有条目。
d.copy():返回字典d的浅复制拷贝,不复制嵌入结构
d.update(x):将字典x中的键值加入到字典d。
d.pop(k):删除键值为k的键值对,返回k所对应的值
d.get(k[,y]):返回键k对应的值,若未找到该键返回none,若提供y,则未找到k时返回y。

0x02 建立一个字典对象,能够通过数字1-12表示月份,查阅对应的英文月份的缩写。
month = {1:'Jan', 2:'Feb', 3:'Mar',4:'Apr', 5:'May', 6:'Jun', 7:'Jul', 8:'Aug', 9:'Sep',10:'Oct',11:'Nov',12:'Dec' }
print(month[3])
for i in month.keys():
print(month,end='')

0x03 建立9*9乘法表。
i = 1
while i <= 9:
    j= 1
   while j <= 9:
       if i == j:
           print(j,"*",i,"=",i*j)
           break
       print(j,"*",i,"=",i*j,end = "  ")
       j+=1
i+=1

0x04 已有5位同学的姓名和成绩,按成绩从高到低列出同学姓名。
scores={60:"小A",70:"小B",80:"小C",90:"小D",100:"小E"}
L1=list(scores.keys())
L1.sort()
L2=[]
for i in range(0,len(L1)):
     L2.append(scores[L1])
print(L2)
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-6 22:18:33 | 显示全部楼层
第二章:算法概述
补充:枚举算法
设解的个数n初始为0;
循环(枚举每一可能解):
              若( 该解法满足约束 ) :
                     输出这个解;
                     解的数量n加1;


0x01 求1-1000中,能被3整除的数。
i = 0
j = 0
for i in range(1,1000):
   if i%3 == 0:
       j += 1
        print(i)


0x02 有四个嫌疑人:
           a说:"我不是小偷。"
           b说:"c是小偷。"
           c说:"小偷肯定是d。"
           d说:"c冤枉人!"
        四人中有三人说的是真话,问到底谁是小偷?
for i in ('a', 'b', 'c', 'd'):
   results = ('a' != i) + (i== 'c') + (i == 'd') + (i != 'd')
   if results == 3:
      print('小偷是:%s'%i)
#小偷是c


0x03 将苹果、桔子、香蕉、梨、菠萝5种水果做水果拼盘,每个水果拼盘有3种不同的水果,且有序摆放。问可以有多少种?
fruit=['apple','orange','banana','pear','pineapple']
n=1
for x in fruit:
   for y in fruit:
       if x!=y:
          for z in fruit:
               if z!=x and z!=y:
                    print(n,x,y,z)
                    n+=1


0x04 百钱买百鸡问题:有一个人有一百块钱,打算买一百只鸡。到市场一看,大鸡三块钱一只,小鸡一块钱三只,不大不小的鸡两块钱一只。现在,请你编一程序,帮他计划一下,怎么样买法,才能刚好用一百块钱买一百只鸡?
m = 0
for x in range(1,33):
   for y in range(3,98,3):
       for z in range(1,50):
           if x+y+z==100 and 3*x+y//3+2*z==100:
                print('大鸡:',x,'小鸡:',y,'不大不小鸡:',z)
                m+=1
print(m)

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-10 21:53:23 | 显示全部楼层
本帖最后由 Anatasha 于 2020-3-17 22:22 编辑

第二章:算法概述
补充:迭代与递推算法
0x01 迭代: 是一种不断用变量的旧值递推新值的过程。
应用迭代算法的通常步骤:
(1).确定迭代变量
存在一个直接或间接地不断由旧值递推出新值的变量,一般要指定其初始值。
(2).建立迭代关系式
从变量的前一个值推出其下一个值的公式或关系。(顺推或倒推)
(3).对迭代过程进行控制
a.迭代次数确定。可以构建一个固定次数的循环来实现对迭代过程的控制。(常用for语句)
b.迭代次数开始时无法确定。需要进一步分析出用来结束迭代过程的条件。 (常用while语句)

例:验证谷角猜想。对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以3 ,然后再加 1 。如此经过有限次运算后,总可以得到自然数 1 。
n = int(input("输入一个自然数:" ))
while n != 1:
   if n % 2 == 0:
      k = n / 2
      print("%d/2=%d" %(n, k))
      n = k
   else:
       m = n * 3 + 1
       print("%d*3+1=%d" %(n, m))
       n = m


0x02  递推:递推的过程实际上就是迭代的过程,即不断用变量的旧值推出新值的过程。
实施递推的步骤:
(1).确定递推变量:递推变量可以是简单变量,也可是一维或多维组合对象(数组)。
(2).建立递推关系:从变量的前一些值推出其下一个值的公式或关系。(关键)
(3).确定初始(边界)条件
(4).对递推过程进行控制

例:杨辉三角形:
第k行有k个数;
每行的首尾两数均为1;
除首尾两数外,其余各数均为上一行肩上两数之和。
n = int(input('输入杨辉三角形行数:' ))
y = [ [0 for k in range(n+1)] for k inrange(n+1)]
for i in range(1,n+1):
   y[1] = 1
   y = 1
for i in range(3,n+1):
   for j in range(2,i):
       y[j] = y[i-1][j-1] + y[i-1][j]
for i in range(1,n+1):
   for j in range(1,i+1):
       print('  ',y[j],end = ' ')
   print()
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-13 22:19:42 | 显示全部楼层
本帖最后由 Anatasha 于 2020-3-17 22:21 编辑

第五章 输入/输出

1、人机交互的方式:
输入数据
处理数据
输出数据
2、标准输入/出程序:
(1)标准输入函数:input()
例1:n个批量数据的输入示例
n=int(input('n='))
sum=0
for i in range(1,n+1):
   x=int(input('输入数字:'))
   sum+=x
print('sum=',sum)

例2:若干个批量数据的输入示例。输入一批正整数计算累加和,输入0结束。
s=0
x=int(input('请输入一个整数,0退出:'))
while x!=0:
   s+=x
   x=int(input('请输入一个整数,0退出:'))
print('sum=',s)

例3:输入批量数据到列表,统计它们的个数,总和以及平均值。
a=[]
x=float(input('输入数字,0退出:'))
while x!=0:
   a.append(x)
   x=float(input('输入数字,0退出:'))
n=len(a)
sum=0
for i in range(0,n):
   sum+=a
average=sum/n
print('总计:',sum)
print('平均值:',average)

(2)标准输出函数:print()
  格式符号
  
  表示类型
  
  格式符号
  
  表示类型
  
  %f/%F
  
  浮点数
  
  %o
  
  八进制整数
  
  %d/%i
  
  十进制整数
  
  %x/%X
  
  十六进制整数
  
  %s
  
  字符串
  
  %e/%E
  
  科学计数
  
  %u
  
  十进制整数
  
  %%
  
  输出%
  

3. 文件输入输出程序
(1)打开文件:r:只读;w:以写方式打开一个文件; t:表示文本文件,默认值。
(2)关闭:f.close()
(3)读取:f.read(size):返回一个字符串,内容为长度为size的文本。参数size表示读取的数量,可以省略。如果省略size参数,则表示读取文件所有内容,作为一个字符串返回。
f.readline():返回一个字符串,内容为文件当前一行的文本。
f.readlines()  :返回一个列表,列表的数据项为一行的文本[line1,line2,...lineN]。再通过循环操作可以逐行访问列表中每一行的内容。
(4)写入:f.write()
(5)定位:f.seek(offset,from_what)  
from_what值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始。
offset表示从from_what再移动一定量的距离。
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-17 22:19:18 | 显示全部楼层
第六章 函数与模块
一、函数的基本概念
函数的类型:
(1)自己编的函数,如常用的main()
(2)Python内建函数,如abs() (语言的一部分)
(3)Python标准库函数,如math.sqrt()和string.split()
(4)对象的方法, 如win.close()和p.draw()


二、Python语言中的函数
例1:生日歌
def happy():
   print(“Happy birthday to you!”)
def sing(person):
   happy()
   happy()
print(“Happy birthday,dear”, person + “.”)
   happy()
def main():
   sing(“Fred”)
   sing(“Lucy”)
   sing(“Elmer”)
main()


例2:老王卖西瓜,每天只卖总数的一半多两个。编一程序:(小于2000个),输出所需卖的天数。
def f5(d):
   day=0
   a=int(d)
   while a>1:
       b=a-(int(a/2)+2)
       a=b
       day+=1
   return day                             
x=int(input("输入西瓜总数:"))  
while x in range(0,2000):  
   print("所需天数:",f5(x))      
x=int(input("输入西瓜总数:"))


例3:求1~10的阶乘之和
def fact(n):
   factorial=1
   for counter in range(1,n+1):
       factorial*=counter
   return factorial
def main():
   s=0
   for i in range(1,11):
       s=s+fact(i)
   print("1!+2!+...+10!=",s)
main()


回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-18 22:54:26 | 显示全部楼层
第六章 函数与模块
3、函数应用
例:自顶向下逐步求精的程序设计(成绩管理系统)
def insert():
   input("insert()----unfinished." )
def find():
   input("find()----unfinished." )
def edit():
   input("edit()----unfinished." )
def delete():
   input("delete()----unfinished." )
def stat():
   input("stat()----unfinished." )
def main():
   print("score management system")
   print("1.insert score\n2.find score\n3.edit record\n4.deletescore\n5.statistics\n0.quit")
   while True:
       choice=input("please Enter(0-5):" )
       if choice=='1':  
           insert()
       elif choice=='2':
           find()
       elif choice=='3':
           edit()
       elif choice=='4':
           delete()
       elif choice=='5':
           stat()
       elif choice=='0':
           break
       else:     
           print("Enter error!Choice again.")
   print("Thank you visit!")
main()
4、模块和Python标准库
(1)内置模块
内置函数:print()、input()、type()、help()、dir()
(2)非内置模块:
A、调用:计算平方根
import math
print(math.sqrt(a*a+b*b))
B、导入方法:import  [模块名]、from [模块名] import [函数名]、from [模块名] import*
C、math库中的常用函数:
  
pi
  
e
fabs
trunc(x)
factorial(x)
pow(x,y)
sqrt(x)
常数π(近似值)
常数e(近似值)
求绝对值
将一个浮点数结尾为整数
求x的阶乘
求x的y次方
求x的平方根

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-22 18:04:58 | 显示全部楼层
1、 php基础语法:
<?php
echo "Hello World!"; // PHP 代码
?>

2、 变量:
(1)规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)

(2)例:
<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "<br>";
    echo "变量 y 为: $y";
}  

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

(3)global 关键字:用于函数内访问全局变量

(4)Static 作用域:当一个函数完成时,它的所有变量通常都会被删除。第一次声明变量时使用 static 关键字,某个局部变量不会删除。

(5)参数作用域:参数是通过调用代码将值传递给函数的局部变量。

3、echo 和 print 语句
(1)echo - 可以输出一个或多个字符串
<?php
echo “这是一个”,“字符串。”;
?>
(2)print - 只允许输出一个字符串,返回值总为 1
<?php
print “这是一个字符串。”;
?>”

4、 EOF (heredoc):是一种在命令行shell和程序语言里定义一个字符串的方法。
(1)使用概述:
1. 必须后接分号,否则编译通不过。
2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

(2)例:
<?php
$name="runoob";
$a= <<<EOF
        "abc"$name
        "123"
EOF;

echo $a;
?>

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-27 21:19:57 | 显示全部楼层
PHP数据类型
1、string(字符串)
<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
2、 Integer(整型)
<?php
$x = 5985;
var_dump($x);//返回变量的数据类型和值
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>
3、Float(浮点型)
例子与上面相似;浮点数是带小数部分的数字,或是指数形式。
4、Boolean(布尔型)
$x=true;
$y=false;
5、Array(数组)
<?php
$cars=array("Volvo","BMW","Toyota");//数组可以在一个变量中存储多个值
var_dump($cars);
?>  //array(3) { [0]=> string(5) "Volvo" [1]=> string(3)"BMW" [2]=> string(6) "Toyota" }
6、Object(对象):对象数据类型也可以用于存储数据,对象必须声明。
<?php
class Car  //class关键字声明类对象
{
  var$color;
function __construct($color="green") {
   $this->color = $color;
  }
function what_color() {
   return $this->color; //关键字this就是指向当前对象实例的指针
  }
}
?>
7、NULL(空值)
<?php
$x="Hello world!";
$x=null; //通过设置变量值为NULL 来清空变量数据
var_dump($x);
?>

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-31 21:54:49 | 显示全部楼层
PHP类型比较
PHP是弱语言类型,需要对变量进行比较,包括:
松散比较:使用两个等号==比较,只比较值,不比较类型。
严格比较:用三个等号===比较,除了比较值,也比较类型。
例如:
<?php
if(42 == "42") {
   echo '1、值相等';
}
echo PHP_EOL; // 换行符
if(42 === "42") {  "42"是一个字符串而 42 是一个整数
   echo '2、类型相等';
} else {
   echo '3、不相等';
}
?>
//结果:1、值相等
       3、不相等
PHP常量
常量是全局应用的,而且使用常量时,不能在常量名前添加$符号,不然会将常量转换成新的未定义变量使用,会导致报错。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现
<?php
define("GREETING", "欢迎访问");
function myTest() {
   echo GREETING;
}
myTest();   // 输出 "欢迎访问"
?>

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-4-4 19:06:02 | 显示全部楼层
本帖最后由 Anatasha 于 2020-4-4 19:07 编辑

记录一下Burp suite的安装过程
0x01 安装JDK
BurpSuite 需要 JAVA 环境才可以运行,所以我们需要在电脑中安装 JAVA 环境。
一直点击“下一步”即可完成安装。
然后还需要配置环境变量:
系统——高级系统设置——高级——环境变量
在系统变量中:
1.新建变量名:JAVA_HOME;值为jdk安装目录
2.Path变量直接在后面编辑加上
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
3.新建变量名:CLASSPATH;值为
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar


0x02 安装burpsuite
(1)一直next直到打开burpsuite界面
(2)开启监听:找到Proxy——Options——Proxy Listeners
一般默认地址:127.0.0.1;端口:8080
打开火狐浏览器:选项——高级——网络——连接
手动配置代理:


(3)安装证书:
Proxy——Options——Proxy Listeners
按图操作


选择安装目录,文件名为1.cer
打开火狐浏览器:选项——高级——证书——查看证书——证书机构——导入
导入刚刚的证书:1.cer

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 03:28 , Processed in 0.023287 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表