(This is not really an answer — or merely a very partial one —, but a clarification of the comment I posted earlier, as per OP's request.)
Consider the case of $M_{12}$. Let $V$ be its ($11$-dimensional) "standard" representation, by which I mean the nontrivial factor of $\mathbb{C}^{12}$ on which $M_{12}$ acts by permutation of coordinates (in other words, $V$ is the set of elements of $\mathbb{C}^{12}$ of zero sum). A simple computation using GAP (see below) reveals that, among the exterior powers $\bigwedge^i V$ for $0\leq i\leq 5$, (A) every irreducible factor occurs with multiplicity one (by this I mean that in the decomposition of $\bigwedge^i V$ into irreducible components, they are pairwise non-isomorphic), and (B) among such factors appear $12$ of the $15$ irreducible representations of $M_{12}$, namely all except the two $16$-dimensional ones and the $54$-dimensional one.
Furthermore recall the following standard and easy fact (see, e.g., Fulton & Harris, Representation Theory (2004), §2.4, formula (2.31)): if $U$ is a (finite dimensional) representation of a finite group $G$, and $W$ is an irreducible representation of $G$ with character $\chi_W$, then the projection of $U$ onto the sum of all its irreducible factors isomorphic to $W$ is given by $\psi(x) = \frac{\dim W}{\#G} \sum_{g\in G} \overline{\chi_W(g)}\cdot gx$. Consequently, if $U$ is known (say, $\bigwedge^i V$ in the context above) and $W$ is an irreducible representation which is to be constructed but whose character $\chi_W$ is known, and which occurs with multiplicity exactly $1$ in $U$, we can indeed construct $W$ as the set of $x \in U$ such that $\sum_{g\in G} \overline{\chi_W(g)}\cdot gx = \frac{\#G}{\chi_W(1)}\, x$.
For example, $\bigwedge^3 V$ (which is completely explicit) is the direct sum of the $45$-dimensional and $120$-dimensional representations: this provides a construction of the former, say, as the set of $x \in \bigwedge^3 V$ such that $45x + 5 \sum_{g\in\mathrm{2A}} gx - 3 \sum_{g\in\mathrm{2B}} gx + \cdots + \sum_{g\in\mathrm{11B}} gx = 2112\, x$ (labeling the classes as in GAP and the ATLAS): not a very nice construction, but still arguably a form of answer. Of course, one can do better by looking more closely at the values in the caracter table, and discriminate on the value of just about any single class: for example, the same $45$-dimensional representations is the set of $x \in \bigwedge^3 V$ such that $\sum_{g\in\mathrm{2A}} gx = 44x$ (whereas the $120$-dimensional one is the set of $x \in \bigwedge^3 V$ such that $\sum_{g\in\mathrm{2A}} gx = 0$), which is already a bit nicer.
So, if you consider this a construction, this constructs $12$ of the $15$ irreducible representations of $M_{12}$.
GAP session illustrating the computation:
┌───────┐ GAP, Version 4.7.9 of 29-Nov-2015 (free software, GPL)
│ GAP │ http://www.gap-system.org
└───────┘ Architecture: x86_64-pc-linux-gnu-gcc-default64
Libs used: gmp, readline
Loading the library and packages ...
Components: small 2.1, small2 2.0, id2 3.0, trans 1.0, prim 2.1
Packages: CTblLib 1.2.2, FGA 1.2.0, GAPDoc 1.5.1
Try '?help' for help. See also '?copyright' and '?authors'
gap> m12 := MathieuGroup(12);
Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6), (1,12)(2,11)(3,6)
(4,8)(5,9)(7,10) ])
gap> ctb := CharacterTable("M12");
CharacterTable( "M12" )
gap> ccl := ConjugacyClasses(m12);;
gap> ctb := CharacterTableWithStoredGroup(m12,ctb);
CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) )
gap> Display(ctb);
M12
2 6 4 6 1 2 5 5 1 2 1 3 3 1 . .
3 3 1 1 3 2 . . . 1 1 . . . . .
5 1 1 . . . . . 1 . . . . 1 . .
11 1 . . . . . . . . . . . . 1 1
1a 2a 2b 3a 3b 4a 4b 5a 6a 6b 8a 8b 10a 11a 11b
2P 1a 1a 1a 3a 3b 2b 2b 5a 3b 3a 4a 4b 5a 11b 11a
3P 1a 2a 2b 1a 1a 4a 4b 5a 2a 2b 8a 8b 10a 11a 11b
5P 1a 2a 2b 3a 3b 4a 4b 1a 6a 6b 8a 8b 2a 11a 11b
11P 1a 2a 2b 3a 3b 4a 4b 5a 6a 6b 8a 8b 10a 1a 1a
X.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
X.2 11 -1 3 2 -1 -1 3 1 -1 . -1 1 -1 . .
X.3 11 -1 3 2 -1 3 -1 1 -1 . 1 -1 -1 . .
X.4 16 4 . -2 1 . . 1 1 . . . -1 A /A
X.5 16 4 . -2 1 . . 1 1 . . . -1 /A A
X.6 45 5 -3 . 3 1 1 . -1 . -1 -1 . 1 1
X.7 54 6 6 . . 2 2 -1 . . . . 1 -1 -1
X.8 55 -5 7 1 1 -1 -1 . 1 1 -1 -1 . . .
X.9 55 -5 -1 1 1 3 -1 . 1 -1 -1 1 . . .
X.10 55 -5 -1 1 1 -1 3 . 1 -1 1 -1 . . .
X.11 66 6 2 3 . -2 -2 1 . -1 . . 1 . .
X.12 99 -1 3 . 3 -1 -1 -1 -1 . 1 1 -1 . .
X.13 120 . -8 3 . . . . . 1 . . . -1 -1
X.14 144 4 . . -3 . . -1 1 . . . -1 1 1
X.15 176 -4 . -4 -1 . . 1 -1 . . . 1 . .
A = E(11)+E(11)^3+E(11)^4+E(11)^5+E(11)^9
= (-1+Sqrt(-11))/2 = b11
gap> # std is the character of the "standard" representation:
gap> std := Irr(ctb)[2];
Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 11, -1, 3, 2, -1, -1, 3, 1, -1, 0, -1, 1, -1, 0, 0 ] )
gap> # stdalt is the list of exterior powers of std
gap> stdalt := List([1..5], i->AntiSymmetricParts(ctb,[std],i)[1]);
[ Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 11, -1, 3, 2, -1, -1, 3, 1, -1, 0, -1, 1, -1, 0, 0 ] ),
Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 55, -5, -1, 1, 1, -1, 3, 0, 1, -1, 1, -1, 0, 0, 0 ] ),
Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 165, 5, -11, 3, 3, 1, 1, 0, -1, 1, -1, -1, 0, 0, 0 ] ),
Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 330, 10, -6, 6, -3, -2, -2, 0, 1, 0, 0, 0, 0, 0, 0 ] ),
Character( CharacterTable( Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)
(4,10,5,6), (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ]) ),
[ 462, -10, 14, 3, 3, 2, -6, 2, -1, -1, 0, 0, 0, 0, 0 ] ) ]
gap> # Compute the multiplicities of the irreducibles in each exterior power:
gap> List([1..5], i->List([1..Length(Irr(ctb))], j->ScalarProduct(stdalt[i],Irr(ctb)[j])));
[ [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0 ],
[ 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1 ] ]