如有侵权,请联系删除
没有做次数验证,所以可以不停的试。想是Sqli-labs那些前边的那些关都是可以做爆破的实验环境的
主要方法就是使用Burp中的In
开头那个模块,然后导入事先准备好的字典,点击开始爆破就得了。然后看那个Length
来判断,哪个是正确的。
另外,还有一款工具不得不提:hydra
只是这款工具我并没有怎么用过就是了。后期会专门针对爆破进行学习,那时候会仔细研究一下的。既然现在我并不了解这款工具我就不多少啥了。
这个工具kali中集成,其他linux系统软件源中也会内置。Ubuntu安装命令
sudo apt install hydra
不过现在一般会有验证,比如验证码验证,还有那个图片的那个码,还有登录错几次就不能登了之类的。所以这个洞不是特别重要,除非你遇到了一个没有次数限制的站。
个人认为有那么一点点像文件包含漏洞。
不同的是,文件包含是将你的恶意代码import到源码中,这个命令执行是执行你上传的命令。
但相同的是,都是需要一些函数开启。比如php中的system函数,exec, shell_exec, passthru, popen, peoc_popen等等这些。
书上的例子是一个页面提供了ping功能,也就是说允许我们执行系统命令。
正常来说,如果payload是这样:http://127.0.0.1/text.php?ip=127.0.0.1
,返回结果就是ping 127.0.0.1
的结果。
但如过payload为:http://127.0.0.1/text.php?ip=127.0.0.1|dir
,返回结果就是dir
命令的结果。
(这里是使用了管道命令,因为目标主机为linux系统,所以‘|’的意思就是返回‘|‘后边的命令的结果,也就是返回dir
的结果)
不同系统的命令如下:
ping 127.0.0.1 | whoami
那么就是直接执行whoami
。ping 127 | whoami
那么就是直接执行whoami
。ping 127 | whoami
那么就是直接执行whoami
;比如ping 127.0.0.1 | whoami
那么就是只执行ping
命令了。与
,必须两个都为真。比如ping 127.0.0.1 && whoami
。d@g:~$ whoami | ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.050 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.059 ms
^C
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3051ms
rtt min/avg/max/mdev = 0.042/0.049/0.059/0.010 ms
d@g:~$ ping 127.0.0.1 | whoami
d
d@g:~$
通过GET获取ip值,不经过检测直接拼到system中,system执行的是ping功能。
echo system("ping -n 2".$_GET['ip']);
?>
通常会被过滤掉的符号有:
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
而且这些会被当作字符传进行处理,使用str_replace()
函数
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
作用就是把substitutions里的那些违法的符号全部替换成空,我试了一下,”&“u会被替换成空,”&&“也会换成空。
DVWA:exec
这个可以自己点开源码看看,low是啥都没过滤,级别越高过滤的越多。
我在做high级别的时候,啥了,发现它把能过滤的全过滤了,我直接傻了。试过各种绕过(就是前几节里的绕过方法,也不知道适不适用就乱用的,估计应该是可以的想想原理的话,就比如双写之类的,编码那些应该可以放弃了,因为源码里并没有编码解码的那个函数,一切编码解码的过程应该是正常的,所以没法利用这一点。这也是我猜的其实,我也不知道有没有什么高级的编码绕过可以用在这里的,但是我觉得对我这种前期小白来说,基本上过滤掉了常用的字符,就对来说是没有漏洞的了)。high那一关仔细看源码,发现”| “后边是有一个空格的,所以”|“命令是可以用的,payload为:127.0.0.1|whoami
。
逻辑漏洞主要有两个重点(虽然我根本不清楚到底应该怎么关注这两个点,不过这本来就是入门的书,而且说多了我也不懂,这样就蛮好的):业务流程和HTTP/HTTPS请求篡改。
常见的漏洞主要包括一下几类:
越权查看用户信息。这种主要是因为在传递信息的时候,用的是GET或者POST的方式,或者cookie(这种应该就和越权漏洞没关系了,因为如果使用cookie登录,那么没有这个漏洞只要我们拿到cookie就可以了),这种情况下,php后台才POST请求中获取用户id,然后返回用户信息。
这是非常愚蠢的,因为你只需要改变请求报文中的id就可以随意访问其他人的信息了。
如果不明白token、cookie、session的,看看这篇文章:彻底理解token, cookie, session
这个需要了解一下XML
,附上W3C School的教程:XML
简单点说就是,他在语法方面类似HTML,但是他和HTML完全是两个东西。HTML是前端的东西,使用来显示数据的;而XML使用来传输数据
的。
XML中有两个概念需要了解,DTD和实体。
DTD:
DTD呢就相当于一种固定格式,而实体就类似于python里的import
,作用是引用普通文本或特殊字符
。
XXE漏洞就是XML外部实体注入(XML External Entity),这个甚至有点类似文件包含。
如果目标站点使用了外部实体
,并且没有对用户提交的XML数据进行过滤,那么就是存在XXE漏洞。具体利用方式为:
当网站使用外部实体时,我们可以通过POST请求提交XML数据,所以我们提交类似这种数据
]>
&b;
作用是通过file协议读取本地文件win.ini
,后他的逻辑(最无脑的,没有任何过滤的那种):
也就是经股一系列的操作,我们打印出 了win.ini的内容。是不是很像本地文件包含?但是细品有那么一点小区别的,文件包含是执行webshell或者恶意代码,这个是访问一些实体文件。