0%

胡辣汤做法

原材料:面粉,黄花菜,海带,木耳,豆皮,牛肉粒,

配料:葱姜蒜少许,八角香叶桂皮等。

前期准备:

1.先和面,面与水的比例为2:1

待到三光(手光,盆光,面光)即可将面放置醒面(20分钟左右)

2.将泡好的黄花菜,海带木耳和豆皮等清洗干净,均切成5-8cm的小段即可。

3.将醒好的面再次揉至结实且均匀,即可开始加入凉水“洗面”(加水揉面至水浑白,将水倒至容器内放置备用,反复多次后至清洗的水不发白,面紧实为止)

开始制作:

4.将切好的黄花菜,海带木耳下水焯水约一分钟左右捞出。

5.重新下油,将八角香叶桂皮等下锅炒出香味后捞出,加水和白葱碎煮至水烧开

6.将揉好的面团揪下一小段(大约一个大拇指左右)下入水中,依次下入。然后倒入煮过的黄花菜,海带,木耳。煮至水开

7.下入切好的牛肉粒及豆皮,然后煮开,将静置好的洗面水倒出上面的部分清水,然后搅拌均匀,缓慢倒入锅中同时朝一个方向搅拌(倒入的洗面水的量根据锅中水的量为准,此步是为了做出糊糊的感觉,所以可以根据喜好进行添加)

8.最后加入胡椒粉,生抽,蚝油及鸡精等调味料(个人风味添加)即可出锅。

shiro及漏洞复现

首先了解漏洞原理及利用方式,漏洞CVE为

CVE-2016-4437

其次,在shiro内的序列化处理中,将rememberMe字段的数据未做处理校验,开始直接存储和反序列化操作。导致RCE及任意代码执行。

准备:使用vulhub_app的shiro的docker环境,如下:

环境

登录时的数据包及逻辑如下

登录数据包

对于此字段rememberMe的反序列化利用链路如下:

ysoserial将命令进行序列化,然后将此命令所在的机器使用JRMP来搭建远程加载使用类。将远程利用类执行命令进行AES及Base64加密的方式将命令加载生成Cookie,替换原有的rememberMe的cookie进行RCE。

复现过程:

复现

复现2

复现3

Tips:from Crypto.Cipher import AES导入报错时:pip install crypto pycrypto pycryptodome

仍报错时可进入到pip的site-package内将crypto重命名为Crypto即可。

EleasticSearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

在ElasticSearch中有四个相关的概念:

  1. 索引 Index

  2. 类型 Type(7.X版本更新后被弃用)

  3. 文档 Documents

  4. 字段 Fields

我们可以将其类比到关系型数据库中,索引就是一个数据库,类型就是一张数据表,而文档就是数据表中的一行,字段就是数据表中的一列,如下图:

title

实际使用相关

0x00创建

创建索引使用PUT方式提交,路径为索引名称(名称必须为小写)

index

创建Documents使用post方法在索引后连接”_doc”或”_create”来创建(后接字符为指定id,其中_create必须后接id)

doc

0x01查询

select

select2

0x02更新

对于全量更新,可使用PUT或POST,但是局部更新必须使用POST(返回的幂等性原理)

update

update2

删除将请求方法改为DELETE即可。

Nginx配置缓存优先级

nginx的location配置

nginx location语法规则:location [=||*|^~] /uri/ { … }
nginx的location匹配的变量是$uri

符号 说明
= 表示精确匹配
^~ 表示uri以指定字符或字符串开头
~ 表示区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
/ 通用匹配,任何请求都会匹配到

规则优先级

1
=  高于  ^~  高于  ~* 等于 ~  高于  /

规则示例

1
2
3
4
location = "/12.jpg" { ... }
如:
[www.aminglinux.com/12.jpg](http://www.aminglinux.com/12.jpg) 匹配
[www.aminglinux.com/abc/12.jpg](http://www.aminglinux.com/abc/12.jpg) 不匹配
1
2
3
4
location ^~ "/abc/" { ... }
如:
[www.aminglinux.com/abc/123.html](http://www.aminglinux.com/abc/123.html) 匹配
[www.aminglinux.com/a/abc/123.jpg](http://www.aminglinux.com/a/abc/123.jpg) 不匹配
1
2
3
4
location ~ "png" { ... }
如:
[www.aminglinux.com/aaa/bbb/ccc/123.png](http://www.aminglinux.com/aaa/bbb/ccc/123.png) 匹配
[www.aminglinux.com/aaa/png/123.html](http://www.aminglinux.com/aaa/png/123.html) 匹配
1
2
3
4
location ~* "png" { ... }
如:
[www.aminglinux.com/aaa/bbb/ccc/123.PNG](http://www.aminglinux.com/aaa/bbb/ccc/123.PNG) 匹配
[www.aminglinux.com/aaa/png/123.html](http://www.aminglinux.com/aaa/png/123.html) 匹配
1
2
3
4
location /admin/ { ... }
如:
[www.aminglinux.com/admin/aaa/1.php](http://www.aminglinux.com/admin/aaa/1.php) 匹配
[www.aminglinux.com/123/admin/1.php](http://www.aminglinux.com/123/admin/1.php) 不匹配

小常识

1
2
3
有些资料上介绍location支持不匹配 !~,
如: location !~ 'png'{ ... }
这是错误的,location不支持 !~
1
2
如果有这样的需求,可以通过if来实现,
如: if ($uri !~ 'png') { ... }
1
注意:location优先级小于if

nginx location优先级

1
location   /  优先级  比location ~ 要低,也就是说,如果一个请求(如,admin.php)同时满足两个location
1
2
location /admin.php
location ~ \.php admin.php
1
会选择下面的,下面的选择完成后,上面的不会进行选择
1
=  高于  ^~  高于  ~* 等于 ~  高于  /