2018年04月

*ctf 2018 writeup simpleweb


ダウンロードしたファイルは次のようなjavascriptです。
var net = require('net');

flag='fake_flag';

var server = net.createServer(function(socket) {
socket.on('data', (data) => { 
//m = data.toString().replace(/[\n\r]*$/, '');
ok = true;
arr = data.toString().split(' ');
arr = arr.map(Number);
if (arr.length != 5) 
ok = false;
arr1 = arr.slice(0);
arr1.sort();
for (var i=0; i<4; i++)
if (arr1[i+1] == arr1[i] || arr[i] < 0 || arr1[i+1] > 127)
ok = false;
arr2 = []
for (var i=0; i<4; i++)
arr2.push(arr1[i] + arr1[i+1]);
val = 0;
for (var i=0; i<4; i++)
val = val * 0x100 + arr2[i];
if (val != 0x23332333)
ok = false;
if (ok)
socket.write(flag+'\n');
else
socket.write('nope\n');
});
//socket.write('Echo server\r\n');
//socket.pipe(socket);
});

HOST = '0.0.0.0'
PORT = 23333

server.listen(PORT, HOST);
処理の内容は、入力された5つの数値を昇順に並べて、1番目の数値と2番目の数値の和、2番目と3番目の数値の和、3番目と4番目の数値の和、4番目と5番目の数値の和をとり、4つの数値を得ます。その4つの数値を順に0x100を掛けながら加算していきます。その結果を0x23332333と比較して一致すればフラグを得られるというものです。
したがって、和を取った後の4つの数値が0x23(35)、0x33(51)、0x23(35)、0x33(51)であれば良いのですが、入力した数値を昇順に並べ替えて処理していますので、そう単純ではありません。

並べ替えは文字列として処理されるので、次のように数値を入力することで、フラグを得ることができます。
$ nc 47.75.4.252 23333
15 20 31 4 47
*ctf{web_chal_made_by_binary_players_lol}
フラグは、
*ctf{web_chal_made_by_binary_players_lol}

NoNameCon CTF Quals 2018 writeup Subdomain

Subdomain

50

We want you to find hidden subdomain *.nonameconctf2018.xyz

and get the flag from it. Don't attack DNS servers

http://hiddenflag.nonameconctf2018.xyzにアクセスすると、下記ページが表示されます。

1

フラグは、
nnc{ef62e674aa6585412e1ee529b4bd9090}
です。



記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー