数学建模社区-数学中国

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

作者: 杨利霞    时间: 2019-7-5 15:48
标题: 2019--国赛--第一次参加线上赛的自己的整理

8 D+ o% I; ~3 y/ o2019--国赛--第一次参加线上赛的自己的整理
4 z! v, U) r' h4 @( z! p  pmisc第一题:签到
9 B% ~- l. b! L+ q2 A/ `4 ^0 ?: ~; m% p( h% e  p  P
打开压缩包,发现一个exe文件和一个txt,要三个人一起站到摄像机,然后等软件识别,就出flag了
6 e7 O3 Y5 @# n4 t) ^' n( k/ l0 h. _$ H! l; L0 Z
但是我发现,你拿手机放一张照片(有三个人或比三人多)上去也可以出flag,所以推测出,该软件是甄别像素点来进行识别的
* f: T1 U  w) W  S
' \8 }" @' d5 j( ]  l& F& W! W6 Smisc第二题:saleae
, q9 ~7 t2 h9 h% l4 e- v# M5 W/ j8 t( ~
下载压缩包,得到一个.logic的程序,都是新东西,没人知道这是用什么软件来打开的,我发现这个特别考百度能力(捂脸)就是需要logicdata软件
6 n0 k4 F# d0 m4 A% J, i7 ~+ S6 l% a( ^3 N3 U
下载后,发现其中给的是波形. v% W. h1 z6 b: J

$ u9 w  j$ R  |/ B5 T) `/ A% B然后去百度,发现这个软件是与芯片的输入输出有关,(后面是可以利用旁边的软件来读取flag的)
# x5 G7 n3 w( x2 g9 j$ ]$ c
, X* W9 M* B$ t, Q1 r6 R& [当时的我们没发现这个好办法,只能是0101010101的将flag读出来,然后进行转换成字符串5 o) S' y# l% [2 ?3 w

) B# J4 T4 u& }8 nmisc第三题:24C+ M) @, P7 D1 G7 _+ ]6 e1 D; w) k
; T% C9 ~/ S! n; \, R7 M. o# C- p! N; f
与第二题类似,但是需要一点脑洞,就是记得改变它的读取顺序就好了
9 s8 P& {& k' ?. t) d' N: M( Q. [$ {' W
crypto第一题:puzzle
# x3 {" V' Z9 P" k( |1 ^) C- m2 \% t1 a; d2 j0 e
首先是给了一个网站,心想还是不是web+密码,那就有点…舒(zi)适(nue)了吧" h' x* _8 S6 C' I% U% m
; S( G) u: ^' T5 P! k5 S0 t
让我深深的感受到数学的重要性,三重积分还没学的我,简直看的如痴如醉,第一题的素数来找规律,让我懵逼好久,这是什么题哦" x' U( O! g: ~
4 r1 }% R* C5 X; O3 Z
所有的一切都是从0开始的感觉,于是就开启了自学之旅0 D* {2 v8 U9 M( ~
; [! y* h( \1 q. R
提示一下:1、question0 记得化简运算,当然网上也有计算器(当时死算到无奈,后面还错了)
) p1 m3 p$ h' R1 L; e# R0 v" v
+ v  o: O8 k. Q+ ?+ |$ o               2、question1就是分组找规律,与素数有关' A0 ]( ^+ U0 f0 G+ g. R; s
7 ]- `6 ^% S& q* u& t
               3、question2是做的最舒服的一道题,简简单单的高数上的计算
) ]3 Q% q  k! E4 p( _
# l8 R5 V0 t2 t* \               4、question4是高中的知识,不过用一下大学的思想就就是大物的东西了,记住公式就没啥大问题了
/ {, y& O- {* @1 I5 B2 S. D
6 V5 P5 ?. ^- F3 Q/ h, w               5、question5是三重积分,与二重积分类似,具体自己去算; B" ?% V6 ?  c# {+ y5 O8 Q
1
1 S# v8 _2 y6 o+ t1 Z' m- J3 c9 P2
1 I7 [* x2 a( {2 C" [, [3
$ A* ~: ^! q2 k; i+ \47 G( p# [7 X9 [" l0 W+ ^
5% r* [% P% B2 Q! }
6
' b( b2 y7 U, f7 m7 L, k7
2 C! O& l! Q% A$ D7 L" C) x+ O总而言之,这一道题就是叫你好好的去学习高数,一定要认认真真学习高数
/ y$ }* K9 A$ j% w2 l
2 F( Z$ J8 x  Wmisc第3题:useasp, ^  O7 f1 M( {" ^0 m: S6 D# S* ?( Y
# Q% S% }; k, j
鬼知道这是东西哦,不过经过昨天的一道题发现,继续使用那个logicdata的软件,就可以了! u( o8 |* p, j$ a

- b) O3 y4 m3 N2 [9 S! f1 |首先,将文件拖入软件中,然后果然出现了波形
# b0 E7 q7 X( K; Y* U4 b! a
, d! S! D+ m  X$ z% H昨天那道题,是对照着题目一道一道念的,010101010101来着,结果,今天发现了一个神奇的地方,在logicdata的右部分中间,可以发现analyzers右边的加号,点进去,有个SPI,根据芯片的一些特性,确定时间线,MOSI和MISO的行,点击确定,就可以得到一个特别长的“flag”
# A# @# D$ H  v0 J0 w
3 R' [8 ]# h2 S) v很可惜,这是个陷阱,就是假的flag,flag{you-know-it-can-not-be-such-easy}" U( A! k  j$ |

+ R( g$ M& ~6 S于是我们进行了多种尝试,利用这个软件其他的一些工具进行解码,结果一无所获,但是,后来我们决定修改参数,因为之前的配置是可以得出flag的,于是猜测要更改SPI的某个特殊点。0 G& h& h& j, Q' {- ~) M

# N) b5 Q+ R0 D更改SPI的某个特殊点后,进行一个对照,发现只有将setting中最后的一个参数,改成high值,原屏幕的右下角就出现了flag。
5 K6 Z8 V' |( j7 S- P, `
3 }7 c. q7 a% ^( h/ |" xweb第一题
* {/ t) X8 p8 f9 q% v
6 _  P* F6 L6 @* eJust so so3 g  t$ `+ R, U. C, O+ t; s

0 T6 J( M( U6 I( Q, F5 r: [- h开始时,用伪协议拿到源码,然后就是反序列化利用了
" t+ S$ E- V1 f; a+ K( h. E8 `1 a8 W  A, A# I/ m3 z
<?php index.php error_reporting(0); $file = $_GET["file"]; $payload = $_GET["payload"]; if(!isset($file)){ echo 'Missing parameter'.'( `1 c- ~& }& X0 j; x
'; } 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(); } }
- P: ~: C+ ^1 Q0 qclass Flag{
# @. Q: i+ ]1 B7 xpublic $file;
3 b/ i  O) a+ ~$ o8 fpublic $token;
* D# k, p3 Y" T- `& `4 d8 ^/ `public $token_flag;  Y5 _/ m+ E* V+ z3 N; Q
9 N1 @# O) p2 h! y1 |+ f
function __construct($file){( z* }  c( l  h: m1 H+ J
        $this->file = $file;
( T) ?4 G, \* a6 e1 C/ ]( s8 h% [1 N        $this->token_flag = $this->token = md5(rand(1,10000));. R7 b4 R- Z7 ~2 G4 A( \6 Y
}
8 s$ V' r' o: e6 }+ Z9 _* H1 O* w& k: _4 g: R1 f  _( f' v& G
public function getFlag(){# y$ e, s9 O8 m$ W" S
        $this->token_flag = md5(rand(1,10000));
* A/ w" M% d# P' n/ @    if($this->token === $this->token_flag)5 t; A! V/ p' J! k1 w3 u
        {
1 N2 x. z5 ]$ U: A6 Y+ C, P# [                if(isset($this->file)){
0 Z0 D- H+ F7 L# ~5 ~( h                        echo @highlight_file($this->file,true);
# a+ C9 d) V1 u: V9 x7 _1 B        }  
, f& F, f* @: w1 E' X    }$ y6 N1 v& o! ^$ H4 }5 o
}  R; e$ s6 m  p* H  _. S
1
- M: V( Q4 i6 ~* k8 ]6 ^1 ]( Y2* ^1 y$ E- ]- ]
3
; a! ?) L& G9 M0 W+ D4
* C  p6 D. p0 w# z5
( W# R+ w( O( h4 q" D6
- x8 O0 A" y9 g% p" K1 d1 T7$ z3 H+ o: H* i( ?4 X
8
: R4 i6 t; n1 b  F( T& w+ g$ b95 [, Y5 t' r" Q8 A
10
. \, b9 K0 S5 S! y3 k+ N6 |11+ P( ?0 n( p4 M2 R) M
12
: O7 u0 F% Q: q13: [- y* C* @7 |# |& P) ~  V* K
14
: ^: _3 |  C) k) G/ }}
# d7 E8 |, Z6 U, |1 D: ?  q3 H?>4 I2 |. R6 H- w7 w: Y/ _" Q
 大佬说: 可以看到Handle类有个__destruct函数,该函数可以触发getFlag函数,但是__wakeup函数会将所有东西清空,这里改下属性个数就能绕过,参考SugerCRM漏洞,然后getFlag函数的条件可以用指针绕过,以前安恒的月赛也考过,最后flag的匹配可以利用parse_url漏洞,三个斜杠就能绕过了
% `( E% F% q  ~exp
& z& z0 I0 ^! R" Y9 O4 _* M
% i7 ]+ A6 {& ?# F- |7 A% KView Code9 S0 K5 A8 C. L. L* |; B
' L2 U7 q# r! _! i$ s0 i2 N
, V1 F8 C. p* n4 {! p; v/ c' l3 _6 W

* T: @6 ]( U+ C3 j8 Ihttps://xi4or0uji.github.io/2019/04/22/2019-4-22-2019-全国大学生信息安全竞赛-writeup/#more& \3 g' b! Q: J( x* i! ^9 w6 H

* [" ^- f2 m& ^0 v总结:本次比赛只是做了misc的题,web的题目打的也太少了,要继续加油,多进行php的审计,同时多做一些web题总结经验,下次争取多打几道web题0 B2 U3 s0 f7 V9 Z! w0 H
--------------------- 7 V4 S/ \1 M# m$ G2 z- m
作者:Jeff King
: c* v8 S( @, a% i6 L来源:CSDN
& f/ y' x& f2 H4 i2 q" `% v7 E! d' g/ p+ h( F

& b  u3 k" s8 P$ H" r
; h0 d: k, i$ a; t- ~, e




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