数学建模社区-数学中国
标题:
2019--国赛--第一次参加线上赛的自己的整理
[打印本页]
作者:
杨利霞
时间:
2019-7-5 15:48
标题:
2019--国赛--第一次参加线上赛的自己的整理
8 D+ o% I; ~3 y/ o
2019--国赛--第一次参加线上赛的自己的整理
4 z! v, U) r' h4 @( z! p p
misc第一题:签到
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 S
misc第二题: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 n
misc第三题: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 P
2
1 I7 [* x2 a( {2 C" [, [
3
$ A* ~: ^! q2 k; i+ \
4
7 G( p# [7 X9 [" l0 W+ ^
5
% r* [% P% B2 Q! }
6
' b( b2 y7 U, f7 m7 L, k
7
2 C! O& l! Q% A$ D7 L" C) x+ O
总而言之,这一道题就是叫你好好的去学习高数,一定要认认真真学习高数
/ y$ }* K9 A$ j% w2 l
2 F( Z$ J8 x W
misc第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/ |" x
web第一题
* {/ t) X8 p8 f9 q% v
6 _ P* F6 L6 @* e
Just so so
3 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 q
class Flag{
# @. Q: i+ ]1 B7 x
public $file;
3 b/ i O) a+ ~$ o8 f
public $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 ]( Y
2
* ^1 y$ E- ]- ]
3
; a! ?) L& G9 M0 W+ D
4
* C p6 D. p0 w# z
5
( W# R+ w( O( h4 q" D
6
- x8 O0 A" y9 g% p" K1 d1 T
7
$ z3 H+ o: H* i( ?4 X
8
: R4 i6 t; n1 b F( T& w+ g$ b
9
5 [, 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: q
13
: [- 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% K
View Code
9 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 I
https://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" `% v
7 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