29 / 03 / 2013 buling

      今天无意发现公司入网规范管理后台地址,就试试能不能突破,这段时间看了不少web安全相关的文章,在账号中输入单引号,跳转到登陆提示sql执行失败的页面

错误提示:执行SQL语句错误 SELECT Password, RoleID, UserName, LastIP, LastTime ,LastWrongNums,LastWrongTimes FROM TOperator WHERE BINARY USERNAME = ''' array ( 0 => '42000', 1 => 1064, 2 => 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'\'\'\'\' at line 2', )

      可以看到sql的单引号被转义,在看看页面编码,gb2312,可以利用gbk的双字节突破单引号被转义的限制(GBK双字节编码:一个汉字用两个字节表示,首字节对应0x81-0xFE,尾字节对应0x40-0xFE(除0x7F),刚好涵盖了对应的编码0x5C。)
      当我们提交参数 %d5′ ,经浏览器URL编码后为%d5%27,再经PHP URL解码后为 0xd50x27,再经PHP转义后为0xd50x5c0x27,即就是在0x27(‘)之前插入了转义符0x5c(\)。当MySQL采用GBK编码连接时,0xd50x5c0x27 这一字节序列就被MySQL作为GBK编码理解:誠’。
      但我使用 aa%d5’ or 1=1提交后还是提示用户不存在,还没找到原因,看wooyun上有相关描述贴(http://www.wooyun.org/bugs/wooyun-2010-015576),用默认账号密码登陆是可以成功的。由于事情有点多,以后突破

无标签信息 0 条
18 / 03 / 2013 buling

上一篇文章已经介绍过scribe的安装过程了,基本都没有什么问题,下面开始做一下scribe的测试,安装scribe源码目录中example示例中的README步骤操作,开启scribe:

./src/scribed examples/example1.conf

结果报错
./src/scribed: error while loading shared libraries: libboost_system.so.1.46.1: cannot open shared object file: No such file or directory
通过执行能找到libboost的so文件,google后原来需要加入到ld.so.conf文件

whereis libboost_system.so.1.46.1
//libboost_system.so.1.46: /usr/local/lib/libboost_system.so.1.46.1

操作如下,vi /etc/ld.so.conf,加入下面这句话后,执行 ldconfig使配置生效,再执行,一切正常

/usr/local/lib/libboost_system.so.1.46.1

进入example文件夹做测试:echo ‘hello’|./scribe_cat test发现错误
ImportError: No module named scribe
进入scribe源码目录下面的lib/py文件夹make,并且setup.py install,再执行发现还是同样的错误,用python2.6测试正常,估计是scribe_cat用python2.4执行了,打开scribe_cat可以看第一行,改成你自己的python2.6的路径即可。同样发现没有thrift包,进入thrift-0.9.0/lib/py安装
再执行,发现还是错误:ImportError: No module named fb303.FacebookService,进入thrift-0.9.0/contrib/fb303/py安装

14 / 03 / 2013 buling

      这两天可累着了,为了安装scribe和thrift花了好大的神啊,估计也是经验不足造成的,还好,终于安装完成,下面对安装过程中遇到的问题做一些记录吧。
      刚开始的时候觉得应该挺简单,兴冲冲的去http://thrift.apache.org/下载了安装包,编译,发现需要一大堆的三方包支持,然后就从头到尾开始安装,有的安装包对版本有要求,只能源码下载安装,花了好些时间。最后遇到某个什么包的时候没搞定,问同事ronggr,他说没装,不用java所以可以不用装这个包,蒙了,难道不是所有的包都要装吗?去官网看安装文档 http://thrift.apache.org/docs/install/,我了个去,失策,好吧,简单安装,很快搞定了。这就是thrift安装的全过程,没有太多难点
      接着去github下载了scribe,安装,配置还算顺利,make的时候遭了不少罪。
1、出错,usr/local/include/thrift/protocol/TBinaryProtocol.tcc: In member function ‘uint32_t apache::thrift::protocol::TBinaryProtocolT::writeI16(int16_t)’:
/usr/local/include/thrift/protocol/TBinaryProtocol.tcc:147: 错误:‘htons’ 的实参不依赖模板参数,所以 ‘htons’ 的声明必须可用
http://stackoverflow.com/questions/8402479/error-while-compiling-thrift-server
解决办法:因为 没找到,设置一下吧 bash CPPFLAGS=”-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H”
./configure CPPFLAGS=”-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H”
2、一个fb303的错误,原来需要去thrift包的thrift-0.9.0/contrib/fb303安装,还算快。
3、错误,file.cpp:248: 错误:‘class boost::filesystem::directory_entry’ 没有名为 ‘filename’ 的成员
解决办法:boost库不对,我安装的是最新版boost1.5,换成1.49.
thrift、fb303和scribe都依赖于boost的c++库,boost版本要求至少1.36以上,yum安装的是1.33.1
而在1.45开始(比如我用的是1.49),boost的filesystem版本从v2到v3,注意scribe只支持到v2,所以编译scribe的时候,需要设置一下 bash CPPFLAGS=”-DBOOST_FILESYSTEM_VERSION=2″
-DBOOST_FILESYSTEM_VERSION=2 参数只有在你的boost版本大于1.46的时候需要添加
CPPFLAGS=”-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2″
      到此三个问题解决了,在过程中遇到一个包被安装了2次,rpm -qa发现,原来是x86_64的和i386的,想卸载发下报错 通过man rpm,发现–allmatches应该可以解决这个问题.
最后 rpm -e –allmatches xxx.rpm搞定
      装完scribe后发现yum坏掉了(提示Yum Segmentation Fault (core Dumped) ),原来是libz库文件冲突了,修改如下:

rpm -q zlib zlib-devel
cp /usr/lib/libz.so.1.2.3 /usr/local/lib/
cd /usr/local/lib
ln -sf libz.so.1.2.3 libz.so
ln -sf libz.so.1.2.3 libz.so.1
yum clean all

好莫名其妙,什么都搞定,发现Can’t connect to MySQL server on 这个错误,ssh client也能连接,但php却不能,搜索解决问题地址
http://stackoverflow.com/questions/4078205/php-cant-connect-to-mysql-with-error-13-but-command-line-can
方法是:setsebool -P httpd_can_network_connect_db=1
关闭linux警报音:setterm -blength 0

无标签信息 0 条