数学建模社区-数学中国

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

作者: 杨利霞    时间: 2019-7-5 15:48
标题: 2019--国赛--第一次参加线上赛的自己的整理
+ \; U% x+ k; |* ]6 D
2019--国赛--第一次参加线上赛的自己的整理( E  B6 d3 h& r) M) ]+ r5 X
misc第一题:签到# e9 J/ z/ S1 x$ i4 s/ _, n8 b) q* {

9 Q) d; M1 i6 v) }) v# I5 ^# X打开压缩包,发现一个exe文件和一个txt,要三个人一起站到摄像机,然后等软件识别,就出flag了
  P$ S. w# }6 P
$ F! N* r5 J0 G. d& z$ r但是我发现,你拿手机放一张照片(有三个人或比三人多)上去也可以出flag,所以推测出,该软件是甄别像素点来进行识别的" w0 }7 U+ b% I2 j% P! Z# `
# G5 r0 q) o5 b
misc第二题:saleae  Y# N# A6 N. B' u; d* z

; Q: N6 M8 [" @% u下载压缩包,得到一个.logic的程序,都是新东西,没人知道这是用什么软件来打开的,我发现这个特别考百度能力(捂脸)就是需要logicdata软件1 e9 L9 N( p4 y$ ?3 L* l

9 V) ~- G* _% z8 J  b, A0 ^下载后,发现其中给的是波形* v! _4 @1 \" a' \0 u3 l
% X8 f; e! \7 h: A& X  C/ {
然后去百度,发现这个软件是与芯片的输入输出有关,(后面是可以利用旁边的软件来读取flag的)
+ _2 J, v3 l) c7 `8 e
& p6 g; |6 y: K& |, ?$ P& @当时的我们没发现这个好办法,只能是0101010101的将flag读出来,然后进行转换成字符串
6 ]- ?4 H1 Q! \8 h5 @( ?: F" J: ^6 q
misc第三题:24C
- H* j* \) h& h& L$ X  A6 Q0 W' _* c2 x
与第二题类似,但是需要一点脑洞,就是记得改变它的读取顺序就好了
7 x' P. ^1 ~5 e3 i
- t: R" }$ _# F- _/ Bcrypto第一题:puzzle! i1 R  S- L4 Y$ D! Y0 u2 Y

7 u0 ]6 t1 g" f: X9 z首先是给了一个网站,心想还是不是web+密码,那就有点…舒(zi)适(nue)了吧
8 `: M4 K# }9 ^6 |1 f/ y& |
+ u8 o. I3 c9 \. P7 |0 @. c7 b; y让我深深的感受到数学的重要性,三重积分还没学的我,简直看的如痴如醉,第一题的素数来找规律,让我懵逼好久,这是什么题哦: [4 ]$ I# F4 I* d
1 Z- `) X) ~/ d) q+ j
所有的一切都是从0开始的感觉,于是就开启了自学之旅
( g! l( r, @+ n, V4 N; S
0 ~2 u) c$ A" r, v" z5 }0 S$ d提示一下:1、question0 记得化简运算,当然网上也有计算器(当时死算到无奈,后面还错了)3 c/ t) Z7 ^" z& x6 s

/ e0 F( J1 P' O* j0 T- @               2、question1就是分组找规律,与素数有关4 A0 e8 T- G; \/ R7 K( t" g

% F& x  A- x- C1 x               3、question2是做的最舒服的一道题,简简单单的高数上的计算0 W3 u& Y* ?/ O5 ^- `7 A

  ^% V. X/ D9 g% q8 y8 G4 Z, @0 ?               4、question4是高中的知识,不过用一下大学的思想就就是大物的东西了,记住公式就没啥大问题了' c  M* h, G% W2 u% ~$ B( `

- h$ |$ k; Q9 F/ y6 A; e, ^               5、question5是三重积分,与二重积分类似,具体自己去算
6 T6 Q) L7 |' V/ O  G% g1! U/ o. P; |0 f; X9 R) y
2, d9 }; k- X& e4 L
3
. C( x9 l3 w8 v3 e% [% B4
$ Z- E4 V6 t" Q# q; }( L1 C. p5
" X6 _" p& k8 u% V1 q* ^65 d8 x4 k' C/ c, a
7+ \, G5 u* q+ {
总而言之,这一道题就是叫你好好的去学习高数,一定要认认真真学习高数
6 a; F: |2 X# h1 M; u7 b! [/ x6 f  I6 O0 z
misc第3题:useasp& m$ ?2 k- M3 `, z$ `. x
3 _8 K+ d& _. N, U' J# q
鬼知道这是东西哦,不过经过昨天的一道题发现,继续使用那个logicdata的软件,就可以了5 i) D: @7 ]$ n0 j! E

! Q1 M( H/ J( @" w: ~5 a首先,将文件拖入软件中,然后果然出现了波形3 x" q9 D2 F5 ~8 F7 r8 H
2 |; B2 ]& [3 _- B, v( S
昨天那道题,是对照着题目一道一道念的,010101010101来着,结果,今天发现了一个神奇的地方,在logicdata的右部分中间,可以发现analyzers右边的加号,点进去,有个SPI,根据芯片的一些特性,确定时间线,MOSI和MISO的行,点击确定,就可以得到一个特别长的“flag”* t3 J* M$ w, p: x% [0 k0 p
) Y+ b7 A; I6 n2 h2 o" F! @
很可惜,这是个陷阱,就是假的flag,flag{you-know-it-can-not-be-such-easy}
) F1 I. v$ P4 t2 |% u/ c) l; |. H6 r/ X
于是我们进行了多种尝试,利用这个软件其他的一些工具进行解码,结果一无所获,但是,后来我们决定修改参数,因为之前的配置是可以得出flag的,于是猜测要更改SPI的某个特殊点。, G  s  T7 T9 ^5 U- [

8 p" j+ R0 e, t9 A更改SPI的某个特殊点后,进行一个对照,发现只有将setting中最后的一个参数,改成high值,原屏幕的右下角就出现了flag。3 r' s+ D. y; V: {. Q
8 g) x* _9 Q- S, ~3 ]
web第一题# T5 C$ g  [) F: w2 v$ n  }
- }' ?4 k+ Q  j* H. A
Just so so* }! a) w: y, A8 J& T! M2 c% S" {" C

& y: K( v' s9 b0 J, N/ A开始时,用伪协议拿到源码,然后就是反序列化利用了$ z$ O/ y# I" F( P2 o/ |% l
9 s2 k; X/ b% J1 I
<?php index.php error_reporting(0); $file = $_GET["file"]; $payload = $_GET["payload"]; if(!isset($file)){ echo 'Missing parameter'.'
  I, B+ g) K5 w/ V4 l+ O9 k'; } 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(); } }5 |  X  C0 t% o5 T: S
class Flag{
6 V1 ]! x& @  ]& kpublic $file;
; E$ e( d4 n/ U0 \( j- p0 V+ kpublic $token;
$ s  N1 n. ^$ }+ ]2 B9 U9 j) Npublic $token_flag;
1 h; j$ }) a2 i8 t" ]& J7 D+ q! h
. N( [- t3 U- [, Z& tfunction __construct($file){8 V8 x7 n9 O- [- ]
        $this->file = $file;
' M" P; n8 {6 P% W: Y' I        $this->token_flag = $this->token = md5(rand(1,10000));0 D2 u  S0 W9 l
}( J$ X" }" Q! ^2 b3 r
4 H% {% i; o/ w0 G( X0 w: Y
public function getFlag(){! u* e6 O; c( V2 w" `7 k  w
        $this->token_flag = md5(rand(1,10000));- k7 z! h7 `; H" S3 H4 j9 Z, d; p
    if($this->token === $this->token_flag)1 X4 G. C% ?) d8 S/ p, Q  B2 I* c6 d
        {
5 v  g+ q9 p# D7 I/ Y0 |                if(isset($this->file)){
6 g0 N' S2 x2 {                        echo @highlight_file($this->file,true); ( t. A" r3 a' b2 n
        }  - ]  p$ C! A: p6 Y
    }  ~9 T, R2 x) {
}7 @# y1 K! S5 W% D  E
1* m% y* Q+ ^5 ~' F3 E' \
2
% [. F6 s& y5 K+ u3  h$ A! t9 I  ^( f+ E1 a
4/ b" G8 ?' I5 N8 R5 C, N% B6 Q/ J7 h, K
5
1 C$ ?$ n+ D* S$ d6
9 \# f3 t( F6 _5 [6 Q2 U7
% Z: x% x- I6 [5 d3 B, l& j/ o8
" F# g4 L* w' V4 D) h9
7 ]- t+ c" N& G10
% M& ?# M+ y0 h2 E116 g" n# {& n( v# N8 S0 g3 }/ ?2 U
12* |" j, e- ~( P% Y" \) ]& e. @0 U: w
133 e) d( L# [% |4 K* q, d
14( c2 A5 V- `" d  n& ?$ J! c% H/ u
}
# G+ m9 B% P. L4 B% a?>
4 R5 f' D- d; D, o+ p 大佬说: 可以看到Handle类有个__destruct函数,该函数可以触发getFlag函数,但是__wakeup函数会将所有东西清空,这里改下属性个数就能绕过,参考SugerCRM漏洞,然后getFlag函数的条件可以用指针绕过,以前安恒的月赛也考过,最后flag的匹配可以利用parse_url漏洞,三个斜杠就能绕过了# B) Y7 v+ Y* p, ]7 z
exp
) k. `/ b" p3 k' A$ ^1 H  p7 K- e4 u
3 i- S3 T- R$ ?7 _View Code
5 M/ ~5 p7 {5 }4 `- _
% d$ q: F& S( K( J7 V+ l" G; n; C# x( `1 O

9 E! Y  X& S& e0 m" O, Ihttps://xi4or0uji.github.io/2019/04/22/2019-4-22-2019-全国大学生信息安全竞赛-writeup/#more
; [" x# q4 D! t; P  g+ e0 E2 `3 f6 I2 }9 B7 T! H. ?: u
总结:本次比赛只是做了misc的题,web的题目打的也太少了,要继续加油,多进行php的审计,同时多做一些web题总结经验,下次争取多打几道web题
% o8 U$ E- h2 E5 X---------------------
& ~& P, w% e5 C1 `. L作者:Jeff King
0 s4 A, B- k% H' Z来源:CSDN ) `4 _! ?. @9 o* I
$ T& ~4 T- @# \, g1 |, O- \5 v
3 `4 i. h/ i7 P$ j7 O# U

: c4 E# D3 Q* y, _, P7 |. g




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