您的位置:首页 > 其它

SDUT_CTF_WEB题目writeup

2017-10-08 12:21 639 查看

平台链接http://sctf.sdutislab.cn/challenges



闲的没事做了做实验室自己搭的平台,把web题目writeup放出来

签到题

右键查看源代码


芝麻开门



输入口令:zhimakaimen 那就输呗 结果发现 zhimakaimen是11位,但是输入框最大允许输入10位

f12改一下前端验证把最后一个n输进去,flag就出来了



层层递进

看源代码之后,iframe奇怪!

那些属性都是0,于是当然要点链接进去看看了,每次都点第一个iframe里的链接,最后进了一个404.html的链接



就到了这里,完全被这个故事吸引了,而key还是没找到。。

不得不说眼瞎了,这堆我看起来没用的js。。我已经不想说话了



根据提示与右键源码,可以知道用\来使单引号闭合

关键是username=\&password=or 1=1%23 (%23表示#,直接#不行。。。不知道为什么要url编码后才可以)

这样子 sql语句就变成了

SELECT * FROM users WHERE name=’\’ AND pass=’ or 1= 1#’;(表示被闭合掉了)

这样就可以得到flag了:

nctf{sql_injection_is_interesting}

变态的JS

运行题目的代码,得到1bc29b36f623ba82aaf6724fd3b16718.php

回去构造链接(http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/1bc29b36f623ba82aaf6724fd3b16718.php

提示tip在脑袋(head)里,那看头咯,返回包里有tip,提示history of bash

不知道什么玩意,百度咯,可以看看(http://blog.csdn.net/pan_tian/article/details/7715436

用法就是http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history

打开提示一个zip文件,下载就好了

http://teamxlc.sinaapp.com/web3/flagbak.zip

flag is:nctf{bash_history_means_what}

黑进去

存在md5加密

username: 1’ and 1=2 union select ‘c4ca4238a0b923820dcc509a6f75849b’ – -

password: 1

拿到flag

交作业吧

西普文件上传原题

The Ducks

变量覆盖

post传参时传入thepassword_123=123&pass=123

得到flag

写题解写到这发现都是南邮ctf的题,下面的题解只是本实验室内部出题题解

来自谷歌的你

改http头:referer:google

得到flag

慢点再慢点

发现什么都没有,抓包看看,发现还是什么都没有

这是看一下题目地址

http://118.89.168.43:8001/web/web1001

但我们打开时成为http://118.89.168.43:8001/web/web1001/no_key.php

有可能是个301跳转

用burp修改跳转到源地址



发现txt文件,打开拿到flag

永真式注入



SQL联合查询

用户名:1’ and 1=2 union select 1– -

密码:1

畸形化SQL语句



发现上来屁话一大堆,意思就是说有过滤

如果php代码不熟的话,可以在本地搭建环境,测试到底如何过滤





发现所有关键字全部被过滤掉了

这时想就可以用套接字的一种方式

$input=”1’ anandd 1=2 ununionion seselectlect ‘123”;



语句就正常了



不要忘记把前端限制去掉,不然输入框为只读,而且最大输入长度为1

我的初恋



这个出题者总是以极强的故事性把我们带入其中(屁话还是一大堆)

php strcmp函数漏洞,传递数组绕过验证, 抓包



strcmp漏洞细节自行百度

特制浏览器

一看题面就知道是改http头,不过这里有个坑点



改UA头时 改为SDUT-CTF-Browser, 最后.exe不要加

去掉引号的注入

这个题还以为是什么php函数漏洞,结果就是一个宽字节注入



gbk编码的宽字节注入,payload构造如下

http://118.89.168.43:8001/web/sql1004/login.php?usr=1%df%27%20union%20select%201–%20-&pwd=1

宽字节注入自行百度



无空格SQL注入

根据题目意思和题面所给出的代码,可以判定就是一个用其他字符代替空格完成注入的一个题

可以参照我的这篇文章完成题目

payload构造如下



flag就出现了

UNION_Plus

老套路了

payload:

id: 1 union select ‘c4ca4238a0b923820dcc509a6f75849b’, 2

password: 1

其中c4ca4238a0b923820dcc509a6f75849b是密输入密码1的md5值

代码审计1

发现又是php函数的漏洞,百度查下资料,数组可以绕过



到底是不是注入?

进去发现需要id参数,那就传进去



题目给的很清晰,flag位置全都告诉了

做了几次尝试,除了有具体的sql语句之外什么都没有

我猜是基于时间的盲注

http://www.mingzhegao.com.cn/ctf_test/login.php?id=1%27%20and%20sleep(5)–%20-

果然存在延时,也就是说存在时间盲注漏洞

算了,不想手注了,直接sqlmap开跑吧



存在注入点

这个题最后又加了个判断UA头,如果是sqlmap就结束,所以sqlmap如果不加–random-agent随机头的参数压根跑不出来

注入

一开始进去,啥啊,什么都注不出来,看来后台判断写的很死

还有个注册按钮,那就注册试试吧

注册进去之后



发现一个点 这个系统在找和你有相同手机号人的username

在用233的手机号重新注册一个看看



果然,那这就算有个注入点了

重新注册在手机号里构造payload

发现有验证,只能为数字,以前做过一个题,绕过数字,转为16进制







用户数据库版本都出来了

再搞出表名和列名



表名有两个,flag和user

很明显flag在表flag中





点击一百万次

发现是一段js代码做的伪动态网页,尝试着点几次,再结合题目,明白了出题人的目的,点击100万次后,flag就会出来。右键审一下源码看看有什么别的东西



这段js脚本包含的信息量已经足够做这个题目了,它将你点击的次数存储在clicks这个变量里,只要这个变量的值超过一百万,这个题目就game over。

两种做法:

一:找个暴力点击模拟器,启动,让它一直运行,点击超过一百万次就会出flag

二:控制台直接给clicks变量赋值,使他比一百万大。



登录入口在哪

http://118.89.168.43:8001/web/web1006/robots.txt

http://118.89.168.43:8001/web/web1006//D56B699830E77BA53855679CB1D252DA/login.php

php序列化练习

相似题解已经给出来了,教学题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: