第二届广东省强网杯

web

broken

打开网页拿到一个文件,是jsfuck编码,但是损坏了,然后将开头的[[改成[][就可以解码了

第二届广东省强网杯

然后直接拿去网站解码就行了,注意他弹出的不是flag,他的flag是一个变量名的赋值

解码网站推荐https://enkhee-osiris.github.io/Decoder-JSFuck/

who are you

点进去发现没有权限,然后继续找找,看见cookie有一个很奇怪的值

第二届广东省强网杯

先对他进行base64解密再rot13解密可以得到s:5:"guest"

把guset改成admin再倒着加密回去,就可以以admin的身份登进来了

第二届广东省强网杯

发现他要我们传文件过去,这里补充一点,后台接文件可以用file_put_contents函数,然后第二个data参数可以是数组

原题是不传数组会触发waf,文件类型没有要求,所以构造payload可以是filename=1.txt&data[]=<php? phpinfo();?>

还有一点就是如果data没有phpinfo是不能读取到文件的flag的,成功模拟了文件上传后,访问就行了

phone number

这题其实考了二阶sql注入,跟一阶其实差不多,只是数据写进了数据库,然后注入点是注册那里的电话号码,而且题目说了admin的电话有flag

其实题目还挺简单的,考的也只是报错注入,除了每次都要注册很麻烦→_→

第二届广东省强网杯

第二届广东省强网杯

 

第二届广东省强网杯

 

第二届广东省强网杯

第二届广东省强网杯

 

第二届广东省强网杯

Musee de X

这题进去随便注册一个账号,然后去donate,address随便放个进去,name要用回注册的名字,不然会触发waf

首先注册了一个ugh的账号,然后url乱填可以看到报错

第二届广东省强网杯

第二届广东省强网杯

报错可以看见用户名是text,text在jinja2.Template(text).render()执行,所以可以确定注入点在用户名而且是jinja模板注入

然后一开始注册的时候去注册一个用户名利用python语句实现动态加载对象,执行命令读取文件

最终payload是gg{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('cat flag*').read()}}

address可以用一张黑色图片方便看回显http://pic.58pic.com/58pic/17/28/21/24d58PICqnU_1024.jpg    

第二届广东省强网杯

这里顺便推荐一篇绕过waf的很好地博客http://p0sec.net/index.php/archives/120/