bees' blog


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

【note】Linux加载动态链接库

发表于 2017-12-19 | 分类于 note

LIBRARY_PATH 和 LD_LIBRARY_PATH

LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:

  1. LIBRARY_PATH环境变量用于在*程序编译期间*查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。
  2. LD_LIBRARY_PATH环境变量用于在*程序加载运行期间*查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。

区别与使用:

  1. 开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。
  2. 发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。
  3. GCC里的链接器的选项是 -rpath 和 -rpath-link
    阅读全文 »

【note】celery基本使用

发表于 2017-12-08 | 分类于 note

Celery 是一个异步的分布式任务队列,主要用于实时处理和任务调度。不过它的消息中间件是默认选择使用 rabbitmq。

Celery 包含的组件:

  1. Celery Beat: 任务调度器,用来调度周期任务。
  2. Producer: 任务生产者,调用 Celery 产生任务。
  3. Broker: 消息中间件,任务消息存进队列,再按序发送给消费者。
  4. Celery Worker: 执行任务的消费者,通常可以进行在多台服务器上运行多个消费者。
  5. Result Backend: 任务处理完成之后保存状态信息和结果,一般是数据库。

Celery 产生任务的方式有两种

  1. 发布者发布任务
  2. 任务调度按时发布定时任务
阅读全文 »

【develop】nmap exit code 255

发表于 2017-11-30 | 分类于 develop

使用python subprocess模块调用namp程序竟然返回255错误代码,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
In [4]: subprocess.check_output(['nmap'])
---------------------------------------------------------------------------
CalledProcessError Traceback (most recent call last)
<ipython-input-4-3ea255c65d35> in <module>()
----> 1 subprocess.check_output(['nmap'])

/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.pyc in check_output(*popenargs, **kwargs)
217 if cmd is None:
218 cmd = popenargs[0]
--> 219 raise CalledProcessError(retcode, cmd, output=output)
220 return output
221

CalledProcessError: Command '['nmap']' returned non-zero exit status 255

查看nmap在线文档https://nmap.org/book/ncat-man-exit-code.html,返回码只有0, 1, 2三种,并没有提及255这个返回码,而且一般程序设计不会返回255这样的数字。于是只好查看nmap源码了。在nmap源码文件nmap.cc的nmap_main函数里面有大量返回码,包括: -1, 0, 1, 2。而不是只有文档中所描述的三种返回码。当nmap不带任何参数调用时,返回-1,也就是python显示的返回码255。-1和255有没有想到些什么,-1的补码就是255,难道程序的返回码做了类型转换,带着这个疑问,实验验证如下:

阅读全文 »

【Mac】解决ipython使用sqlite3报错问题

发表于 2017-11-30 | 分类于 solution

在pycharm上调试程序使用其自带python控制台,查看变量属性或做些简单的计算,出现报错如下:

1
self.ipython.history_manager.save_thread.pydev_do_not_trace = True #don't trace ipython history saving thread

python是brew安装的python 2.7.14版本,并安装了ipython==5.4.10, 乍一看是ipython的问题,第一感觉是ipython和pycharm不兼容,以为是ipython版本太高了导致不兼容,以前有出现过这样的问题。试了其他ipython版本,发现还是报错,那就不是ipython版本问题。

阅读全文 »

破解MAC版欧陆词典3.6.8

发表于 2017-11-06 | 分类于 破解

欧陆词典3.6.8版本破解,只需改com.eusoft.eudic.plist文件(/users/用户名/Library/Preferences/com.eusoft.eudic.plist)中的MAIN_TimesLeft为820711即可。

阅读全文 »

【pwn】linux x64栈溢出

发表于 2017-10-11 | 分类于 pwn

这篇文章主要记录基于64位linux的栈溢出实验,在实验过程中遇到的问题,以及自己的一些思考。

环境配置

实验基于Ubuntu 16.04, 操作系统版本以及gcc, gdb版本信息如下:

1
2
3
4
5
Linux ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x8664 x8664 x86_64 GNU/Linux

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
阅读全文 »

基本排序算法

发表于 2017-09-30 | 分类于 数据结构和算法

冒泡排序

稳定排序, 时间复杂度: O(N^2)

冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序,它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 二次遍历时,第二大的元素就被排列在最大元素之前。N次遍历整个数列都有序。

1
2
3
4
5
6
7
8
9
def bubble_sort(lists):
cnt = len(lists)
for i in range(cnt):
# 比较序列递减
for j in range(1, cnt-i):
if lists[j-1] > lists[j]:
#swap
lists[j-1], lists[j] = lists[j], lists[j-1]
return lists
阅读全文 »

unicode绕过xss

发表于 2017-08-07 | 分类于 Web安全

无意间看到一篇讲解unicode绕过xss的文章Xssing Web With Unicodes,内容比较基础,记录下,顺便巩固下unicode的相关知识:)

阅读全文 »

绕过Safari同源策略,偷取本地文件

发表于 2017-08-07 | 分类于 Web安全

国外研究者Bo0om公开了一种利用Safari同源策略绕过,读取本地文件并上传至远程服务器的攻击手法,并给出了PoC, 地址: https://github.com/Bo0oM/Safiler。一次有效的攻击,需要用户使用Safari浏览器本地读取(file://)恶意文档文件,因此攻击的范围是有限的,但是攻击手法中绕过同源策略和读取本地文件两种方式还是值得学习和研究的。

阅读全文 »

Spring MVC 自动绑定漏洞

发表于 2017-07-22 | 分类于 Web安全

简介

软件框架有时允许开发人员自动将HTTP请求参数绑定到程序代码变量或对象中,从而使开发人员更容易地使用该框架。攻击者就可以利用这种方法通过构造http请求,将请求参数绑定到对象上,当代码逻辑使用该对象参数时就可能产生一些不可预料的结果。

在Spring mvc中,注解@ModelAttribute是一个非常常用的注解,其功能主要在两方面:

  • 运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用;
  • 运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中;

SessionAttributes注解

在默认情况下,ModelMap 中的属性作用域是 request 级别,也就是说,当本次请求结束后,ModelMap 中的属性将销毁。如果希望在多个请求中共享 ModelMap 中的属性,必须将其属性转存到 session 中,这样 ModelMap 的属性才可以被跨请求访问。

Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求对应的 ModelMap 的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes(“user”) 注解来实现的。SpringMVC 就会自动将 @SessionAttributes 定义的属性注入到 ModelMap 对象,在 setup action 的参数列表时,去 ModelMap 中取到这样的对象,再添加到参数列表。只要不去调用 SessionStatus 的 setComplete() 方法,这个对象就会一直保留在 Session 中,从而实现 Session 信息的共享

阅读全文 »
1234…7
bees

bees

personal blog :)

63 日志
17 分类
71 标签
GitHub
友链
  • badcode
  • wupco
  • danlei
© 2017 — 2020 bees 渝ICP备18007542号
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4