low
直接与上net user 即可查看账户
当然也可以用别的dos命令来进行一番操作比如添加账户:127.0.0.1&&net user neww 123 /add 添加一个用户名为neww 密码为123的账户(其实从密码学的角度出发123只能称作口令,不能称作密码,当然,目前这都不重要)
删除账户127.0.0.1 && net user neww /delete 删除名为neww的账户。
另外说明一下,dos中&&的执行情况为从前向后执行,如果遇到错误,则后面所有命令不再执行,这其实和c c++ Java一样。如果你的本网页显示的事乱码,可以用chrome的插件修改编码,插件如下,自行搜索。
medium
在这里上一步的方法不再管用了,因为代码里加了黑名单,对某些字符进行了过滤
黑名单不靠谱,大多数情况下还不如白名单,不过白名单也不见得靠谱,这个待会再说。这里对&&和;进行了替换,还替换成的是空字符,所以可以用ip &;&巧妙绕过,因为代码自己去掉了中间的分号,合成了一个&&。
除此之外呢,还可以用一个&做。&&和&的区别在于,&会把前后的语句从前到尾执行完毕,而&&遇错就打住了。
high
这里是把黑名单做了进一步的完善,但是呢,依然可以绕过,比如第三个'| ',注意后面有一个空格,它是对加了空格的进行了替换,而不是|符号,所以可以利用此直接绕过
impossible
Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。