数学建模社区-数学中国
标题:
2019--国赛--第一次参加线上赛的自己的整理
[打印本页]
作者:
杨利霞
时间:
2019-7-5 15:48
标题:
2019--国赛--第一次参加线上赛的自己的整理
3 s: V9 \6 d5 T! G
2019--国赛--第一次参加线上赛的自己的整理
6 E2 Q+ w- p; Q! Y& S, X; H6 a2 S. h
misc第一题:签到
0 U2 ~/ N1 w r7 S" ]& b- E
* I+ L1 l$ t, }2 H+ G6 j
打开压缩包,发现一个exe文件和一个txt,要三个人一起站到摄像机,然后等软件识别,就出flag了
7 h: X s' [: R3 |6 |9 c8 h/ `
+ x! p. r$ S7 m& t1 r
但是我发现,你拿手机放一张照片(有三个人或比三人多)上去也可以出flag,所以推测出,该软件是甄别像素点来进行识别的
% h( ~# i( I; C1 p8 E+ ], M/ H- c+ \
' W" z, G! s/ ]2 r5 @
misc第二题:saleae
- X, A* E5 S) c+ a" R
. Q, ~* t' F/ ]; e+ Z+ w; n
下载压缩包,得到一个.logic的程序,都是新东西,没人知道这是用什么软件来打开的,我发现这个特别考百度能力(捂脸)就是需要logicdata软件
* ~. o1 G8 ^# V4 [
/ e* v) `) t) F' X8 `- x
下载后,发现其中给的是波形
" J7 ], C' D# C3 {( T
. V& [# D1 i% \8 ^; t+ I E
然后去百度,发现这个软件是与芯片的输入输出有关,(后面是可以利用旁边的软件来读取flag的)
$ i2 B- @& x. h$ @0 |/ l( P. V
|5 x1 K& L" L9 Y
当时的我们没发现这个好办法,只能是0101010101的将flag读出来,然后进行转换成字符串
7 x/ z9 ^! I- U$ X* k
6 i' V5 X$ J, h" r
misc第三题:24C
9 l' h/ ]. N O6 _; s! N! g
0 {2 m" [9 a, u0 Z1 m
与第二题类似,但是需要一点脑洞,就是记得改变它的读取顺序就好了
& z* x# j& X. E% T8 H& L
$ @ F& j. ?; w' y; t) C7 j& l( Y+ X* B5 f2 p
crypto第一题:puzzle
! Y( ^" p( a# L. P
8 l" j) Y# _, k# ~. o) H
首先是给了一个网站,心想还是不是web+密码,那就有点…舒(zi)适(nue)了吧
/ b, a7 p( u1 K) r
/ N4 K) E- c8 M7 R! H0 N, ^+ t
让我深深的感受到数学的重要性,三重积分还没学的我,简直看的如痴如醉,第一题的素数来找规律,让我懵逼好久,这是什么题哦
0 @2 L6 B* r7 r; f& d
* \6 v S( s7 }" {- b' F
所有的一切都是从0开始的感觉,于是就开启了自学之旅
3 V- `- q6 X7 n q& r* H! x
9 C- H& G/ e% p* u7 l/ e4 M
提示一下:1、question0 记得化简运算,当然网上也有计算器(当时死算到无奈,后面还错了)
6 C% w, `- J$ P6 y* c& I- t, ^5 Z
9 u. t# H8 x2 X9 H
2、question1就是分组找规律,与素数有关
+ X" D U& Q, ?% |$ Y5 n9 u" M1 U
' J% F4 X! T0 h7 P- S, ^
3、question2是做的最舒服的一道题,简简单单的高数上的计算
5 f4 Z- y- P* J
$ l$ Z0 x* N2 e2 {! H/ s& T: C
4、question4是高中的知识,不过用一下大学的思想就就是大物的东西了,记住公式就没啥大问题了
& W: j8 R" k: v' N
) W! Z- K/ l. i' G- X
5、question5是三重积分,与二重积分类似,具体自己去算
2 f! Z* O5 ?4 }+ d
1
$ @- w) w- `3 ?
2
9 u- ]5 |& W. ]8 b" H' d
3
! O: d9 {3 x& h# E$ L0 Z. S: n3 j
4
0 H' L7 f, Z8 e1 u! ^+ E
5
+ m, B8 V. j# h% L' G1 m: u; Z, I1 J
6
8 k& i0 z3 ~7 a; T6 ^9 a. y/ u& N
7
2 F7 ]) g/ ?: K1 }
总而言之,这一道题就是叫你好好的去学习高数,一定要认认真真学习高数
& j5 N7 Q2 Y/ E! t7 B8 Y) Y" L! h
* g3 z ~! h' [0 {! m
misc第3题:useasp
" @9 H5 `/ s( m% U
0 `0 Y) r ]7 \7 M! d
鬼知道这是东西哦,不过经过昨天的一道题发现,继续使用那个logicdata的软件,就可以了
( M. }6 J9 ]5 L4 g6 r
$ k: e5 A/ l A) \. S
首先,将文件拖入软件中,然后果然出现了波形
" y8 b% C: K& V W
* E4 n1 a% m: G5 c( u# S
昨天那道题,是对照着题目一道一道念的,010101010101来着,结果,今天发现了一个神奇的地方,在logicdata的右部分中间,可以发现analyzers右边的加号,点进去,有个SPI,根据芯片的一些特性,确定时间线,MOSI和MISO的行,点击确定,就可以得到一个特别长的“flag”
# I) x# R: {- l( M: V
, R5 D! R' J& `% F/ n* _
很可惜,这是个陷阱,就是假的flag,flag{you-know-it-can-not-be-such-easy}
4 J9 h) x8 d7 B* q' \! X1 x+ e( s, J! _
* `: l: V4 {4 b# L1 {' x; t% o
于是我们进行了多种尝试,利用这个软件其他的一些工具进行解码,结果一无所获,但是,后来我们决定修改参数,因为之前的配置是可以得出flag的,于是猜测要更改SPI的某个特殊点。
: N9 J- t9 A% U( s0 Q. s4 [
o- \. G# {8 b4 X
更改SPI的某个特殊点后,进行一个对照,发现只有将setting中最后的一个参数,改成high值,原屏幕的右下角就出现了flag。
' V8 _/ \ m8 A8 K. e
, P) h p9 L, @% i4 x3 P/ O# e
web第一题
$ _ v) M5 T% Q" l- V: u
/ W& L! x) m4 ?
Just so so
& ^2 ^+ M- x8 _% ] Y9 F+ M
* y6 X* U& g% A$ ?! s& J& _; v( c4 p3 i
开始时,用伪协议拿到源码,然后就是反序列化利用了
8 ~- t( T" @6 p n
* @3 k; r, \! j7 V4 {) J
<?php index.php error_reporting(0); $file = $_GET["file"]; $payload = $_GET["payload"]; if(!isset($file)){ echo 'Missing parameter'.'
8 Q1 o9 \0 B Q( |, q! n% g+ I
'; } if(preg_match("/flag/",$file)){ die('hack attacked!!!'); } @include($file); if(isset($payload)){ $url = parse_url($_SERVER['REQUEST_URI']); parse_str($url['query'],$query); foreach($query as $value){ if (preg_match("/flag/",$value)) { die('stop hacking!'); exit(); } } $payload = unserialize($payload); }else{ echo "Missing parameters"; } ?> hint.php <?php class Handle{ private $handle; public function __wakeup(){ foreach(get_object_vars($this) as $k => $v) { $this->$k = null; } echo "Waking up\n"; } public function __construct($handle) { $this->handle = $handle; } public function __destruct(){ $this->handle->getFlag(); } }
7 `! X% e, [7 V' I% w- x
class Flag{
2 }- \7 ]+ d7 U' z7 c/ s
public $file;
6 B8 c/ t8 J: k. D- A! I E8 Z n
public $token;
% |9 @, G; [! K, T
public $token_flag;
* I: _0 [1 L" v" q( B
7 L6 v: q. ~" h3 Q
function __construct($file){
0 R2 ^7 X/ M. j( v0 t
$this->file = $file;
$ { `3 @4 [2 {4 u, _0 d2 p* c7 S+ M
$this->token_flag = $this->token = md5(rand(1,10000));
0 p* ?& a) _% m. n/ t. @
}
. M9 H. {# r5 t9 Q: m8 J
0 X- ~& y) v9 l3 @4 t
public function getFlag(){
' V+ s: n6 t1 Y% |
$this->token_flag = md5(rand(1,10000));
. W$ U i3 o |+ J& i4 C6 N
if($this->token === $this->token_flag)
. R; D. J3 b8 t% ]
{
5 M' y; C( G) @" d( D
if(isset($this->file)){
; f, s2 y6 M- W
echo @highlight_file($this->file,true);
. r$ K1 c4 j" @) A h
}
& @( _7 e+ b% D
}
9 a& }# l% |. ]7 J
}
/ @$ |( q$ L8 u7 f6 ^
1
+ p* k% U+ Q3 q
2
; {8 l. |" e0 t M
3
3 D! i) J2 C( R7 h, ]
4
5 g' J3 @. h, U8 | q6 ~; X- ^
5
* p9 d1 v* z( W, F6 @4 T* A
6
$ v2 ], b' g) s
7
3 D2 G2 \! F9 q
8
0 J" y" ]- o4 W. \6 T; i9 a
9
$ E$ Y/ g. B3 [& l2 p4 \, I+ H
10
. y9 G9 S! O: K# r
11
5 m3 G7 l' v+ y9 ^1 ~) x9 [7 R
12
$ @; B! O, h% S( w4 B) t( W- h( v* `
13
4 u! B. d2 M4 j( u7 q* O$ L
14
3 _2 R& P1 L" L2 u/ ^* n/ y
}
8 W( _6 s, l# w( \7 ^
?>
1 x5 v6 o" _& g8 ]0 p
大佬说: 可以看到Handle类有个__destruct函数,该函数可以触发getFlag函数,但是__wakeup函数会将所有东西清空,这里改下属性个数就能绕过,参考SugerCRM漏洞,然后getFlag函数的条件可以用指针绕过,以前安恒的月赛也考过,最后flag的匹配可以利用parse_url漏洞,三个斜杠就能绕过了
! X: }4 M* R; }/ l6 ^) N }3 P, p
exp
4 e( ^ q2 x! Q8 k$ P4 p
T" ?. u$ P* A# c
View Code
$ P1 v: L' B3 N% ?; w' x
3 D: O1 k% u4 T% ~
3 b6 t! K$ }4 P6 \5 {% w2 g$ L9 U
9 z) l9 Y1 E0 w9 P/ Z `- C4 t- S; o
https://xi4or0uji.github.io/2019/04/22/2019-4-22-2019-全国大学生信息安全竞赛-writeup/#more
! L% x2 s0 C( @4 k4 ^
. t% Y# q! i8 J+ l+ W8 f
总结:本次比赛只是做了misc的题,web的题目打的也太少了,要继续加油,多进行php的审计,同时多做一些web题总结经验,下次争取多打几道web题
% ~5 I9 c# B: O) `# ]3 X, k6 k6 B& t; @
---------------------
: ?% N2 }- e; p1 D6 X
作者:Jeff King
i; Q+ Q$ V% `# i9 k( `$ i
来源:CSDN
) N- b! \, e$ A# k. d8 d
- R' V0 u! L6 g/ R4 t5 g, Y
2 e, F9 r+ h; s7 F
3 K4 b1 m" E' B8 E& s; N0 Q% b
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5