从语雀迁移的技术文章。
【投稿】记一次Java Servlet实战审计
本文首发于阿里云先知社区记一次Java Servlet实战审计 - 先知社区,转载请注明出处。 感谢观看! 0x00 背景 某次渗透中,遇到个jsp的站,弱密码进到后台以后,却发现功能很少,并不好搞,简单排查后并无突破,然而老大给的要求是尽快搞到shell。。。 ...
从语雀迁移的技术文章。
本文首发于阿里云先知社区记一次Java Servlet实战审计 - 先知社区,转载请注明出处。 感谢观看! 0x00 背景 某次渗透中,遇到个jsp的站,弱密码进到后台以后,却发现功能很少,并不好搞,简单排查后并无突破,然而老大给的要求是尽快搞到shell。。。 ...
Spark这套计算框架,有多种部署方式,可以部署到一台计算机,也可以是多台(cluster)。我们要去计算数据,就必须要有计算机帮我们计算,当然计算机越多(集群规模越大),我们的计算力就越强。但有时候我们只想在本机做个试验或者小型的计算,因此直接部署在单机上也是可以的。 ...
正则表达式简介 PHP 正则表达式特殊字符 [:alnum:] [:alpha:] 等 For example, ‘<font style="color:rgb(0, 0, 0);">[[:alnum:]]</font>’ means ‘<font style="color:rgb(0, 0, 0);">[0-9A-Za-z]</font>’, 正则表达式中有两个很重要的特殊字符就是"[ ]"。他们可以匹配"[]"之中出现过的字符,比如"/[az]/"可以匹配单个字符"a"或者"z";如果把上面的表达式改成这样"/[a-z]/",就可以匹配任何单个小写字母,比如"a"、"b"等等。 如果在"[]"中出现了"^",代表本表达式不匹配"[]"内出现的字符,比如"/[^a-z]/"不匹配任何小写字母!并且正则表达式给出了几种"[]"的默认值,如下: # '[:alnum:]' 匹配任何字母 Alphanumeric characters: '[:alpha:]' and '[:digit:]'. # '[:alpha:]' 匹配任何字母和数字 Alphabetic characters: '[:lower:]' and '[:upper:]'. # '[:blank:]' Blank characters: space and tab. # '[:cntrl:]' Control characters. In ASCII, these characters have octal codes 000 through 037, and 177 ('DEL'). In other character sets, these are the equivalent characters, if any. # '[:digit:]' 匹配任何数字 Digits: '0 1 2 3 4 5 6 7 8 9'. # '[:graph:]' Graphical characters: '[:alnum:]' and '[:punct:]'. # '[:lower:]' 匹配任何小写字母 Lower-case letters: 'a b c d e f g h i j k l m n o p q r s t u v w x y z'. # '[:print:]' Printable characters: '[:alnum:]', '[:punct:]', and space. # '[:punct:]' 匹配任何标点符号 Punctuation characters: '! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ' { | } ~'. # '[:space:]' 匹配空格符 Space characters: tab, newline, vertical tab, form feed, carriage return, and space. # '[:upper:]' 匹配任何大写字母 Upper-case letters: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'. # '[:xdigit:]' 匹配任何16进制数字 Hexadecimal digits: '0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f'. 背景介绍 首先,来看一段在waf上很常见的正则, ...
地址:https://code-breaking.com/intro/ 0x08 picklecode Hard 首先,需要补充以下格式化字符串漏洞的知识,见https://blog.csdn.net/wenrennaoda/article/details/107224921 的确是存在格式化字符串漏洞的。那首先就要利用此洞来泄露Django的SECRET_KEY,这可以通过本地PHPCharm搭建环境来找到 ...
PHP代码审计中常见的一种技巧:弱类型,英文名叫type Juggling,基本的概念如下: PHP 8 以前,在使用==比较或任何有弱类型转换的情况时,字符串都会先被转换成数字,再和数字进行比较。 ...
本文主要介绍SSRF漏洞受到各种限制时,常见的绕过姿势。 (图片来自 SSRF漏洞Bypass技巧) 0x00 URL scheme 第一部分:协议名(以单个冒号结束) 第二部分:用户信息 也就是账号密码!(登陆ftp时常用) 第三部分:主机名(也就是域名) 第四部分:端口 第五部分:查询内容,包含【path+param】,这里有个bug。应该是?号后的内容才是查询! 第六部分:Fragment ID(不会发送到服务器!) 1.提取协议名: ...
Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产生的安全问题做了一个简要的分析。其中有一个比较严重的安全问题是,可以在交互式Python shell中执行自定义Python代码。就这一点来讲,在旧版本的Flask中是不需要输入PIN码认证就可以执行代码,其危害不言而喻。 在新版本的Flask中需要输入PIN码进行认证,才能执行自定义代码,于攻击者来说,这显然有点鸡肋了。 ...
代码审计笔记 limit参数鸡肋注入 app/article/action/api/list.php#L28 PoC 调试, 可以看到limit参数已经被完整带入了, 只不过由于mysqli_query无法执行多语句查询而显得鸡肋罢了… ...
本文站在安全工程师的角度,分析了PHP中SSRF的成因及修复方案。通过在vps上作实验,介绍不同成因导致的SSRF漏洞的危害和限制,并在最后给出安全编码的示例。 ...
安装Docker 略,参考CentOS Docker 安装来操作即可 curl -sSL https://get.daocloud.io/docker | sh 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 注意:需要开启<font style="color:#000000;">iptables</font> service iptables restart 重启docker service docker restart 编写Dockerfile 寻找初始环境 Dockerfile里的第一行,就是你CTF题的初始环境。如下所示, FROM drupalci/php-5.5.38-apache:dev 代表的就是从hub.docker.com/r/drupalci/php-5.5.38-apache拉的镜像作为初始环境。 那这个初始环境到哪里去找呢? 只需要在https://hub.docker.com里搜索合适的版本即可。此处要注意必须写出<font style="color:#000000;">tag</font>,也就是上面冒号后面的<font style="color:#000000;">dev</font>,它指明了镜像里中间件的版本,常见的<font style="color:#000000;">tag</font>是<font style="color:#000000;">latest</font>。 调整环境参数 有时候,在不同的环境下,我们需要更改中间件的配置,如Apache的配置文件<font style="color:#000000;">apache2.conf</font>、PHP的配置文件<font style="color:#000000;">php.ini</font>,那么就需要在Dockerfile里进行相应的编写。 下面给出常用的命令写法,更多细节请移步=>如何用Dockerfile构建镜像 Dockerfile样例 # 第一行写跟第1点中一样的基本镜像 FROM drupalci/php-5.5.38-apache:dev # 这里可以写上你的姓名/昵称 MAINTAINER unc1e # 这里可以写上你的制作时间 ENV REFRESHED_AT 2020年8月1日 # 使用utf-8编码 ENV LANG C.UTF-8 # 先写 修改源/更新 【如果必须的话】 # 替换源(这里可用sed或者直接COPY一个完整的sources.list来替换) RUN sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.163.com\/ubuntu\//g' /etc/apt/sources.list # 进行更新 RUN apt-get update -y # 将环境变量设置为非交互的 【这个看个人】,在运行apt-get命令的时候格外有用,因为它会不停提示用户进行到了哪步并且需要不断确认 # 非交互模式会选择默认的选项并以最快的速度完成构建。 # 注意:ENV命令在整个容器运行过程中都会生效,在你通过BASH和容器进行交互时,可能因此出问题 ENV DEBIAN_FRONTEND noninteractive # 修改一些配置 # 对于文件中的替换字符串,多使用sed命令 # 例如:去掉php响应头里的X-Powered-By RUN sed -i 's/expose_php = On/expose_php = Off/' /usr/local/etc/php/php.ini # 然后才是复制文件 # 不推荐挂载卷,因为常常需要将镜像导出为tar包文件 # ADD会自动解压压缩包,而COPY不会 ADD html.tgz /var/www # 剩下一些操作(权限要控制好) # 例如修改某个文件的所有者 RUN chown root:root /var/www/html/x.php # WORKDIR:设置CMD指明的命令的运行目录。 WORKDIR /var/www/html/ # 最后处理flag以及开机启动项 # flag的规范格式为flag{uuid格式} (如:flag{8ba868f2-71b6-477b-bc7a-255302c881e1} # 如有特殊情况请说明,但flag的格式至少需要有flag{},不接受其他类型格式。 # 默认flag的值存在flag.txt, # 如果flag是在数据库里,请记得把flag所在的字段长度设置为大于42 # 把flag.txt复制到/root/flag.txt COPY flag.txt /root/flag.txt # start.sh为开机启动脚本,里面包含容器开启后要启动的命令 COPY start.sh /root/start.sh # 加上执行权限 RUN chmod +x /root/start.sh # ENTRYPOINT:配置容器启动时的执行命令(不会被忽略,一定会被执行) # 建议使用ENTRYPOINT而不使用CMD,因为CMD容易受最后的RUN命令影响 ENTRYPOINT cd /root; ./start.sh # WEB开放端口默认为80,一般为一个,若有特殊情况,请写明 # 有文章指出:EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。文章来源是https://www.jianshu.com/p/78f4591b7ff0 EXPOSE 80 ...