实验准备
- 案例地址: https://portswigger.net/web-security/sql-injection/blind/lab-conditional-responses
2.sql 注入工具:burpsquite
实验中遇到的坑
- 光标不齐
需要改变一下字体大小, 在设置里搜索font。
- 添加变量的时候需要添加$$ , 是两个不是一个。
- 在最后的结果里,可以根据成功的标志过滤出正确响应,然后按payload1 排序,出来的就是原顺序的密码了。
小于 1 分钟
归并排序(Merge Sort)是一种基于分治法的排序算法。它的主要思想是将一个大的问题分解成若干个小问题来解决,然后将解决的结果合并在一起。归并排序的时间复杂度为 𝑂(𝑛log𝑛),是效率较高的排序算法之一。
#include <stdio.h>
#include <stdlib.h>
int min(int x, int y)
{
return x < y ? x : y;
}
void merge_sort(int arr[], int len)
{
int *a = arr;
int *b = (int *)malloc(len * sizeof(int));
if (b == NULL)
{
fprintf(stderr, "Memory allocation failed\n");
return;
}
int seg, start;
for (seg = 1; seg < len; seg += seg)
{
for (start = 0; start < len; start += seg + seg)
{
int low = start, mid = min(start + seg, len), high = min(start + 2 * seg, len);
int k = low;
int start1 = low, end1 = mid;
int start2 = mid, end2 = high;
while (start1 < end1 && start2 < end2)
b[k++] = a[start1] < a[start2] ? a[start1++] : a[start2++];
while (start1 < end1)
b[k++] = a[start1++];
while (start2 < end2)
b[k++] = a[start2++];
}
int *temp = a;
a = b;
b = temp;
}
if (a != arr)
{
for (int i = 0; i < len; i++)
arr[i] = a[i];
}
free(b);
}
int main()
{
int arr[] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70};
int len = sizeof(arr) / sizeof(*arr);
merge_sort(arr, len);
for (int i = 0; i < len; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
#include <stdio.h>
void shell_sort(int arr[], int len) {
int gap, i, j;
int temp;
for (gap = len >> 1; gap > 0; gap = gap >> 1)
for (i = gap; i < len; i++){
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap )
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
}
int main() {
int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70};
int len = (int) sizeof(arr) /sizeof(*arr);
shell_sort(arr, len);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}
微信公众号排版工具。问题或建议,请公众号留言。程序员翻身
建议使用 Chrome 浏览器,体验最佳效果。
使用微信公众号编辑器有一个十分头疼的问题:粘贴出来的代码,格式错乱,空间小还带行号,而且特别丑。Markdown.com.cn编辑器能够解决这个问题。
Markdown是一种轻量级的「标记语言」。
请阅读下方文本熟悉工具使用方法,本文可直接拷贝到微信中预览。
""" 0 1 背包问题 """
def bag(wgt, val, cap):
n = len(wgt)
dp = [[0]*(cap+1) for _ in range(n+1)]
for i in range(1, n+1):
for c in range(1, cap + 1):
if wgt[i - 1] > c:
dp[i][c] = dp[i-1][c]
else:
dp[i][c] = max(dp[i-1][c], dp[i-1][c-wgt[i-1]] + val[i - 1])
return dp[n][cap]
if __name__ == "__main__":
wgt = [3, 2, 1]
val = [15, 11, 5]
cap = 4
# 动态规划
res = bag(wgt, val, cap)
print(f"不超过背包容量的最大物品价值为 {res}")
对于不同类型的参数传递:
"""
快速排序
第一步
先去找一个基准数, 再设2个指针i,j, i从左到右遍历, 找到大于基准数的数时停止,
j从右到左遍历, 找到小于基准数的数时停止, 然后交换i,j的位置,
i和j再分别向两边扩展, 直到i和j相遇, 再把基准数插入到这个相遇的位置
第二步
第一步产生了两个子数组, 再分别运用第一步。
"""
def partion(left, right):
pivot = lst[left]
while left < right:
while left < right and lst[right] >= pivot:
right -= 1
while left < right and lst[left] <= pivot:
left += 1
lst[left], lst[right] = lst[right], lst[left]
lst[left] = pivot
return left
def quick(left, right):
if left >= right:
return
pivot = partion(left, right)
quick(left, pivot - 1)
quick(pivot + 1, right)
return lst
lst = [4, 1, 8,3, 1, 5, 2, 7, 6,1]
print(quick(0, len(lst) - 1))
"""
选择排序,从未排序序列中选择一个最小的值放到未排序序列首位
"""
def select(lst):
for i in range(len(lst)-1):
k = i
for j in range(i+1, len(lst)):
if lst[j] < lst[k]:
k = j
lst[i], lst[k] = lst[k], lst[i]
return lst
lst = [4, 1, 3, 1, 5, 2, 7, 6]
print(select(lst))
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script>
window.alert = function()
{
confirm("哎哟 不错哦!");
window.location.href="level3.php?writing=苦尽甘来";
}
</script>
<title>第2关</title>
</head>
<body>
<h1 align=center>第2关 窒息的操作</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src="https://dn-coding-net-tweet.codehub.cn/photo/2019/688da926-8a0b-452a-9a2b-82ba919328fb.jpg"></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>