122 karma · joined May 4, 2011
They haven't published Cisco bugs, but they do have a pretty broad scope.
http://lcamtuf.blogspot.com.au/2014/03/messing-around-with-d...
I once wrote an emulator for a 4 bit microprocessor in Befunge (a 2D esoteric programming language). Then, I was definitely showing off something that really does not matter. 100% useless.
This is a little different. The motivation is the same, but it also proves that you cannot sanitise Javascript by removing letters or words. It's very easy to assume that such sanitisation works, and such an assumption can be a security-critical mistake. I've actually read this article before because I needed to solve such a problem.
I agree that the carry flag shouldn't be exposed directly, but the ability to express "add and check for overflow" would be useful and allow for these optimisations where the architecture supports it.
Edit: But if you want to exploit the processor to its fullest, go with assembly. The compiler is good, but proving optimisations is a hard problem, and complex, single-instruction-specific optimisations aren't going to take off any time soon.
Relevant talk: Hardware Backdooring is Practical - Jonathan Brossard https://www.youtube.com/watch?v=j9Fw8jwG07g
AT&T:
sub $0x8,%rbx
callq *%rax
mov (%rbx),%rax
Intel: sub rbx, 0x8
call rax
mov rax, [rbx]
Intel can be written with: mov rax, QWORD PTR [rbx]
But it's redundant and assemblers don't expect it. It's only necessary in a handful of places to avoid ambiguity, as opposed to the incessant size suffixes and $/% prefixes, which make AT&T feel more verbose to me. Definitely a matter of familiarity, though.It should work as 32-bit or 64-bit and compile with clang or gcc. It compiles to about 11 assembly instructions.
To produce a fairly small file:
$ clang -nostdlib -O3 -o helloworld -m32 helloworld.c
$ strip helloworld
$ strip -R .note.gnu.build-id ./helloworld
$ wc -c helloworld
428 helloworldI do feel that this poll is biased, because people prefer to declare their knowledge than admit their ignorance.
try:print(lambda x:eval(x)if all(i in'0123456789.*/+-'for i in x)else'syntax error')(raw_input())
except:print'error'But does it really need an instruction on every modern computer's processor to make it that tiny bit faster?
When was the last time you used a program that used that instruction? I've never run in to it (and I spend a decent amount of time looking at x86 assembly). Nonetheless, it shows up at the top of every instruction reference - you need to implement it if you want to simulate x86 correctly.
But at least I can run some old 8086 code on my computer... Right?
On the other hand, using the same salt twice will change the hash if it's put before the data, but not if it's put after the data.
Given an MD5 collision, you can apply a common suffix and still have a hash collision. Applying a common prefix changes the state the hash process is in when it reaches the colliding data and this breaks the collision.
shuf /usr/share/dict/words|head -4|tr '\n' ' ';echo