当我们在做封神台的第二题的时候就会发现,先前学习的sql注入无法使用了,会出现所谓的传参错误:
当遇到这种情况的时候,就表示WAF对我们构造的sql语句进行了过滤。那么,遇到这种情况,我们有应该怎么对这个网站进行注入呢?
在网络中,网站的数据的传输方式常用的时GET和POST,但是,网站并非仅仅只使用这两种方式,还有一种方式,也是我们可以利用的一种传输数据的方式:cookie。
那么,什么时cookie呢?不妨思考一个问题,我们在对于一个需要登陆的网页进行访问的时候,很多时候是不是第一次登陆了过后有段时间(不会出现登陆时断网的情况)就不需要在二次浏览该网页的时候进行登陆了。
cookie就是在用户访问网站的最开始时传递的参数,列如,当我们给cookie加入一个账号(具体加的方法不具体说明,只需要知道是一个参数就行),那么在浏览该网页的时候就会直接以该账号作为参数传给服务器。因此,我们可以利用这个机制进行所谓的cookie注入。
首先,我们应该先判断是否能够利用cookie传参,我们先删掉这一道题url中问号以及其之后的所有东西,然后回车,就会出现数据库错误这一个页面,之后,我们可以右键,选择检查,找到储存(因为我的是firefox浏览器,它显示的就是中文,Google之类的应该是application),里面有一个cookie这一个标签,我们试着添加一个cookie,并像下图一样修改名称为id,值为170,之后刷新这个页面。
我们可以看到,这个页面恢复了正常,并且成功浏览了一个新闻,这就说明,这个网页是可以通过cookie进行传参的。
之后,我们就可以将id的值改为:
171+union+select+1,2,3,4,5,6,7,8,9,10+from+admin
其实就是和之前sql注入一样的,只不过它的空格字符必须改为+号,以及必须在这里进行修改。
另外,需要注意的是,当我们没有后边的+from+admin,它会出现数据库错误,那么有一种可能就是这个数据库并不是传统意义上的sql数据库,因此,与我们第一题使用的sql注入方式有所不同,我们需要对该网站进行猜表的操作,也就是说,后面必须要加上一个from+表的形式才能成功。最后得到的网页会出现2,3,7,8,9这些数字。由此,我们成功判断了回显点。
之后,我们随便选取页面上能看到的两个数修改问username和password就行了(注:这里的我们是不知道数据库里面的表和字段信息的,因此,我们只能依靠经验去猜,如果能猜中那就成功进行了注入,如果没有,就只有依靠其他的办法了)
171+union+select+1,2,3,4,5,6,7,username,password,10+from+admin
之后,我们得到了一个admin的用户名和一个莫名其妙的密码:b9a2a2b5dffb918c,难道这个就是最终的答案了吗?有可能是,但也有可能不是,如果遇到一些有些离谱的人,他们就会使用离谱的密码来进行登陆,但是,一般的人肯定只会将密码设置成能够记住的,因此,我们可以大胆猜想下,这并不是一个正确的密码,或者说这个并不是密码的最终形式,因此,我们可以想办法对其进行分析。分析一下这个密码,它有一个典型的特征,那就是它是字母加数字的组合,并且是16位,由此,我们可以猜测,这个是一个md5形式的密码(字母加数字的形式,有16或32位)因此,我们可以利用第三方网站进行变换,我们可以利用https://www.cmd5.com/进行变换,得到的值是welcome。由此,我们可以查到,管理员密码为welcom,之后我们在url的xxxx.cn/后面加一个admin,进入管理员登陆页面,将以上得到的username和password(welcome)输入进去登陆,就能够得到本题目的KEY:zkz{welcome-control}