1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  使用方法

1. 直接用浏览器打开 G:\演示网站\index.html 即可访问
2. 点击任意图片下的"下载图片"按钮进行下载
3. 如需添加更多图片,可以将图片放入 images/ 文件夹,并在 index.html 中添加相应的代码

网站已经可以使用了,直接在浏览器中打开 index.html 文件即可!

> 我如果要自行添加图片下载该怎么添加

● 要添加更多图片下载,您有两种方法:

方法1:使用本地图片文件

1. 将图片放入images文件夹
- 把您的图片文件(如 photo1.jpg, photo2.jpg 等)复制到 G:\演示网站\images\ 文件夹中
2. 在 index.html 中添加图片项

2. 打开 G:\演示网站\index.html,在 <div class="gallery-grid"> 中添加新的图片项:

<div class="gallery-item">
<img src="images/photo1.jpg" alt="美女图片" class="gallery-image">
<div class="image-overlay">
<h3>美女图片 9</h3>
<button class="download-btn" data-image="images/photo1.jpg" data-filename="beauty_9.jpg">下载图片</button>
</div>
</div>

方法2:使用绝对路径(其他盘符的图片)

如果图片在其他位置(如 D盘、E盘),使用 file:/// 路径:

<div class="gallery-item">
<img src="file:///D:/我的图片/photo1.jpg" alt="美女图片" class="gallery-image">
<div class="image-overlay">
<h3>美女图片 10</h3>
<button class="download-btn" data-image="file:///D:/我的图片/photo1.jpg"
data-filename="beauty_10.jpg">下载图片</button>
</div>
</div>

关键参数说明

- src="..." - 图片显示路径
- data-image="..." - 下载时的图片路径(必须与src一致)
- data-filename="..." - 下载后保存的文件名
- alt="..." 和 <h3> - 图片的标题/描述

示例:添加3张新图片

在 index.html 的 gallery-grid 区域内添加:

<!-- 新图片1 -->
<div class="gallery-item">
<img src="images/beauty1.jpg" alt="美女图片 9" class="gallery-image">
<div class="image-overlay">
<h3>美女图片 9</h3>
<button class="download-btn" data-image="images/beauty1.jpg"
data-filename="beauty_9.jpg">下载图片</button>
</div>
</div>

<!-- 新图片2 -->
<div class="gallery-item">
<img src="images/beauty2.jpg" alt="美女图片 10" class="gallery-image">
<div class="image-overlay">
<h3>美女图片 10</h3>
<button class="download-btn" data-image="images/beauty2.jpg"
data-filename="beauty_10.jpg">下载图片</button>
</div>
</div>

<!-- 新图片3 -->
<div class="gallery-item">
<img src="images/beauty3.jpg" alt="美女图片 11" class="gallery-image">
<div class="image-overlay">
<h3>美女图片 11</h3>
<button class="download-btn" data-image="images/beauty3.jpg"
data-filename="beauty_11.jpg">下载图片</button>
</div>
</div>

添加完成后,刷新浏览器即可看到新图片!

后端php

后端PHP

基础语法

cheklogin.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="uTF-8">
<title>论坛</title>
</head>
<body>
<?php
$uname = $_GET['username'];
$pwd = $_GET['password'];
if$uname =='jaden'){
echo"<h1>欢迎$uname 回来</h1>";
echo"<h2>您的密码为:$pwd</h2>"

}else{
echo"<h1>sorry,用户名或者密码不正确!</h1>"
};
?>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.基本格式
<?php

?>

2.<br>换行,echo后面可用单引号(' ')也可用双引号(" ")
<?php
echo'你好<br>';
echo"hello";
?>

3,常量与变量的换行
<?php
$a = 100;
echo $a;
echo $a.<br>; #若要在变量或者常量后面换行,需要在变量名或常量名后加上" . "

const A = '123';
echo A;
echo A.'<br>';
?>

php的变量

变量:可变的量

常量:不变的值

1
2
3
4
5
6
7
8
9
10
11
12
13
#PHP中的变量用一个美元符号($)后面跟变量名来表示。变量名是区分大小写的。
#定义一个变量,前面不加$符号,那么就是普通字符
$num = 88888888
$a = 5;
$b = 6;
echo $a + $b;
$hello world

#定义常量:
#常量的名一般都是大写字母
方式1:define('常量名''常量值');例如:define('website''php中文网');
方式2const 常量名 = 常量值;例如:const FOO='BAR'
方式2 const不能用在if判断中。

变量的命名规则

1.一个有效的变量名由字母或者下划线_开头,后面跟上任意数量的字母,数字,或者下划线。

2.变量名不能以数字开头

3.变量名不要出现中文

4.变量名不要出现的非下划线的其他特殊符号

5.变量名称最好用小写字母

单引号与双引号的区别

1
2
3
4
5
6
7
8
9
10
<?php
header("Content_Type: text/html; charset=utf-8"); //在响应头中添加了content-type:utf-8,header()是php提供的加工头相应键值对的
header("nikta");

$name = 'kobe';
echo $name.'<br>';
echo '最喜欢的NBA球星是'.$name.'<br>'; //变量不加符号,遇到字符串拼接,需要加.链接
echo '最喜欢的NBA球星是 $name <br>'; //单引号,不解析变量,原样输出
echo "最喜欢的NBA球星是 $name <br>"; //双引号,解析变量
?>

image-20251018150107875

image-20251018150122909

php的数据类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
■布尔类型 0 1 | false true # 判断条件的结果都是布尔值 if
■整型 整数 -99999 +99999
■浮点型 小数-1.9 3.25 3.00005
■字符串 'hello' "hello"
■数组 array,例如:$d = array('a'1'c'array123));#数组是容器类型的数据,可以存放各种类型的基础数据
$d=array'a'1,'c'array(1,2,3));
echo $d//会报错,因为echo是用来输出字符串类型数据的。
echo $d[0]; # 数组类型是可以通过索引取值的,索引是从0开始的。
■对象 object # 这个需要学到类之后才能看到
■资源类型 Resource # 文件等资源数据
NULL# $a = null;提前定义,但是不想赋值的时候就可以这样用

查看变量对应值的类型:
1.使用"gettype(传入一个变量var)"来显示变量var的类型;只显示数据的类型,不会显示原数据
2.使用"var_dump(传入一个变量var)"来显示变量var的类型;int(10);会显示原数据

php的运算符

算数运算符,存在优先级 (乘除>.点>加减)

运算符 名称 描述 实例 结果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的余数) x 除以 y 的余数 5 % 2 1
- x 取负数 x 取负数 -2
a . b 并置 连接两个字符串 “Hi” . “Ha” HiHa

自增自减

运算符 名称 描述
++ X 预递增 X 加 1,然后返回 X
X ++ 后递增 返回 X,然后 X 加1
– X 预递减 X 减一然后返回 X
X – 后递减 返回 X,然后 X 减一

比较运算符

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true,不比较数据类型 5==8返回false
x === y 绝对等于 如果 x 等于 y,且他们的类型相同,则返回 true,比较数据类型 5===”5”返回false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8返回true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8返回true
x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!==”5”返回true
x > y 大于 如果 x 大于 y,则返回 true 5>8返回false
x < y 小于 如果 x 小于 y,则返回 true 5<8返回true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8返回false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8返回true

赋值运算符

运算符 等同于 描述
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y 加等于
x -= y x = x - y 减等于
x *= y x = x * y 乘等于
x /= y x = x / y 除等于
x %= y x = x % y 模(除法的余数)等于
a .= b a = a . b 连接两个字符串

逻辑运算符

运算符 名称 描述 实例
x and y 如果 x 和 y 都为true,则返回true x=6 y=3 (x<10 and y> 1)返回 true
x or y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==6 or y==5) 返回 true
x xor y 异或(pass) 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x==6 xor y==3) 返回 false
x && y 如果×和y都为 true,则返回 true x=6 y=3 (x< 10 && y > 1)返回 true
x || y 如果×和y至少有一个为 true,则返回 true x=6 y=3 (x==5 II y==5) 返回 false
! x 非,取反 如果×不为 true,则返回 true x=6 y=3 !(x==y) 返回 true

三元运算

判断条件?真的处理:假的处理

如果判断为true,那么执行真处理,也就是:冒号前面的代码会执行,否则:冒号后面的执行,和if….else差不多,不过会更加简洁一些

php的控制结构

if_else

1
2
3
4
5
6
7
8
9
10
11
12
<?php
header("content-type:text/html;charset=utf-8");

$a=rand(1,10);
if ($a > 5){
echo "随机点数比较大"
}else{
echo 'haha'.'<br>';
}
echo "<br>";
echo "当前的点数是".$a;
?>

while循环

条件不执行,一次都不执行(无限循环),通过控制条件来结束循环

1
2
3
4
5
6
7
8
9
<?php

$i = 1;
while ($i <= 10){
$i++;
echo '哈哈'.$i.'次'
}

?>

do-while

条件不成立,也会执行一次

1
2
3
4
5
6
7
<?php
$i = 0;
do{
echo $i;

} while ($i > 0);
?>

for循环

有限循环

1
2
3
4
#$i=1初始值,$i<=10 条件,$i++每次加1
for ($i = 1;$i <= 10; $i++){
echo $i;
}

break打断

打断循环;结束循环(跳出整个for循环)

1
2
3
4
5
6
7
8
$cars=arry("特等奖"=>"布加迪""一等奖"=>"捷豹","二等奖"=>"法拉利","三等奖"=>"玛莎拉蒂","四等奖"=>"迈凯伦");
foreach($cars as $ key => $value) {
if ( $key == '三等奖' ){
break;
} else {
echo $key."是".$value."<br>";
}
}

continue继续

跳出本轮,开始下一轮

1
2
3
4
5
6
7
8
$cars=arry("特等奖"=>"布加迪""一等奖"=>"捷豹","二等奖"=>"法拉利","三等奖"=>"玛莎拉蒂","四等奖"=>"迈凯伦");
foreach($cars as $ key => $value) {
if ( $key == '三等奖' ){
continue;
} else {
echo $key."是".$value."<br>";
}
}

continue、break在其他循环中也能使用

exit退出程序

运行到exit时,直接结束整个程序

switch

条件判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$a=5;
$b=10;
$c=4;

switch ($c) {
case 1:
echo"$a + $b = ".($a+$b)."<br>";
break;
case 2:
echo"$a - $b =".($a-$b)."<br>";
break;
case 3:
echo"$a * $b = ".($a*$b)."<br>";
break;
case 4:
echo"$a / $b =".($a/$b)."<br>";
break;
}

php的函数

函数的介绍
函数的英文叫作:function,而function的解释项中有另外一个含义:功能,函数就是功能,比如我们发微信,可能发微信这个后台代码逻辑就是一个函数,将整体的发微信的逻辑代码封装到了函数中,调用并执行这个函数,就能够实现发微信的动作。

基本格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
header("content-type:text/html;charset=utf-8");

echo '做一下加法计算!'.'<br>';
//提前定义参数a,b
function add($a,$b){
//$a = 2;
//$b = 3;
$c = $a + $b;
echo '加法的计算结果'.$c.'<br>';
}
//函数调用
add(3,4);

echo '计算结束'.'<br>';
?>

内置函数

文件包含的函数(引入文件)

函数 包含失败 特点
include 返回一条警告 文件继续向下执行。通常用于动态包含
require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码无法执行
include_once(pass) 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被包含过,不再包含
require_once(pass) 一个致命的错 除了原有的功能以外,会做一次once检测,防止文件反复被包含

include和require区别:include如果引入文件出错,会显示报错信息继续执行下去,require则不会继续执行

数学常用函数

函数名 描述 实例 输入 输出
abs() 求绝对值 $abs = abc(-4.2); //4.2 数字 绝对值数字
ceil() 进一法取整 echo ceil(9.001); //10 浮点数 进一取证
floor() 舍去法取整 echo floor(9.999); //9 浮点数 直接舍去小数部分
fmod() 浮点数取余 “$x = 5.7;$y = 1.3;$r = fmod($x,$y); //$r equals 0.5,
because 4 * 1.3 + 0.5 = 5.7”
两个浮点数,x>y 浮点余数
pow() 返回数的n次方 echo pow (-1,20); //1 基础数n次方 乘方值
round() 浮点数四舍五入 echo round(1.95583,2); //1.96 一个数值 保留小数点后多少位,默认为0舍入后的结果
sqrt() 求平方根 echo sqrt(9); //3 被开方的数 平方根
max() 求最大值 “echo max(1, 3, 5, 6, 7); //7 echo max(array(2, 4, 5));
//5”
多个数字或数组 返回其中的最大值
min() 求最小值 min 多个数字或数组 返回其中的最小值

2024美亚杯团体

Alice的手机

在个人赛的最后一部分, 你对 David 的数字设备进行了取证检查, 发现他与一名成员 Alice 有可疑的沟通. 你现在分析 Alice 的手机.

参考Alice Mobile.bin.

1.Alice 所使用的手机网络运营商公司的名称是什么?

image-20251012124025992

2.Alice 所使用的谷歌电子邮件地址是?

image-20251012124426337

3.谁向 Alice 发送了一个含有个人资料的 .xlsx 文件?

APK格式

lib

assets

dex

androidManifest.xml

抓包

HttpCanary

脱壳

frida-dexdump

1
2
3
4
pip install frida-dexdump

frida-dexdump -U -f 包名
frida-dexdump -UF -d -o .

https://blog.csdn.net/weixin_43767456/article/details/134444987

frida

需要python3.6以上的环境,下载几个python库

1
2
3
pip install frida-tools
pip install loguru click
pip install hexdump

配置好本地Frida之后,查看frida版本,查看手机cpu类型

1
2
3
4
frida --version

adb shell
getprop ro.product.cpu.abi
配置frida-server

去下载对应版本的对应类型的frida-server

27042

https://github.com/frida/frida/releases

下载对应版本下载到手机的 /data/local/tmp/ 目录下

1
2
3
4
5
6
7
8
进入手机端命令:adb shell
切换获取手机的root权限:Su
查找文件是否在手机中:cd/data/local/tmp/
查看路径下的文件并看文件的权限:Is-l
拥有root权限更改文件的权限为777: chmod 777 frida-server-16.5.2-android-x86
在手机中启动运行该文件:./frida-server-14.0.5-android-x86 &
电脑运行检查手机端服务是否开启成功:frida-ps -U
windows运行端口转发到PC:adb forward tcp:27043 tcp:27043

fridaAPI:https://frida.re/docs/javascript-api/

1
2
3
4
5
6
-U
-F
-l
-o
-f
-p

frida脚本

objection

1
pip install objection

启动

1
objection -g 包名 explore
1
2
3
4
5
6
7
-N: 表示网络连接,不加表示USB连接
-h: 主机名,默认是 127.0.0.1
-p: 端口,默认是 27042
-g: 指定进程名\包名

explore:启动objection交互界面,explore也有选项,下面再说
patchapk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
列出所有已加载的类(常用)
android hooking list classes

在所有已加载的类中搜索包含特定关键字的类(常用)
android hooking search classes <pattern>

列出类的所有方法(常用)
android hooking list class_methods <路径.类名>

hook类的所有方法(不包括构造方法)
android hooking watch class <路径.类名>

hook类的构造方法
android hooking watch class_method <路径.类名.$init>

默认是hook方法的所有重载(常用)
android hooking watch class_method <路径.类名.方法名>

hook方法的参数、返回值和调用栈(常用)
android hooking watch class_method <路径.类名.方法名> --dump-args --dump-return --dump-backtrace

hook单个重载函数,需要指定参数类型,多个参数需要用逗号分隔
android hooking watch class_method <路径.类名.方法名> "<参数类型>"

jadx

https://github.com/skylot/jadx/releases

2024盘古石

服务器取证

1.分析内部IM服务器检材,在搭建的内部即时通讯平台中,客户端与服务器的通讯端口是:[答案格式:8888]

Read More