Rating:

# Break In 2016 - Crypto-Numbero

**Category:** Crypto
**Points:** 100
**Solves:** 7
**Description:**

> 249929761157732020161556121009125440871694502549075144988219699324612968709313502340276966732128645621282888705508840858566948023130606222964801977446316823159281256329353559220858509063084671505269932006162189731434947807072043095879259154468002856960

## Write-up

by [ParthKolekar](https://github.com/ParthKolekar)

In this question the number given was a double type. So all one had to do
was to understand this part and after that it was just scanning and printing
the number.

Starting approach could be to read the number and then convert it to string
byte by byte but that would lead to some garbage chars at the end and that's
when one has to figure out that the number is larger than an integer. So now
try out some other data types of larger size than int.

Here's the code for how this number was created:

249929761157732020161556121009125440871694502549075144988219699324612968709313502340276966732128645621282888705508840858566948023130606222964801977446316823159281256329353559220858509063084671505269932006162189731434947807072043095879259154468002856960

/********** strtodouble.c ********************/
#include<stdio.h>
int main() {
double d[8];
scanf("%s", d);
printf("%lf\n", d[0]);
return 0;
}

After the string was converted to double, the decimal part was removed to
increase the difficulty by broadning the field in which number could
lie. Also removing the decimal part had no effect on the string.

And here's the code to read the number and then print it in string:

/********** doubletostr.c ********************/
#include<stdio.h>
int main() {
double x;
scanf("%lf", &x);
puts(&x);
printf("\n%s\n",&x);
return 0;
}

On running the number via this you get

y0ug0t!t

Which is the flag.

## Other write-ups and resources

* none yet

Original writeup (https://github.com/ctfs/write-ups-2016/tree/master/breakin-ctf-2016/crypto/crypto-numbero-100).