【GACTF】Checkin WriteUp

运行程序后隔了半秒才出现输入flag的提示,且用IDA搜索字符串搜索不到出现过的字符串,函数窗口中没有发现标准输出函数,猜测逻辑可能并非在C代码中
用OD附加后F9,直接退出,索性慢慢单步跟,一直到跟入sub_404920函数中

发现与文件读写有关,继续OD跟踪,一直到标黄处

可以在栈窗口中看到被写入的文件的路径

程序被断在了这里,文件应该不可能被清理,资源管理器打开看看

直接在src目录里有一个Checkin.rb源代码

require 'openssl'  
require 'base64'  

 
def aes_encrypt(key,encrypted_string)
	aes = OpenSSL::Cipher.new("AES-128-ECB")
	aes.encrypt
	aes.key = key
	cipher = aes.update(encrypted_string) << aes.final
	return Base64.encode64(cipher) 
end

print "Enter flag: "
flag = gets.chomp

key = "Welcome_To_GACTF"
cipher = "4KeC/Oj1McI4TDIM2c9Y6ahahc6uhpPbpSgPWktXFLM=\n"

text = aes_encrypt(key,flag)
if cipher == text
	puts "good!"
else
	puts "no!"
end

直接能读出来加密算法、key、密文,随便找个网站解密即可

GACTF{Have_a_wonderful_time!}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值