【Web】Anaconda介绍、安装及使用

介绍

Anaconda是Python和Conda的组合包,里面附带了不少科学计算使用的Python依赖,并且可以通过Conda进行版本管理,能够便携获得管理包
Conda不仅支持Python,还支持R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN语言(虽然大部分都用不上)

继续阅读【Web】Anaconda介绍、安装及使用

【WEB】POP链的构造

序列化与反序列化

序列化是为了方便于数据的传输,将对象转换为字节流,载入网络/磁盘IO流中,可以通过对应方法将其还原出来。

序列化与编码的区别

对象===【序列化】==>消息===【编码】==>字节流

总结来说就是,先把对象拆开变成一串可以还原成原对象的字符串,再通过特定编码,变为网络传输的字节流

PHP中的魔术方法

__sleep() //使用serialize时触发
__wakeup() //执行unserialize()时,先会调用这个函数
__construct() //对象创建时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当脚本尝试将对象调用为函数时触发
__set_state()//调用var_export()导出类时,此静态方法会被调用。
__clone()//当对象复制完成时调用
__autoload()//尝试加载未定义的类
__debugInfo()//打印所需调试信息

继续阅读【WEB】POP链的构造

【CTFd】靶场安装与配置(Docker一键配置版)

【CTFd】靶场安装与配置这由于上一次的配置有点小问题,主要是Whale插件不再支持CTFd3.x版本,于是找了个新的插件使用
并且找到了更好的解决方式,不用那么麻烦配环境了
CTFd-Whale最新维护仓库
这次我采用Docker一键部署,并且稍加改动添加了中文包
成果图
file

继续阅读【CTFd】靶场安装与配置(Docker一键配置版)

【脚本】正则表达式详解

最近在Github上遇到了个很好的学习正则表达式的仓库
Github-Learn-regex
对于一些正则表达式的高级应用我也不是很熟,于是来重新学习下
在线测试网站Regex101

什么是正则表达式?

正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。

1. 基本匹配

正则表达式其实就是在执行搜索时的格式,它由一些字母和数字组合而成。
例如:一个正则表达式 the,它表示一个规则:由字母t开始,接着是h,再接着是e

"the" => The fat cat sat on the mat.

正则表达式123匹配字符串123。它逐个字符的与输入的正则表达式做比较。
正则表达式是大小写敏感的,所以The不会匹配the

"The" => The fat cat sat on the mat.

2. 元字符

正则表达式主要依赖于元字符。
元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍:

元字符 描述
. 句号匹配任意单个字符除了换行符。
[ ] 字符种类。匹配方括号内的任意字符。
[^ ] 否定的字符种类。匹配除了方括号里的任意字符
* 匹配>=0个重复的在*号之前的字符。
+ 匹配>=1个重复的+号前的字符。
? 标记?之前的字符为可选.
{n,m} 匹配num个大括号之前的字符或字符集 (n <= num <= m).
(xyz) 字符集,匹配与 xyz 完全相等的字符串.
| 或运算符,匹配符号前或后的字符.
\ 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |
^ 从开始行开始匹配.
$ 从末端开始匹配.

继续阅读【脚本】正则表达式详解

【SQLI】SQLI攻击与防护

SQL注入

约有如下13种:

  1. Boolean盲注

    与时间盲注类似,但是用于有明显回显情况

  2. Union注入
    最常见的注入方式之一

    1' union select 1,2,database() --+
  3. 文件读写

    select '<?php @eval($_POST[c]);?>' into outfile '/var/www/c.php' --+
  4. 报错注入

    floor()、extractvalue()、updatexml()、geometrycollection()、multipoint()、polygon()、multipolygon()、linestring()、multilinestring()、exp()

  5. 时间盲注

    sleep()

  6. REGEXP正则匹配

    PCRE绕过:union/‘+’a’1000001+’*/select

  7. 宽字节注入

    运用GBK与UTF-8编码不同来绕过转义

  8. 堆叠注入

    两句代码以分号等方式隔开:select * from users where id=1;select 1,2,3;

  9. 二次注入

    巧妙利用update等方式,用已有的数据进行注入

  10. User-Agent注入、11.Cookie注入

    10,11两种其实只是个注入位置的区别而已,可以采用Burp或者直接Curl构造payload实现

  11. 过滤绕过

    union绕过,双写绕过,注释绕过等

  12. 万能密码

    admin’ or ‘1’=’1
    username = secpulse’=’ password = secpulse’=’
    ffifdyop

SQL防护

  1. 预编译

    String sql="select id,no from user where id=?";
    PreparedStatement ps=conn.prepareStatement(sql);
    ps.setInt(1,id);
    ps.executeQuery();

    采用了PreparedStatement,就会将sql语句:"select id, no from user where id=?" 预先编译好也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql命令,比如 select ,from ,where ,and, or ,order by 等等。
    所以即使你后面输入了这些sql命令,也不会被当成sql命令来执行了,因为这些sql命令的执行,必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数。
    所以sql语句预编译可以防御sql注入。

  2. PDO

    也是一种预编译的方式,常用在PHP的数据库查询上,绑定的参数不需要使用引号,也可以有效防止注入

  3. 正则表达式过滤

    实在不行,那就自己写过滤!

继续阅读【SQLI】SQLI攻击与防护

【脚本】Linux换源汇总

由于换源需求过多,又不想每一次都上网查,于是有此博客记录不同系统换源过程
PS:为什么不能有一键换源脚本呢

Apt-get

换源方式

#备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#修改源
sudo vi /etc/apt/sources.list
#更新源
sudo apt-get update
#如出现依赖问题
sudo apt-get -f install
#更新软件:
sudo apt-get upgrade

继续阅读【脚本】Linux换源汇总

【CTFd】靶场安装与配置

CTFd是githbu上开源的ctf靶场之一,配合上whale等插件,可以快速搭建一个靶场

CTFd

以下测试环境均为Ubuntu20.04,Python3.8
CTFd官网
CTFd-Github仓库
CTFd中文汉化
由于本人更喜欢汉化风格,所以使用的均为CTFd_chinese_CN下3.4.1版本的CTFd

  1. 克隆CTFd代码并安装相关依赖
    #如果空白环境
    sudo ./prepare.sh
    #如果是在宝塔环境下安装(bt自带的python会产生冲突)
    sudo apt-get --fix-broken install
    #如果已经安装好python环境(建议使用3.7)
    sudo pip install -r requirements.txt
  2. 下载CTFd_chinese_CN-v3.4.1并将CTFd目录覆盖到你的项目目录
  3. 运行,默认运行在http://127.0.0.1:4000,你可以通过更改配置文件使其监听0.0.0.0,或者使用nginx反代,此处使用后者
    #配置文件CTFd/config.ini
    python serve.py

    继续阅读【CTFd】靶场安装与配置