pikachu SQL部分(中)

 

6.information_schema注入

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  详细的各个表的位置

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  用字符型的来进行场景演示

  和当初的sqli-lab流程差不多,先输入一个值,找到注入点(单引号),注释掉,order by ,union select , 查库查表查字段查信息

pikachu SQL部分(中)

 

 

pikachu SQL部分(中)

 

 

 

 

 

pikachu SQL部分(中)

 

  kobe‘ union select database(),user()#

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   拿到对应的数据。第一条是数据库名,第二条是表名

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   第一条是表名,第二条是字段名

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   拿到字段的值

 

  这个数值一看就是加密过的,md5加密,我们可以到互联网上找一些彩虹表,去碰撞来解出它的明文。

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

 

7.基于函数报错的注入

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  select下报错的利用显示(还是使用字符型注入)

  我们要使用报错注入,一定是在输入点输入一个错误的语法会有错误进行返回。

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  依次演示结果

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  语句

pikachu SQL部分(中)

 

 

 

8.基于insertupdatedelete的注入

 

 

  insert/update注入场景演示

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   所谓insert,就是前端注册的信息最终会被后台通过insert操作插入到数据库里。

 

  随便测试一下

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   会进行报错

 

  insert原理

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   找闭合处尽量找带有单引号、括号之类的地方进行闭合。

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   出现报错(其他的还是把database()处换成其他语句即可)

 

  update

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   出现报错

 

  delete相关

pikachu SQL部分(中)

 

   与之前的存储型xss有些相似

 

  使用抓包攻击看一下

  点一下删除,看看抓取的数据

pikachu SQL部分(中)

 

   看一下这个请求,我们会发现这其实是把留言对应的id传到了后台,后台就把id对应的留言删除。

 

  查看一下源代码

pikachu SQL部分(中)

 

 

  发送到repeater,在这里我们可以把id进行闭合操作

  因为传入的是一个id,是数字型的,所有我们不用用单引号进行闭合,直接构造即可

pikachu SQL部分(中)

 

 

  因为参数是在url里提交的,所以我们要对构造好的语句进行一个url的编码(encode),否则这一整段并不是url

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   出现报错

 

 

  其他报错方式

pikachu SQL部分(中)

 

   updatexml差不多,使用效果是一样的

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   出现报错

 

  floor函数(取整的效果)

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   a的意思是给前面的语句取了一个别名叫a

  拼接的语句就是从concat后(第三张选中的部分)开始。

 

pikachu SQL部分(中)

 

   会出现报错

 

  演示一下

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   admin的密码爆出来。

 

 

 

 

9.http header注入讲解

pikachu SQL部分(中)

 

 

  场景演示

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  抓一下包试试看(一般涉及到post类型,都要进行抓包)

pikachu SQL部分(中)

 

 

  把刚刚打开页面的请求发送到repeater

pikachu SQL部分(中)

 

 

  因为后端对前端的user agent进行了获取,所以我们直接在这进行拼接。

 

  先提交一个单引号看会不会报错

pikachu SQL部分(中)

 

   出现了报错,说明存在注入漏洞

 

  一般获取到user agentinsert到数据库中,所以我们就用insert 来进行注入(or updatexml

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   成功

 

  这是其中一个注入点,还有一个是Cookie

  这个应该是一个登录的cookie,有用户名和密码

  在用户名这里进行测试

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   出现报错,说明有注入点

 

  直接进行报错注入

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   成功(记得注释)

 

 

 

10.sqli盲注原理以及基于boolean(真假)盲注的演示

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 

  基于Boolean的盲注场景演示

pikachu SQL部分(中)

 

 

  随意尝试

  单引号:

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   也是不存在

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   成功

 

pikachu SQL部分(中)

 

 pikachu SQL部分(中)

 

   不行

 

  这个的提示特别少,只有正确的时候才会返回一个东西,错误也只返回用户不存在。就算输入之前的报错注入语句也不行,说明这就是盲注。

  我们要使用到另外一些函数,通过判断大小来进行猜解

pikachu SQL部分(中)

 

  substr(database(),1,1);   取数据库中的第一个的第一个字符串

  ascii();   将取到的值转换成ascii码值

  通过数值的判断进行猜解

  提交一个比较的payload,通过返回的结果来进行猜解。

  盲注猜解非常的麻烦,所以我们这里只要掌握盲注的原理。后期是可以借助工具来进行的。

 

  如何知道我们要猜解多少次才能获取到数据(length()函数进行长度判断)

pikachu SQL部分(中)

 

   这个同样是要通过判断来进行猜解

 

  盲注这里要使用and ,不要用or ,因为无法判断,需要两个条件都为真才可以

pikachu SQL部分(中)

 

 

pikachu SQL部分(中)

上一篇:JDBC-02


下一篇:PHPCMS V9 模块开发 二次开发实例 留言本