您的位置:首页 > 其它

南邮ctf-web-wp

2017-08-22 18:43 375 查看
签到

水题不解释

md5 collision

md5常见弱类型,,直接得到flag

签到2

,简单的小坑,要输入的口令长度大于10,但是限制是在本地产生的,所以直接用firedebug直接修改就好

这题不是web

这道题一进去有个gif动图,下载下来看看,,在file format里看到了flag,不过在提交的时候要注意有3个空格要删掉

层层递进

这道题是看了名字才有思路,说明是由连续进入好几个网站,这里发现有个网站的名字有些怪,点进去看看,,还有,继续点,最后有一个404.html,点进去以后就看到flag了,一般人都看的出来。

AAencode

这个题提示很明显,就是要用aadecode,这里同时补充个姿势,就是有些人在打开火狐浏览器的时候,尤其浏览这个题的时候,会出现乱码,这时候如果使用火狐浏览器,就按alt弹出菜单栏,在查看里找编码一栏,在里面把编码改成unicode就可以了,,这个明显是aaencode之后的代码,但是他给出的并不完整,有一个小的错误,仔细找修改成正确的就可以了,,这里在积累一个姿势,就是jjencode和aaencode之后的编码都可以直接在chrome里的console里运行,得到结果。

单身二十年

刚进去就有个坑人的链接,点了也没啥用,截了一下包,直接解决

你从哪里来

改了一下host,发现产生了400页面,想了下有没有可能是要改referer,后来上网查了不少姿势,发现没有好用的,后来看了一位师傅的wp学会了用fiddler修改referer,改一下直接就能看到flag了,。。虽然加了referer,但是后来看还是不行,把所有wp的方法全试了一遍,发现这个题目坏了,只记住这道题加referer就好

Phpdecode

这个题纯靠php解密,写个脚本直接跑下就行,跑的时候发现出了点儿小问题,把eval执行语句改成echo输出就行了
文件包含

点进去之后,有个特殊的网址点开就是文件包含了,一开始包含的show.php,当修改成index.php以后,突然电脑就卡了,然后不断刷新,一直在弹,把网页关掉才好一些,后来想到有一种姿势是利用php伪协议读取源码的base64代码,然后利用这一点,成功读取到index.php的源码,base64-decode一下得到结果,

单身一百年也没用

 

还是老套路,直接burp抓包就完事儿

Download~!

这道题有点儿意思,网站炸了,这里简单说一下,进去以后要意识到他对文件名做得小手脚,然后用相同的方式,让自己能够下载除了两首歌以外的关键文件

COOKIE

这个题的提示太明显了,改下cookie就完事儿,

MYSQL

进去直接提示robots.txt,得到关键代码,在文件里又得到新的提示,然后根据源码得知,要通过php的弱类型进行绕过,

sql injection 3

这个题会把输入以后的结果返回,所以这种题很好做,输入’会直接被\转义过滤掉,”也被过滤掉了,当把id换成2的时候,给了提示,这里再附上,phithon师傅的博客介绍https://www.leavesongs.com/PENETRATION/mutibyte-sql-inject.html,这里对gbk-sql注入介绍非常详细,这时候就试出了,宽字节注入,试了一下,2列显示,在2的位置,然后一点儿一点儿注,就可以注出flag了,

/x00

这是一道比较不错的题目,这里可以补充很多知识点,,这也是集成了两个常见的函数漏洞,ereg和strpos,这里对如何绕过不多做解释,可以百度查,然后再来体会这个题的解法

bypass again

给了提示,但是进去一看很显然的md5弱类型,不解释,用的是md5函数的漏洞,不对数组处理的特点构造的payload,,

变量覆盖

这是比赛中好久都没有见到过的题目了,这种题目比较简单,但是很难想到,点开进去,有source.php,进去,得到源码,关键php代码,知道要同时修改$pass和$thepassword_123的值,之前试了post,试了get,发现都没什么卵用,后来明白,extract():从数组中将变量导入到当前的符号表,该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。这样由于存在extract()函数,让变量覆盖成为可能,好吧,这道题是我傻了,一开始对着source.php和secret.php狂轰滥炸,结果忘了还有个文件叫index.php了,,这个直接构造变量值相等就行

伪装者

,很明显的提示,直接header改一下就好,不过题目坏了,改了也不出flag

上传绕过

这个题应该也是经典上传题目,用到了%00截断

SQL注入1

直接找到index.phps获得所有源码,找到关键部分,,这里百度了一下trim()函数的作用,,其实在这里trim的目的就是过滤掉了空格,用处不大,我们的最终目的不是绕过trim(),而是让select 查询语句能够正确执行通过,唯一的问题就是pass这个参数没法解决,尝试万能密码,经过拼凑绕过了最后pw的验证,得到flag

pass check

简单的函数漏洞绕过,不解释,可以百度,

起名字真难

这个题给了源码,一开始总想着用16进制decode一下,然后忘记了用编码转换是encode,这样直接转成16进制,然后传入就可以了,正好16进制全是字母,

密码重置

要求重置admin密码,进去之后看url,直接发现了问题,先urldecode,再base64-decode一下,发下就是账号名,说明这是一个点,然后用burp改包发送尝试一下,没想到就这一个点,记着referer里面还有一处,这样就有2处,然后修改之后再把参数什么的改改就行

php 反序列化

这道题给了源码,比较喜欢这样的题目,有源码,这里是用到了php的序列化问题,用到了get_magic_quotes_gpc魔法函数,过多的这里不赘述了,有兴趣可以百度一下函数调用的销毁机制,这道题目封了,但是看源码大体能看出思路来,要构造一个just4fun的类然后new一个参数,并且赋值使得类里的两个参数都相等就好,然后serialize一下就好

sql injection 4

这道题目给出提示,反斜杠,这是可以利用的点,进去之后,查看源码可以得到源码,根据源码可以构造payload,这个题目的payload的脑洞也比较大,是利用了万能密码的特殊方式,同时利用所给的tip,由于有htmlentities()函数,导致’无法使用,此时就可以使用反斜杠来通过转义的方式来吞掉一个分号。注入的payload为:
http://chinalo 4000
ver.sinaapp.com/web15/index.php?username=admin\&password=or 1%23  

那么最后的查询语句就会变为:

SELECT * FROM users WHERE name='admin\'ANDpass=' or 1#'

综合题

链接就给出了提示bash,首先进去是jsencode,运行之后,,访问,访问之后得到tip,,查看响应头,,百度history of bash,找到,Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。这样访问.bash_history得到,,进行下载,打开后直接开始下载,打开下载文件,得到flag。

System

这个题网站打不开,但是在发布的github网址上有源码,可以下载到本地,在本地搭个环境测试一下,原题目在jarvisoj上,需要用到.git源码泄露才能得到源码,然后这里直接看一下关键代码,主要的目的就是绕过assert()这个函数,网上可以查到这是之前国外一个比赛的原题,也有相应的payload,这里还是自己做一下,在本地测试一下,可以测试出payload来,

') ||eval(system('ls -al'))")//
最后只要访问到有flag的文件就好

SQL注入2

题目主要考察union,这是关键点,进去之后直接给了源码,,这是关键代码,看关键代码发现,这个代码对user和password的处理是分开的,也就是说,是分开验证的,这与之前看到的一道题很类似,也在本地做过测试,构造payload

Username=admin' and 1=2 union selectmd5(1)#

Password=1

然后可以带到源码里去理解一下,这个的构造机制还是比较巧妙的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: