数学建模社区-数学中国

标题: 2019--国赛--第一次参加线上赛的自己的整理 [打印本页]

作者: 杨利霞    时间: 2019-7-5 15:48
标题: 2019--国赛--第一次参加线上赛的自己的整理
0 Q2 u4 J7 n+ s; g
2019--国赛--第一次参加线上赛的自己的整理4 O  f1 ]. l0 G5 \; A
misc第一题:签到! ?' h/ u8 t( x2 {: X, V

+ y, o+ c) n5 v6 `, b. g* N, i打开压缩包,发现一个exe文件和一个txt,要三个人一起站到摄像机,然后等软件识别,就出flag了
# b5 P1 C$ b( |, t) B: U
9 z5 |8 \* ~& T2 F但是我发现,你拿手机放一张照片(有三个人或比三人多)上去也可以出flag,所以推测出,该软件是甄别像素点来进行识别的
& P! W% L0 L9 I3 P4 b# Z/ c! y  S" b) ^7 |" |/ w
misc第二题:saleae
8 p( m9 R. C9 Z% w
  ^# Q- s  U  O( e; n下载压缩包,得到一个.logic的程序,都是新东西,没人知道这是用什么软件来打开的,我发现这个特别考百度能力(捂脸)就是需要logicdata软件
0 A% \$ y0 }1 ^3 i8 p( h' `5 R
1 w+ L' @2 F; u2 }* [1 s1 \下载后,发现其中给的是波形
. ^* `) o' V' k. q4 `
* l# A- P" M2 n, W8 F* q* t: N然后去百度,发现这个软件是与芯片的输入输出有关,(后面是可以利用旁边的软件来读取flag的)
$ z% }" I) h9 B- k+ R, i7 j  X6 u& s( {; Y" g, v1 P9 m" @" Q
当时的我们没发现这个好办法,只能是0101010101的将flag读出来,然后进行转换成字符串- [: [/ Y" ~2 y
$ P% L0 Z/ w3 |9 T( P# C, q, E2 E
misc第三题:24C) e8 S1 e2 k) b  m

. O; Y0 N1 k- w6 |与第二题类似,但是需要一点脑洞,就是记得改变它的读取顺序就好了1 p$ p  e+ C5 E) Z8 y
! M' x* ^1 z5 R+ x% @
crypto第一题:puzzle
# f8 s7 `. E# D7 z/ `3 l2 h; n5 `% U% w4 B9 s9 z, q0 S
首先是给了一个网站,心想还是不是web+密码,那就有点…舒(zi)适(nue)了吧/ B5 _2 R" P8 o5 H

9 u9 @4 R6 f; b8 F8 A% P让我深深的感受到数学的重要性,三重积分还没学的我,简直看的如痴如醉,第一题的素数来找规律,让我懵逼好久,这是什么题哦
" H  X* W# o6 J% U' \
# ]! [9 g: K2 [* C所有的一切都是从0开始的感觉,于是就开启了自学之旅
$ R& e9 r9 @4 r: X7 o
8 D- K1 P/ B. U4 a1 z7 r提示一下:1、question0 记得化简运算,当然网上也有计算器(当时死算到无奈,后面还错了)
. i+ D1 r/ L9 |; N" Q7 y% T( y; z8 \' s1 U9 }: i
               2、question1就是分组找规律,与素数有关# L9 b: Z7 e) H- X

2 p/ ^! U# @! t! |5 g7 k: d               3、question2是做的最舒服的一道题,简简单单的高数上的计算% T( _/ u& I: V; k& t! [, v
3 O* e4 r; ^2 |
               4、question4是高中的知识,不过用一下大学的思想就就是大物的东西了,记住公式就没啥大问题了
5 b2 s; B; q9 M
- g- k1 q* ^& e" n+ J# E! e               5、question5是三重积分,与二重积分类似,具体自己去算: \: {3 ?8 I8 L* R, Z. ?
1! {% A* [2 Y" |- q
29 F% N% p( o. B3 Q
3* `3 z7 V  C! ?! M+ f" G
4
* H# D$ M( G8 y; p$ _57 R8 u" P! z: c  Y9 R, C" w
60 @, R$ q8 ?! U' Z  k. G. L
79 D# M! Z5 g, y% u7 r1 m
总而言之,这一道题就是叫你好好的去学习高数,一定要认认真真学习高数8 j1 c' h) V9 ]; W( n! I6 a

4 b. ~& G% t4 S% A5 I2 q7 I4 u( Tmisc第3题:useasp* d( E: y- \+ F8 k
# ]6 G/ s8 ^  q
鬼知道这是东西哦,不过经过昨天的一道题发现,继续使用那个logicdata的软件,就可以了( z* p4 o0 W. E5 S! `, Z
1 }8 c  \4 o9 I& d+ Z5 j! M' b
首先,将文件拖入软件中,然后果然出现了波形
5 a: A3 d( m6 o! j/ Y0 _" f# m% e/ c( _& d/ w+ G6 ^
昨天那道题,是对照着题目一道一道念的,010101010101来着,结果,今天发现了一个神奇的地方,在logicdata的右部分中间,可以发现analyzers右边的加号,点进去,有个SPI,根据芯片的一些特性,确定时间线,MOSI和MISO的行,点击确定,就可以得到一个特别长的“flag”
, @- n/ f( W$ v; Z
1 g& ~6 S6 a+ ~/ N! r3 d2 A很可惜,这是个陷阱,就是假的flag,flag{you-know-it-can-not-be-such-easy}, T* ~4 f* }5 Z, r% U% d# }
# P9 C+ f1 m" s. A' y; P) _
于是我们进行了多种尝试,利用这个软件其他的一些工具进行解码,结果一无所获,但是,后来我们决定修改参数,因为之前的配置是可以得出flag的,于是猜测要更改SPI的某个特殊点。. W  B, ]; a$ |& @# b. d! V

$ k! }; J" G* ]更改SPI的某个特殊点后,进行一个对照,发现只有将setting中最后的一个参数,改成high值,原屏幕的右下角就出现了flag。
+ {. t) U2 v0 c% D" f' l3 ^4 g
* ^! v  W1 \0 O' `# V' cweb第一题
6 }5 d1 _9 u9 _6 A% r! ]* u2 V% `) ~: Y3 g
Just so so
, l. R; X+ Q- m. P0 k
1 G/ j4 [- Z. D4 Y: K! _5 ^开始时,用伪协议拿到源码,然后就是反序列化利用了
: E- c7 _, x2 }2 _  r6 T# F- _3 z# k6 S
<?php index.php error_reporting(0); $file = $_GET["file"]; $payload = $_GET["payload"]; if(!isset($file)){ echo 'Missing parameter'.'
  |7 @  v- e0 y' O" o'; } 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(); } }3 J4 b  [; b( A/ L
class Flag{5 E+ T9 |: h; [- [4 r: \
public $file;2 R' V+ U; N. C
public $token;
1 q' F0 D% U( {& U2 Q, z3 l8 upublic $token_flag;8 S1 x- Q9 C' I
2 u- w0 l1 x6 e0 z  {1 ?) C, R
function __construct($file){
. O5 S7 X+ g$ j* V  ]& F+ Z7 X        $this->file = $file;
- L. G- H, H( I        $this->token_flag = $this->token = md5(rand(1,10000));; ]; e& J- b: t. H& l" [
}
# ~9 L; a$ J/ o( T( s/ P3 B6 r& G# K& K! }: m
public function getFlag(){
! V1 Q4 j/ P7 k- b0 L- t, a" ?9 u, _        $this->token_flag = md5(rand(1,10000));3 t* Y" {& F0 }, P' E# m% J4 P. \. I
    if($this->token === $this->token_flag)4 {# R: _, H* `) @
        {
% U! f2 I4 n% M. W6 A6 ^                if(isset($this->file)){, e0 x) f. U* x% S) ?3 [
                        echo @highlight_file($this->file,true); 7 V8 V) v( |. R& P0 }5 B( Y" W1 S' w
        }  
. r, Z7 v8 Y- w6 h$ V0 m: A- Y    }3 {, q0 S0 p8 F. y. \! G
}
& V2 j, ]5 z3 z9 E1
; M( c, o9 G# N/ T3 n) R5 g9 `& j2* }6 |& f* x! e) m6 A
3
5 N3 E+ y2 ]1 @1 Z* y& G4
, M& |/ D) k5 G/ O1 G3 x+ s- Z5; t( G# a; V, l5 V. ?7 t  x7 ^
6
# I/ k! l$ q( l; Y' N6 i) S73 \3 t& F. ?: J8 V+ r. ^( w9 h
8
; M, u# ?, W2 t  g# P9
) l" U( Q" K" I3 S1 s9 h: M10
, M2 ~6 ^2 |  s11' C* [! s7 t( W9 `0 x% i
12
  [" Z& s% U% l$ v4 I13
9 l& Y# Q. O  q! K0 ]. M) I& G. i14
* K) W1 K2 x2 L& p5 _" e6 n/ x}3 o& O. ~* i% O- |- B) D
?>4 Y" Q4 Y: r: h* Z0 l: U) L; b% E4 E: T
 大佬说: 可以看到Handle类有个__destruct函数,该函数可以触发getFlag函数,但是__wakeup函数会将所有东西清空,这里改下属性个数就能绕过,参考SugerCRM漏洞,然后getFlag函数的条件可以用指针绕过,以前安恒的月赛也考过,最后flag的匹配可以利用parse_url漏洞,三个斜杠就能绕过了
1 O. z' |9 H- O/ K* o; rexp$ D2 Y1 X' k' T8 d

% ]  p  g" t, R- S  ]+ I( G2 MView Code' v8 h$ @, _( r/ k
( X2 I& `0 {5 v3 f/ y
, j/ n8 _9 R1 e" R* L5 f8 e/ W

- s$ j! ]+ h; _/ m$ h) B: n! V" thttps://xi4or0uji.github.io/2019/04/22/2019-4-22-2019-全国大学生信息安全竞赛-writeup/#more9 b1 @9 b3 P1 c/ w! g! z' g: H8 `
8 R" F9 C6 r* Z3 r! g
总结:本次比赛只是做了misc的题,web的题目打的也太少了,要继续加油,多进行php的审计,同时多做一些web题总结经验,下次争取多打几道web题
5 T& l: ?1 R2 Q3 X: ~--------------------- 1 T, B. w$ j' Q* y. p
作者:Jeff King ( G* ~" A6 m2 A: w/ V' G6 V7 R
来源:CSDN : ~2 ?% `5 q" t

: A. E% k: P8 p# T0 W) F$ |' e. t' s5 m* D7 f
, m; c) @* i% g2 i4 }





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5