def

2020湖湘杯复赛Writeup

时光总嘲笑我的痴心妄想 提交于 2021-02-14 07:59:02
Web 题目名字不重要反正题挺简单的 解题思路 非预期解:flag在phpinfo里显示出来了 NewWebsite 解题思路 http://47.111.104.169:56200/?r=content&cid=2 cid参数存在SQL注入漏洞,没有任何过滤,得到后台账号密码为admin/admin 进入后台发现水印图片那里有个php3文件,访问是phpinfo,没什么用 然后访问 /upload/watermark/ 目录,发现可以目录遍历,有可以解析的shell文件 http://47.111.104.169:56200/upload/watermark/82061604228330.php3 盲猜密码cmd 这里猜测预期解应该是上传 .php3|.phtml 类型后缀进行绕过,但是当时我这个靶机好像有问题,无法上传任何文件,看到了目录遍历直接解了。 Misc password 解题思路 下载后解压发现 WIN-BU6IJ7FI9RU-20190927-152050.raw 文件 直接拖到kali用 volatility 分析 volatility -f WIN-BU6IJ7FI9RU-20190927-152050.raw imageinfo 判断为 Win7SP1x86 volatility -f WIN-BU6IJ7FI9RU-20190927-152050.raw -

拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息

柔情痞子 提交于 2021-02-14 07:44:29
首先前往 拉勾网“爬虫”职位相关页面 确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是POST 使用requests的post方法获取数据,发现并没有返回想要的数据,说明需要加上headers和每隔多长时间爬取 我们可以看到拉勾网列表页的信息一般js加载的都在xhr和js中,通过发送ajax加载POST请求,获取页面信息。 这个是ajax的头信息,通过Form Data中的的信息获取页面 下面是scrapy爬虫的 代码部分 1 import scrapy 2 import json 3 from lagou.items import LagouItem 4 class LagoupositionSpider(scrapy.Spider): 5 name = ' lagouposition ' 6 allowed_domains = [ ' lagou.com ' ] 7 kd = input( ' 请输入你要搜索的职位信息: ' ) 8 ct =input( ' 请输入要搜索的城市信息 ' ) 9 page=1 10 start_urls = [ " https://www.lagou.com/jobs/list_ " +str(kd)+ " &city= " + str

Python读取excel中的图片

情到浓时终转凉″ 提交于 2021-02-13 23:46:02
  作为Java程序员,Java自然是最主要的编程语言。但是Java适合完成大型项目,对于平时工作中小的工作任务,需要快速完成,易于修改和调试,使用Java显得很繁琐,需要进行类的设计,打成jar包,出现bug,需要重新修改打包。这就需要一门快速开发,方便运行调试的语言。python作为一门脚本语言,可以实现快速编写和快速调试等特性,很适合用于解决日常工作中小的工作任务。一般使用结构化的编程思路,按照流程一步一步的完成各个函数,就能快速的完成工作任务。 例如:   excel中有图片是很常见的,但是通过python读取excel中的图片没有很好的解决办法。   网上找了一种很聪明的方法,原理是这样的:   1、将待读取的excel文件后缀名改成zip,变成压缩文件。   2、再解压这个文件。   3、在解压后的文件夹中,就有excel中的图片。   4、这样读excel中的图片,就变成了读文件夹中的图片了,和普通文件一样,可以做各种处理。   解压后的压缩包中有xl/media目录,目录中有excel中使用的图片。 python脚本如下: 1 ''' 2 File Name: readexcelimg 3 Author: tim 4 Date: 2018/7/26 19:52 5 Description: 读取excel中的图片,打印图片路径 6 先将excel转换成zip包

python 面向对象之多态与绑定方法

只谈情不闲聊 提交于 2021-02-13 21:24:16
多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say hello') class Dog(Animal): #动物的形态之二:狗 def talk(self): print('say wangwang') class Pig(Animal): #动物的形态之三:猪 def talk(self): print('say aoao') 1.2 文件有多种形态:文本文件,可执行文件 import abc class File(metaclass=abc.ABCMeta): #同一类事物:文件 @abc.abstractmethod def click(self): pass class Text(File): #文件的形态之一:文本文件 def click(self): print('open file') class ExeFile(File): #文件的形态之二:可执行文件 def click(self):

Python绑定方法与非绑定方法

百般思念 提交于 2021-02-13 21:23:36
绑定方法 绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 绑定到类的方法:用classmethod装饰器装饰的方法,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调用也会将类当作第一个参数传入,python为我们内置了函数classmethod来把类中的函数定义成类方法 绑定到对象的方法:没有被任何装饰器装饰的方法。 #settings.py HOST='127.0.0.1' PORT=3306 DB_PATH=r'C:\Users\Administrator\PycharmProjects\test\面向对象编程\test1\db' #test.py import settings class MySQL: def __init__(self,host,port): self.host=host self.port=port @classmethod def from_conf(cls): print(cls) return cls(settings.HOST,settings.PORT) print(MySQL.from_conf) #<bound method MySQL.from_conf of <class '__main__.MySQL'>> conn=MySQL.from_conf() conn.from_conf()

面向对象编程(封装、封装的意义、封装与扩展性、@property)

瘦欲@ 提交于 2021-02-13 20:45:14
1.封装之如何实现属性的隐藏 封装: __x=1 # 把数据属性隐藏 (如何实现隐藏) 类定义阶段 __开头发生了变形 __x --> _A__x 特点:   1.在类外部无法直接:obj.__AttrName   2.在类内部是可以直接使用:obj.__AttrName # 为什么会这样?python 如何实现的 !类定义阶段已经变形 #__x --> _A__x #self._A_foo()   3.子类无法覆盖父类__开头的属性 它两根本不是一个名字 #_Foo__func #_Bar__func 总结: 这种变形需要注意的问题:   1.这种机制也并没有真正意义上限制我们从外部直接访问属性,知道了类名和属性名就可以拼出名字:_类名__属性,然后就可以访问了,如a._A__N eg:print(A._A__x)   2.变形的过程只在类的定义时发生一次,在定义后的赋值操作,不会变形 eg: b.__age=18 {'_B__name': 'alice', '__age': 18}   3.在继承中,父类如果不想让子类覆盖自己的方法,可以将方法定义为私有的 eg: def __foo(self): #_A__foo # class A: # __x = 1 # 把数据属性隐藏 _A__x # # def __init__(self,name): # self.__name =

Python面向对象之封装、property特性、绑定方法与非绑定方法

亡梦爱人 提交于 2021-02-13 20:44:46
一、封装 ''' 1、什么封装 封:属性对外是隐藏的,但对内是开放的(对内是开放的是因为在类定义阶段这种隐藏已经发生改变) 装:申请一个名称空间,往里装入一系列名字/属性 2、为什么要封装 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使用使用的, 隐藏之后是为了不让外部使用直接使用,需要类内部开辟一个接口(就是定义一个接口的函数,然后利用隐藏的原理对其进行封装,这样外部就可以间接使用被隐藏的属性) 然后让类外部的使用通过接口来间接地操作隐藏的属性。 精髓在于:我们可以在接口之上附加任意逻辑,从而严格控制使用者对属性的操作 封装函数属性 首先定义属性的目的就是为了给类外部使用的, 隐藏函数属性是为了不让外不直接使用,需要类内部开辟一个接口(最终还是给外部用的,只是封装成接口,对于使用者来说方便了) 然后在接口内去调用隐藏的功能 精髓在于:隔离了复杂度 3、如何封装 ''' # 如何隐藏:在属性前加上__开头(在类定义阶段这种隐藏已经发生变化为:_类__属性(数据属性/函数属性),这样外部的对象或类也可以使用这种方式直接用,但是没有意义) # 1、 这种隐藏仅仅只是一种语法上的变形操作 # 2、 这种语法上的变形只在类定义阶段发生一次,因为类体代码仅仅只在类定义阶段检测一次 # 3、 这种隐藏是对外不对内的,即在类的内部可以直接访问,而在类的外则无法直接访问,原因是 #

类的封装 、property、类的绑定方法

流过昼夜 提交于 2021-02-13 20:32:35
封装 第一个层面:对象能拿到类的东西,但是类拿不到对象的 创建类和对象会分别创建二者的名称空间,我们只能用类名,或者obj,的方式去访问里面的名字,这本身就是一种封装 第二个层面:内部可以使用的,外部不可以使用,在你需要封装的属性前加上__ 类中把某些属性和方法隐藏起来(或者定义成私有的),只有在类的内部使用,外部无法访问,或者留下少量的接口(函数)供外部访问. #正常情况 class A def fa(self): print('from A') def test(self): self.fa() class B(A) def fa(self): print('from B') b =B() b.test() # from B #把fa 定义成私有的,即__fa Class A: def __fa(self): print('from A') def test(self): self.__fa() class B(A) def __fa(self): print('from B') b = B() b.test() # from A 对属性这个封装有什么用:藏起来,保护了隐私,类的内部属性不想让其他人访问 对方法封装有什么好处:精简了代码,不用关心其他的操作 property特性 property 装饰器用于将被装饰的方法伪装成一个数据属性,在使用时可以不加括号直接使用

【Python】魔法方法之__call__,将对象当方法使用

*爱你&永不变心* 提交于 2021-02-13 20:27:30
1、问题 我刚开始接触爬虫的时候,只是看完了 python 的基础,对 python 的语法还没有一个很深入的了解,在使用 bs4 这个库的时候,对其中某些语法感到非常的惊奇,不明白是怎么实现的。 bs4 的官方文档中说到: find_all() 几乎是 Beautiful Soup 中最常用的搜索方法,所以我们定义了它的简写方法。 BeautifulSoup 对象和 tag 对象可以被当作一个方法来使用,这个方法的执行结果与调用这个对象的 find_all() 方法相同,下面两行代码是等价的: soup .find_all( "a" ) soup ( "a" ) 这里, soup 是一个 BeautifulSoup 对象, soup("a") 这很明显是把对象当方法使用了,这是怎么做到的呢? 2、实现 在 Python 中,除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。内置的 callable() 函数用来判断一个对象能否调用。就是说,任何 Python 对象都可以表现得像函数一样,为此,只需实现实例方法 __call__ 。 来看一个简单的示例: class Sum : def __init__ (self, x, y) : self._x = x self._y = y def add (self) : return self._x + self._y

pyecharts绘制map地图

青春壹個敷衍的年華 提交于 2021-02-13 20:24:58
pyecharts的安装和地图库的安装可以参照 geo绘图 : https://www.cnblogs.com/qi-yuan-008/p/12025123.html 直接进入 python的具体使用阶段: 首先是导入库和数据,数据可以换成自己想绘制的数据 from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.charts import Map # 用于测试的例子,部分取自 Faker ,也就是 from pyecharts.faker import Faker provinces = [ " 广东 " , " 北京 " , " 上海 " , " 辽宁 " , " 湖南 " , " 四川 " , " 西藏 " ] guangdong_city = [ " 汕头市 " , " 汕尾市 " , " 揭阳市 " , " 阳江市 " , " 肇庆市 " , " 广州市 " , " 惠州市 " ] country = [ " China " , " Canada " , " Brazil " , " Russia " , " United States " , " Africa " , " Germany " ] value = [300, 100, 2000, 800,