- 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