那下面我们来看高级的,我们来到DVwa中,来到这个里面,提醒大家在课程的最后有抽奖哦,大家千万不要离开,我相信我讲的,大家应该能听懂,先把这个high给它选中,然后到这样一个命令注入这个地方,再次输入刚刚的命令,比如说我刚刚输入的这个命令,看一下行不行?看一下不行,说明什么?说明他肯定把服务也给拦截了。
我们实际看一下,看一下它的代码拦截的地方。那这个拦截的地方是如果用户可以看到它,只是把这个数组进行了拓宽,是吧?看一下,medium是拦截了两个东西,那这里是拦截了多少?拦截了我们所有的命令。这个输入服务,以及常见的一些像括号呀等等,它都拦截了。那如果用户输入内容中含有and的分号,竖线、斜杠,括号两个竖线,那这些符号就会被删掉,就会导致我们没有办法进行命令执行。
但是这个地方有的同学就会说,那老师这里不就写死了吗?我们不就不能攻击了吗?但是这里是DVwa,他实在没招了,他就写不出东西了。他给大家整了一个小花样,大家在打ctf比赛的时候,可能会遇到这样的情景,你会看这在开发中经常遇到有的开发者,他就无缘无故的就喜欢敲空格,他没事,他就按一个空格键。
大家看一下这个地方他写的你要仔细看,它这个竖线,它是拦截的什么?竖线加上一个空格,它在这里它多敲了一个空格,那说明它只能拦截竖线加空格,你单独一个竖线,你别跟空格它是拦不了了。我给大家看一下,你就知道这这一点是很搞笑的,就是叫你开发的时候也要认真,你写代码你不能总是乱敲空格是吧?我给你看一下,比如说我加个竖线,那后面加个 whoamI,然后我直接看我竖线加空格,因为大家在敲的时候,就包括我自己也经常的会敲空格是吧?
一开始我给大家演示的第一个是,不是我中间就敲了很多空格。因为敲空格并不会影响,但是你在代码中乱敲空格就不一样了。你看我现在这一个,是感谢大家的点赞,我这里是一个竖线加空格,看这有个空格,看到没,我so mete就不行。他就不行,但是你现在你把这个空格,你给它去掉,我给它连起来看这个受限跟I后面你不要加空格,你加不加都不会影响使用。那等一下看是不是出结果了?这就是whoamI的执行结果。同样的,你可以再整其他的命令,有同学说这个whoami,看的不明显是吧?看的不明显没关系,你可以加另外一个比如说加其他的像dir就是你看一下它的目录中有哪些东西?
你看一下是不是在这个目标硬盘下面这个文件夹中有这些文件,这些就是命令的执行结果。说明这个开发也是需要非常细心的,这是high跟medal是一样的。我们可以看到这个 High的这样一个脚本中,它缺少对竖线的检测,那代码中是一个竖线加空格,它并不会影响一个单独竖线的正常使用。这个high就是在绕弯子,它没有任何的效果,所以它没有起到任何技术性的突破。