ctfshow_web入门wp
ctfshow-web入门全解
>重新走一遍ctfshow,顺便记录下wp
由于我们是以夯实基础为主,所以我不会使用sqlmap之类的工具一把梭
信息收集
不写了,这里直接点下面的hint就能看到,提一嘴如果由于js导致看不了源码可以点一下url再进行f12或者ctrl+u
爆破
web21
点开发现要输用户名和密码,抓包发现有个Authorization: Basic YWRtaW46MTIzNDU2,解码后面的是admin:123456,这里就可以直接爆破了使用burp>Intruder>payload处理先前缀一个admin:,再base64-encode,最后把下面的URL编码取消,就可以爆了
web22
爆破域名,好像环境坏了,直接交flag吧
web23
接收一个参数并进行md5,如果第2,15,18位字符相同,而且整数值的和除以第二位的整数值等于第32位的整数值,则输出flag
burp>Intruder>Brute forcer>1-2长度,爆破出为3j
web24
使用372619038作为随机数的种子,生成随机数,由于种子固定,所以其实随机数也是固定的,经本地测试恒为1155388967,所以直接r=1155388967就行
web25
先输入r=0,得到第一次的随机数,然后使用php_mt_seed工具推出seed值,然后对应一下7.3.11的版本,取第二次和第三次的和写入token中发包就可以获取到flag了
web26
?这题好诡异啊,点进去抓包全放直到抓到checkdb.php,然后啥都不填发送就行a=&p=&d=&u=&pass=就返回flag了
web27
点开莫名其妙,有个录取名单直接下,打开有个叫高先伊的直接爆破身份证号
Intruder>日期>从19800101爆到20201231,格式选下面的自填yyyyMMDD,直接爆就行,查询到学号直接拿身份证号登陆就行
高先伊 身份证号:621022199002015237 学号:02015237
web28
GET /§0§/§1§/ HTTP/1.1,选择(Clusterbomb)模式,从0到100爆破,最多10000次,爆出来/72/20/,直接返回flag了
命令执行
直接看hint吧,看不懂的看我rce全解那篇文章,很全了,web118到web121看我环境变量全解那集
web41这个位置肯定是放错了,应该放55-57这个位置的着重讲一下web71开始,这里与前面就不是一个难度了
web71
源码
1 | |
这里是先执行代码,然后将返回的内容放至缓冲区,然后进行过滤,但是我们可以提前退出结束这个代码来绕过缓冲区的限制,例如exit(),ob_flush(),die()
payload:c=include('/flag.txt');exit();
web72
这题源码与上题相同,但当试图用上一题的payload的时候,出现include(/flag.txt): failed to open stream: No such file or directory in /var/www/html/index.php(19) : eval()'d code
猜测是open_basedir限制了访问区域,这里可以用glob:///*进行读取的绕过c=var_export(scandir('glob:///*'));exit();
这里var_export与print_r的效果大致相同发现根目录下有flag0.txt但下一步要想读到flag,就很麻烦了这里需要扩展一下uaf的知识点
web73
这题没有open_basedir的限制了用c=var_export(scandir('/'));exit(0);找到flag,用c=require_once('/flagc.txt');exit(0);读取flag
web74
scandir被禁了,但是glob还在,glob不仅可以是一个伪协议,也可以是一个函数,作用与scandir相同
c=var_export(glob('/*'));exit();,然后include即可
