ImaginaryCTFWeb
0x00 前言打CTF,我认为经验与思维同样重要。但是,我的重心会放在思维与推理上面。安全一途,博大精深,只有善于思考和推理,才能走得更远!
0x01 readme有附件,先搭建题目环境。
题目附件肯定要仔细查看的,发现flag的环境变量:
FLAG变量Dockerfile文件
1ENV FLAG="ictf{path_normalization_to_the_rescue}"
docker-compose.yml文件
12environment: - FLAG=flag{test_flag}
两个文件的关系:
Dockerfile:
环境变量在镜像构建过程中可用,并且在基于该镜像启动的所有容器中可用。
docker-compose.yml:
环境变量仅在通过 Docker Compose 启动的容器中可用,且可以在不同的服务中定义不同的值。
覆盖机制:
如果在 Dockerfile 中定义了 ENV FLAG,而在 docker-compose.yml 中又定义了相同的环境变量 FLAG,则在运行容 ...
命令注入入门
0x00 文章前言隔了这么久才写这一篇,其实还是比较惭愧的。本篇文章会尽量写的成体系,但是重点在于绕过。
0x01 基础概念命令注入,一般是Linux命令注入,本文也以Linux命令注入为主。
符号概念| (管道符号)
用于将一个命令的输出作为另一个命令的输入
12comand1 | comand2cat pax.txt | base64
& (and符)
用于将多个命令组合在一起使它们可以同时执行而不需要等待前一个命令的完成
1command1 & command2
&& (逻辑与)
用于在命令行中执行多个命令并且只有前一个命令成功执行(返回退出码为0)时才会执行下一个命令
1command1 && command2 [&& command3 ...]
||(逻辑或)
用于在命令行中执行多个命令并且只有前一个命令执行失败(返回退出码非零)时才会执行下一个命令
1command1 || command2 [|| command3 ...]
;(分号)
用于分隔多个命令,使它们按顺序依次执行,无论前一个命令是 ...
浅析各类型XSS原理
0x00 前言把CTFHub技能树的XSS题目刷完了,也觉得需要对XSS有原理上的了解。本质学习有以下目标:
各种类型的XSS的原理
各种类型的XSS的异同
XSS的防范措施
推荐文章:这一次,彻底理解XSS攻击-腾讯云开发者社区-腾讯云 (tencent.com)
0x01 概述XSS(Cross-site scripting),跨站脚本攻击。
攻击原理:前端被插入精心构造的恶意代码,以实现攻击者的目的。从本质上来看,这样的输入流不再是纯净的数据流,可以影响到控制流。
攻击手段:一般是JavaScript,还有Java、 VBScript、 LiveScript、ActiveX、 Flash 甚至是普通的HTML。
XSS类型:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS、通用型XSS、突变型XSS。
0x02 反射型XSS先看看下面这张图片
原理首先,黑客把恶意链接发给用户。
然后,用户点击恶意链接,恶意代码执行并把用户信息发到恶意服务器。
最后,黑客从恶意服务器接受用户提交的信息。
思考
反射型XSS的payload没有存储到数据库的过程 ...
Navicat远程连接MySQL
该过程比较复杂,我一点一点说
0x01 云服务器下载MySQL推荐文章:https://help.aliyun.com/document_detail/464750.html#title-gt1-709-nlk
一. 安装apache/nginx和PHP
这一点无需多说,基本常识。
二. 安装MySQL
安装
1sudo apt -y install mysql-server
验证
1sudo mysql -V
启动
1sudo systemctl start mysql
0x02 MySQL改密码推荐文章:https://www.cnblogs.com/chloneda/p/12449819.html
因为MySQL>8.0改密码不同,所以觉得有必要写下MySQL>8.0的改密码操作。
大体思路:
以 root 用户登录MySQL。
进入MySQL系统自带数据库: mysql 数据库中。
执行更改密码语句。
退出MySQL后,使用新的密码重新登陆。
选择数据库
1mysql> use mysql;
改密码
1mysql> A ...
MySQL漏洞利用与提权
0x00 前言算算时间,也应该到进阶的时候了。慢慢琢磨这个专题,毋急毋躁。
0x01 UDF前置权限本文主讲提权,那么提的是什么权限,需要提前具备哪些条件?
数据库中我们所在的用户至少需要有文件写入权限,方能将mysql的权限提到shell。
数据库高权限要获得数据库高权限有以下方法:
MySQL 3306 端口弱口令爆破
sqlmap 注入的 --sql-shell 模式
网站的数据库配置文件中拿到明文密码信息
CVE-2012-2122 等这类漏洞直接拿下 MySQL 权限
最好能获得管理员权限,因为有些目录的写入权限只有管理员有。下面的内容都是基于Mysql的管理员进行操作。
文件写入权限前置要求:
知道网站物理路径
高权限数据库用户
load_file () 开启 即 secure_file_priv 无限制
网站路径有写入权限
查看secure_file_priv :
1SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'secure_file_priv' ...
PHP原生类利用
0x01 Error/Exception内置类进行 XSSError 内置类适用环境
php7版本
开启报错
Error类是php的一个内置类,用于自动自定义一个Error,在php7的环境下可能会造成一个xss漏洞,因为它内置有一个 __toString() 的方法,常用于PHP 反序列化中。如果有个POP链走到一半就走不通了,不如尝试利用这个来做一个xss,其实我看到的还是有好一些cms会选择直接使用 echo <Object> 的写法,当 PHP 对象被当作一个字符串输出或使用时候(如echo的时候)会触发__toString 方法,这是一种挖洞的新思路。
演示测试代码
123<?php$a = unserialize($_GET['man']);echo $a;
POC
123$a = new Error("<script>alert('xss')</script>");$b = serialize($a);echo urlencode($b);
Excep ...
初写ThinkPHP留言板
0x00 前言安全的基础是开发。本次会详细讲解该项目的过程和心路。
0X01 配置
本次在windows上安装ThinkPHP8.0稳定版,附上教程:
https://blog.csdn.net/weixin_62797596/article/details/134713455
将.example.env修改成.env,文件内容一并修改。
0x02 思路本项目体量不大,但仍然尝试MVC模型。从控制层入手,具体的业务教给模型层,最后视图层呈现结果。
首先,留言版该实现什么功能呢?
实现注册,登录,留言,注销四个功能。
这些功能该对接哪些控制器呢?
注册,登录,注销都属于用户操作,给UsersController
看留言与写留言属于留言操作,给MessagesController
每一个表对应一个模型,该怎么制作表和模型层?
本项目需要两个表:
users
id
username
password
1
Pax
123456
messages
id
username
messages
1
Pax
FIag
对应的两个模型层:users.php ...
CVE-2023-1773
代码审计之CVE-2023-1773参考文章:
保姆级教程
进阶级教程
[TOC]
0x00 前言通过本次漏洞复现和代码审计,我应该掌握以下能力:
基础能力:
怎么高效地查看源码和获取信息.
如何不断溯源代码以得到目的信息.
对以面向对象为核心的项目的特点做一个总结.
怎么触发对应方法?如果在前端可控,又该怎么构造数据包?
熟悉攻击链,明白攻击链每一环的条件和作用.
掌握漏洞复现和代码审计的一般流程.
进阶能力:
能独立审计一些简单的漏洞.
掌握一些代码审计工具并用来解决漏洞.
高阶目标:掌握项目框架.
0x01 漏洞简介
CVE-2023-1773
产品:信呼oa
影响版本:<=2.32
开源地址:https://github.com/rainrocka/xinhu/commits/master/
0x02 入口分析index.php本次从index.php入手,先放出代码:
对本段代码有以下问题:
各个变量有什么用?
不认识这些方法.
这段代码的功能有哪些?
这段代码哪些地方可以被利用?
我们 ...
CRLF入门
CRLF漏洞入门参考文章:浅入深出谭谈 HTTP 响应拆分(CRLF Injection)攻击(上) - 先知社区 (aliyun.com)
0x00 前言这段时间有空刷刷BurpSuite的CSRF,有道题需要HTTP头部注入,趁此机会学学。
另外,对漏洞的利用往往不是单独的,而是多个漏洞相互配合。比如本篇的CRLF可以和SSRF、CSRF配合。
0x01 CRLF 与 CRLF InjectionCRLF
CRLF 指的是回车符(CR,ASCII 13,\r,%0d)和换行符(LF,ASCII 10,\n,%0a)的简称(\r\n)。HTTP报文以状态行开始,跟在后面的是HTTP首部(HTTP Header),首部由多个首部字段构成,每行一个首部字段,HTTP首部后是一个空行,然后是报文主体(HTTP Body)。状态行和首部中的每行以CRLF结束,首部与主体之间由一空行分隔。或者理解为首部中每个首部字段以一个CRLF分隔,首部和主体由两个CRLF分隔。
CRLF InjectionHTTP报文的结构以CRLF划分,通过添加CRLF可以制造CRLF Injection,原理如下: ...
对于SQL注入原理的学习
0x00 前言
写下本文的直接原因是拜读了庆尘大佬的文章(对SQL注入漏洞原理的思考 (qq.com),这也是本文的参考文章。推荐大家读读大佬的文章,感受大佬浅显易懂的文笔下的深邃思想。
0x01 信任输入信任问题安全问题的本质就是信任问题
例如对一个网站的开发来说
信任普通用户的输入——前台漏洞
信任管理员用户的输入——后台漏洞
信任离线升级/在线升级/自动化升级/升级包——供应链攻击
不信任任何输入——信任代码逻辑——逻辑漏洞
有时候信任是可以被提升的——越权。
防御核心对应的安全方案有很多,但都可以简化为
输入——检测是否存在风险——输出
黑客往往是从输入入手。所以我们重点关心的问题也就是如何处理信任与输入的关系
0x02 控制流和数据流
可以将程序员的代码分割为两个部分
一部分是控制代码走向的控制流代码
另一部分是用来被展示,被存储,被流转的数据流(包括输入的数据和程序员设定的数据)
被,是被动,说明了数据流的数据不应该具有主动性。说实在一点,外来的数据不能影响内部的控制程序。一旦数据流可以入侵到控制流,那么漏洞也随之而生。
0x03 ...