sqlmap 注入参数

Web安全攻防 学习笔记

一、Sqlmap 强制设置


1.1、Sqlmap 强制设置 DBMS

默认情况下 sqlmap 会自动识别探测目标 web 应用程序的后端数据库管理系统(DBMS),sqlmap 支持 的 DBMS 种类。

  • MySQL

  • Oracle

  • PostgreSQL

  • Microsoft SQL Server

  • Microsoft Access

  • Firebird

  • SQLite

  • Sybase

  • SAP MaxDB

  • DB2

可以指定数据库来进行探测,参数--dbms 数据库类型

	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --dbms DB2 --banner
	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --dbms mysql --banner



1.2、Sqlmap 强制设置 OS 系统

默认情况下 sqlmap 会自动探测目标 web 应用程序的后端操作系统,sqlmap 完全支持的 OS 种类 Linux、 Windows,参数 --os 系统类型

若系统版本匹配,那么探测出来的结果可能不太准确。

	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --os windows --banner
	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --os linux --banner



1.3、Sqlmap 强制设置无效值替换

  1. 参数:--invalid-bignum

    有了这个参数,就可以强制使用大整数值来实现相同的目标( 例如 id=99999999 )。

    实现原理可以理解为:
            先使原始的参数值(sql 语句)无效,例如 id=1 变为 id=-1,然后再使用自己想要执行的 sql 语句进行代替。
	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --invalid-bignum --banner

  1. 参数:--invalid-logical

    有了这个参数,就可以强制使用布尔操作来实现相同的目标( 例如 id=13 and18=19 )。

  2. 参数:--invalid-string

    有了这个参数,就可以强制使用随机字符串来实现相同的目标( 例如 id=akewmc )。




二、Sqlmap 自定义注入负载位置


        在某些情况下,只有当用户提供要附加到注入负载的特定后缀时,易受攻击的参数才可被利用。当用户已经知道查询语法并希望通过直接提供注入有效负载前缀和后缀来检测和利用 SQL 注入时,这些选项就派上用场了。

--prefix 设置 SQL 注入 Payload 前缀

--suffix 设置 SQL 注入 Payload 后缀

什么意思呢?

        就是篡改原始的 sql 语句。例如 原始语句select * from xxx where id=输入的id值,修改为select * from xxx where id=输入的id值 or 1=1 ,如此原来的判断就可以忽略了,因为我们添加了 or 使得判断恒成立。

# 原始 php 语句, $_GET['id']是一个变量, 如下便是把变量添加到语句上
$query = "SELECT * FROM users WHERE id=('.$_GET['id'].') LIMIT 0, 1";


# sqlmap 修改
$ python sqlmap.py -u "http://ip/sqlmap/mysql/get_str_brackets.php\
?id=1" -p id --prefix "')" --suffix " AND ('abc'='abc"


# 修改后的 php 语句
$query = "SELECT * FROM users WHERE id=('1')  AND ('abc'='abc') LIMIT 0, 1";



三、Tamper 脚本 与 DBMS 认证


3.1、Sqlmap 设置 Tamper 脚本

        sqlmap 本身不会混淆发送的有效负载,除了单引号之间的字符串被 CHAR() 类似的表示形式所取代之外。sqlmap 通过 Tamper 脚本来绕过 WAF 等防御措施,可以在 tamper 文件夹下找到所有 sqlmap 自带的 tamper 脚本。使用参数 --tamper 可以同时使用多个脚本。

sqlmap 注入参数_第1张图片

	$ python sqlmap.py -u "http://ip/sqlmap/mysql/get_int.php?id=1" --tamper "between.py,randomcase.py,space2comment.py" -v 3



3.2、Sqlmap 设置 DBMS 认证

用得比较少,参数格式 --dbms-cred = username:password

	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-3/?id=1" --dbms-cred = "root:root" --banner

你可能感兴趣的:(Web,安全攻防)