ruby_cookie

from: buuctf [BSidesCF 2019]Mixer #

看到rack-cookie 找了个文章

require "uri"
require "base64"
require "pp"
encoded_string = "BAh7B0kiD3Nlc3Npb25faWQGOgZFVEkiRTBiNDJlNTgzNjJjOWFjNjU5NzJm%0ANzAwYmMxODczZTlkYzBiY2ZkMGI3NGZlYzE4NjBhNWRmNGY3NTg2NDg4NjkG%0AOwBGSSIMYWVzX2tleQY7AEYiJa5eOeNVt5U3U6b2OYRb%2Bz2Do4Uxpnpqkw5L%0AM%2BRPHR46%0A"

decoded_uri = URI.decode_www_form_component(encoded_string)
decoded_base64 = Base64.decode64(decoded_uri)
puts decoded_base64
begin
  object = Marshal.load(decoded_base64)
  pp object
rescue ArgumentError => e
  puts "ERROR: "+e.to_s
end

改改,运行

ruby test.rb

看到

{I"session_id:ETI"E0b42e58362c9ac65972f700bc1873e9dc0bcfd0b74fec1860a5df4f758648869;FI"
aes_key;F"%�^9�U��7S��9�[�=���1�zj�K3�O:
{"session_id"=>"0b42e58362c9ac65972f700bc1873e9dc0bcfd0b74fec1860a5df4f758648869",
 "aes_key"=>"\xAE^9\xE3U\xB7\x957S\xA6\xF69\x84[\xFB=\x83\xA3\x851\xA6zj\x93\x0EK3\xE4O\x1D\x1E:"}

aes key考虑一波解密,把密钥base64一下或者hex,试了上面的session_id 解不开

想到返回包中还有一个user cookie,得到

{"first_name":"123","last_name":"123","is_admin":0}

开了,直接该is_admin=1,在加密回hex发包回去

get flag