我们学校的CTF平台终于搭起来了,膜一波包子大佬~~
目前题目还不是很多,大部分是web,写个write up,希望对大家有所帮助
1.XSS-50
这题是XSS,可以通过各种花式操作得到flag,不过....有个最简单的方法: 右键查看元素,点击网络,查看cookie,emmmmmm出来了...这题就是这么神奇
2. XSS-100
其实吧,这题和上面一题差不多,查看cookie,出来了,不过这不是常规解法,可以看下源代码,然后根据那段php构造payload就行了
3. SQLi-50
这一题不会写,难受,先放这
更新:这一题,历经磨难,终于做出来了,请恕我有空再写,可以参考博客:http://blog.sina.com.cn/s/blog_5c92dd1f0102vjfg.html
4.SQLi-100
这一题用万能密码就行
username= 1’=’0
password= 1’=’0
或者
username:admin’=’
password:admin’=’
其实这题和实验吧有一题是一样的,p神写的很详细了,copy过来(侵删)
假设sql语句如下
select * from user where username='用户名' and password='密码'
当提交username=pcat'='&password=pcat'='
语句会变成如下:
select * from user where username='pcat'='' and password='pcat'=''
这时候还不够清晰,我提取前一段判断出来(后面的同样道理)
username='pcat'=''
这是有2个等号,然后计算顺序从左到右,
先计算username='pcat' 一般数据库里不可能有我这个小名(若有,你就换一个字符串),所以这里返回值为0(相当于false)
然后0='' 这个结果呢?看到这里估计你也懂了,就是返回1(相当于true)
所以这样的注入相当于
select * from user where 1 and 1
也等于 select * from user
(这题只有筛选出来的结果有3个以上才会显示flag,没有就一直说“对不起,没有此用户!!”)
好了,继续唠叨几句,上面那个比较是弱类型的比较,
以下情况都会为true
1='1'
1='1.0'
1='1后接字母(再后面有数字也可以)'
0='除了非0数字开头的字符串'
(总体上只要前面达成0的话,要使语句为true很简单,所以这题的万能密码只要按照我上面的法子去写一大把)
5.WEB-150
这一题嘛,上来先常规操作,看看源代码,发现没什么luan用,那就继续常规操作,看看消息头啥的,这时候发现有点不太对
有个Don!t-Decrypt,这个可不是常规消息头里面会出现的,而且后面那段明显是base64,那拿去揭秘喽,结果是20170521,然后拿去提交,显示错误。什么鬼!?再回头看看,这个Don!t-Decrypt的意思好像是不要解密,那就直接提交试试,返回一段有趣的东西
URL?就是个网址呗,那把_改成.进去看看
进去就显示flag,舒服
6.WEB-200
这题看起来也很眼熟,和实验吧有道题很像啊,我这么菜,当然是借(chao)鉴(xi)下dalao们的wp发到这来啦
点开链接之后,任意输入什么,都会弹框出来
你邮箱收到的重置密码链接为 ./step2.php?email=youmail@mail.com&check=???????
于是我们访问以下看一看http://old-ctf.ahusec.cn/web/findpass/step2.php?email=youmail@mail.com&check=???????
出现了step2的界面,但是马上又回到了原来的界面。可以抓包来看一下
email:
token:
在包中发现了submit.php,查看一下看看
但是不能访问,不是admin
但是我们可以知道这是vim,会有临时文件,应该没有禁用
一、vim备份文件
默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,某些情况下可以对其下载进行查看;
eg:index.php普遍意义上的首页,输入域名不一定会显示。 它的备份文件则为index.php~
二、vim临时文件
vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是submit,则它的临时文件
.submit.swp。如果文件正常退出,则此文件自动删除。
所以我们查看临时文件
访问http://old-ctf.ahusec.cn/web/findpass/.submit.php.swp
里面有很多乱码,但还是有两段可读的代码
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`token` int(255) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
if(!empty($token)&&!empty($emailAddress)){
if(strlen($token)!=10) die('fail');
if($token!='0') die('fail');
$sql = "SELECT count(*) as num from `user` where token='$token' AND email='$emailAddress'";
$r = mysql_query($sql) or die('db error');
$r = mysql_fetch_assoc($r);
$r = $r['num'];
if($r>0){
echo $flag;
}else{
echo "澶辫触浜嗗憖";
}
}
从代码里可以知道,
token初始化为0,但if语句中要让他长度为10,可以置为0000000000
在网页的源代码里面我们可以从刚才的源代码中知道admin的邮箱
所以
http://old-ctf.ahusec.cn/web/findpass/submit.php?emailAddress=admin@ahusec.com&token=0000000000
7.'!'操作
这道题是密码学,下载下来是张二维码不过扫不出来,根据题目'!'的提示,反色之后就能扫了,扫出的结果是rot13啥啥的,那就是rot13加密呗,拿去解密一下,get,恕我懒得截图了
8.RSA
不会RSA加密,没学过现代密码学,听大佬说这题就是纯套公式,去自学一下公式,然后编程解决就行了,不过我这么懒,自学密码学是不可能的,这辈子不可能去自学密码学的,Web又不会做,只能靠sqlmap扫扫人家数据库,才能混混比赛这样子
9.复杂计算
这题就是编程题,先找规律,25以后的后五位都是0,那就算1到24的阶乘之后咯,写段代码算就行了,不会写的百度上一大堆。这题告诉我们,CTF里面也可能出现纯编程题,包子学长说的好,学习信息安全,编程的基础能力也很重要。虽然我个人认为,不以攻防为目的的敲代码都是耍流氓,一点都不酷。哈哈哈,个人拙见。
10.隐写-header
这题杂项是考隐写术,下载下来是个压缩包,解压出个misc格式的文件,misc这种格式肯定是不存在的,那它到底是什么文件呢,根据题目的提示,header,那就先转换成txt看看头是啥,然后就发现
看到个NG,那不就是PNG格式呗,作为图片打开,get flag!
11.隐写 - 种~
下载压缩包,解压解压再解压,最后是个jpg文件,拿stegsolve查看也没啥问题,改成txt也没看出隐藏了什么东西,然后就注意到了这个文件的名字,exif,我们去百度一下
信息???懒得去下专门的软件去查看了,看看文件属性里面的详细信息那一栏
优秀!
12.抓黑客
这一题很多人把它想复杂了,其实就是把黑客的ip填进去就行
先用wireshark打开数据包
第一次碰见这么短的数据包,舒服得一批
发现黑客就是进行了一个ping操作,过滤一下
发起ping的不就是黑客嘛,提交下ip地址,搞定
这一题还是很简单的,不过对数据包进行分析最好去系统学一下wireshark的使用,还是很有用的
题目不多,还是有两题不会写,RSA那题就算了,还有题sql注入的不会写,巨TM难受,再研究一下,写出来再更新。
第一次写WP,有不对的地方请大家指正,谢谢~