PHP手工注入详解(实例检测)

[复制链接]
查看296 | 回复0 | 2012-4-1 19:18:33 | 显示全部楼层 |阅读模式
作者:夜虫儿

================================================

谨以此献给黑客x档案的新手们
前言:

现在的网络,最流行的攻击手段有两种,一种是缓冲区溢出攻击,一种是SQL注入,相对而言,最流行的还是脚本注入,而脚本注入漏洞更是风靡黑客界。不管是老鸟还是新起步的小菜,都会为它那巨大的威力和灵活多变的招式所着迷!
正是因为注入攻击的流行,使的市面上的注入工具层出不穷!比较出名的有小竹的NBSI、教主的HDSI和啊D的注入工具等等!这大大方便的小菜们掌握注入漏洞!可是,工具是死的,注入的手法却是活的,能否根据实际情况灵活地构造SQL注入语句,得到自己想要的信息,是高手与小菜的根本区别!只用工具,而不去管它的原理,是不可能得到提高的,当然,在遇到一些特殊情况的时候,那些只会用工具的小菜们也只能放弃了!所以学会手工注入自己构造SQL注入语句是一个黑客爱好者必上的一堂课!我希望这篇文章能够给那些还不会手工注入的朋友一点启发!帮助大家早日摆脱工具,早日踏入高手的行列!
初级篇
PHP注入的常规手段也是先判断注入点,我们现在以华东理工大学的一个注入点(http://career.ecust.edu.cn/pop_zp.php?id=158)为例。在网址后面输入and1=1返回正确页面,一:

 








图一
再输入and1=2返回错误页面,二

 


图二
那么这样就可以判断此处存在注入点。

然后就是判断字段长度,使用的语句是“orderby”在网址后面输入orderby10返回正确页面,三:

 


图三
说明字段长度大于10,然后再输入orderby20返回错误页面,四:


图四
说明字段长度在10到20之间,当我们输入orderby11的时候返回的也是错误页面,这就确定了字段长度为10
然后使用语句“and1=2unionselect1,2,3,4,5,6,7,8,9,10”爆出2,4,5,*个字段位置,五:



图五
在mysql中有很多的注射能用到的函数比如user()database()version()分别用来查看当前数据库连接的用户名,数据库名称以及mysql的版本,这里我把字段4换成user()也就是说让页面在字段4的位置显示当前数据库连接的用户名

http://career.ecust.edu.cn/pop_z...0union%20select%201,2,3,user(),5,6,7,8,9,10,六

 










图六
继续换成其它的函数名,分别显示,七,图八



图七



图八
然后是猜解管理员的表明这里说明下如果当前连接数据库的用户是root的话可以尝试使用loadfile()函数来查看文件内容不过前提是要知道文件的绝对路径这里我们猜解下管理员表名在语句后加上from表名

http://career.ecust.edu.cn/pop_z...0union%20select%201,2,3,4,5,6,7,8,9,10%20from%20admin,九



图九

返回错误页面说明不存在admin这个表名,输入users,十


图十

返回正确页面,说明存在users这个表名

常用的表名有:adminusernewsmanagea_adminx_adminm_adminadminuseradmin_userarticle_adminadministratormanagermembermemberlistusersManage_Useruser_infoadmin_userinfologinnew用户会员
*
*
发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则