Try oscommerce: http://oscommerce.com/
Its a opensource Open Source online shop, to your need, it support discount prices. I have't tried to create buy 1 get 1 free offer, but I believe that can be done.
I was thinking you can create buy 1 get 1 free by make a 50% discount, but it won't work, since the actual meaning is buy 2 get the price of 1, so not always 50% discount, only when quantity is an even number.
You can create another product for the offer, that contains what ever your offer is, e.g. 2 x Goods @ price of 1, in the detail of the product explain what the offer is.