专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > SQL

SQL手动流入解析

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
SQL手动注入解析

作者:震灵

注入环境:DVWA

探测步骤:

1、首先探测是否可以注入以及注入方式


原SQL语句为

SELECT * FROM xxx WHERE a='';

注入后为

SELECT * FROM xxx WHERE a='' or '1'='1' --;

这样注入有常见情况有两种用途
第一种用途是用于登录,可以用作万能密码直接进入后台
第二种用途是用于查询,若查询出所有内容则代表可以进行注入
此处展示的是第二种用途

2、探测列数

由于接下来要采用union探测内容,而union的规则是必须要列数相同才能正常展示,因此必须要探测列数,保证构造的注入查询结果与元查询结果列数与数据类型相同

探测采用order by

SELECT * FROM xxx WHERE a='' ORDER BY 1;

order by 1代表按第一列升序排序,若数字代表的列不存在,则会报错,由此可以探测出有多少列

3、探测展示位置

SELECT * FROM xxx WHERE a='' UNION SELECT 1,2 ;


并不是所有的查询结果都会展示在页面中,因此需要探测页面中展示的查询结果是哪一列的结果。上述SQL语句在本示例中展示了1,2,代表1,2列被展示在了页面中。因此可以利用1,2列进行注入查询。

4、探测数据库名、表名、列名

SELECT * FROM xxx WHERE a='' UNION SELECT 1,schema_name from information_schema.schemata;

上述SQL语句是查询数据库名的SQL语句,查询表名和列名的语句很类似,翻阅文档即可。

在探测数据库名、表名、列名的时候需要一些经验,经验不会影响最后的结果,但是经验会影响注入时间。名字如Admin,User的一般有可能是与用户有关的数据库,可以特别关注。

5、探测用户信息

最后一步,探测用户信息。其实有了以前的铺垫,探测用户信息是一个很简单的事情。

SELECT * FROM xxx WHERE a='' UNION SELECT User,Password FROM users ;

通过这一条数据便可以探测出所有用户的信息

部分数据使用了MD5加密,可以复制到MD5解密网站进行解密

6、更高级的SQL注入

对于有防护措施的程序,需要采用更高级的SQL注入手段进行诸如,比如替换SQL关键字大小写等手段。对于十分优秀的程序,SQL注入的意义就不大了,需要采用更高级的手段进行渗透测试。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: