view_source
打开控制台查看源代码发现flag
robots
robots协议一般直接在URL后直接输入robots.txt
就可以看到不允许爬虫访问那些
直接在URL中访问这个php文件,得到flag
backup
百度得到备份文件的后缀有这些
网页源代码中什么都没有
直接尝试index.php.bak
发现下载了一个文件,打开文件得到了flag
直接上dirsearch
扫描也可以得到文件的文件名
cookie
题目说了在cookie里放了一些东西,就找一下cookie
cookie中发现有一个cookie.php
访问一下
看一下响应标头得到flag
disabled_button
不能摁的按钮,先查看一下源代码
把disabled删掉即可
get_post
直接在URL后构造/?a=1
就是GET请求
直接用hackbar post b的值
weak auth
打开网站是一个登陆界面
尝试弱密码admin登陆,提示密码错误
说明用户名是正确的,抓包进行爆破密码
爆破得到密码是123456 得到flag
simple_php
源代码如下
分析一下代码
if($a==0 and $a){
echo $flag1;
}
// == 弱类型比较 php中会让 == 后的 0 自己变化成前面的类型进行比较 所以
/* 若字符型值开头为数字,转为数字;
若开头不为数字,为 null 弱比较与 0 相等。
''abc123''== 123 => false
''abc123''== 0 => true
"123abc"== 123 => true
*/
给a传入一个字母,可以输出flag1
分析一下关于b的代码
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
// is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE。
根据这个函数的性质,可以先让b传入的前几位大于1234 然后再拼接上字母,就可以满足要求
Training-WWW-Robots
robots协议,在URL中输入robots.txt
查看,找到flag,在输入到URL中查看
command_execution
命令执行漏洞
127.0.0.1;ls
查看一下
没什么内容,只有一个index.php,访问一下并没有什么用
127.0.0.1;find / -name "flag*"
直接查找一下和flag有关的文件
然后127.0.0.1;cat /home/flag.txt
查看一下文件内容得到flag
xff_referer
前置知识
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的
题目说xff和referer是可以伪造的
xff的全称是X-Forwarded-For
可以用来伪造ip
打开题目说ip地址必须为123.123.123.123
所以进行抓包,在repeater中进行操作
在这需要注意的是,填写的这些内容必须要在connection
字段的上面
baby_web
这里说让我们想一想初始页面是那个
直接测试index.php
然后发现还是跳转到了1.php
打开网络,在index.php的响应标头中得到flag
simple_js
输入了一个密码发现不对
打开网页源代码查看
有js代码
下面有一行引人注目的十六进制
s='\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30'
print(s)
拿到python里跑一下发现出来了这些内容 猜测这应该是ascii码
55,56,54,79,115,69,114,116,107,49,50
丢给gpt写个脚本
ascii_list = [55, 56, 54, 79, 115, 69, 114, 116, 107, 49, 50]
# 使用chr()函数将ASCII码转换为字符,并将结果存储在一个列表中
char_list = [chr(ascii_code) for ascii_code in ascii_list]
# 将字符列表连接成一个字符串
result_string = ''.join(char_list)
print(result_string)
得到falg 为786OsErtk12
php2
网页源代码没有东西
扫描器也扫描不出来东西
进行百度发现index.phps可以
得到源代码
<?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可以看的出来不能直接传入admin
然后第二个if是要等于admin
在URL中,浏览器会自己将是url编码的字符先urldecode一次,然后拿来跟源代码进行比较
然后源代码中还要进行一次urldecode一次
所以可以进行构造一下
%25 对应的字符是 %
%61 对应的字符是 a
可以这样进行构造 %2561
浏览器先decode一次 把前面的%25转化为% 这个%直接接到了61前面构成了%61
然后源代码中再decode一下 变为a 所以 %2561dmin
ics-06
打开题目找到报表中心
发现URL中有id 尝试修改一下都是这个页面
抓包爆破id
unserialize3
打开题目发现是反序列化的题 __wakeup()
函数绕过需要时构造传入的对象数量比定义的多
把下面的1
改为2 就能实现绕过 根据题目构造payload
?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
就能实现绕过
php_rce
打开题目 显示是一个开发框架
发现这个thinkphp v5是由rce漏洞的
在GitHub上查找到可能构造的payload
传入id时发现回显时id,说明代码执行了
按照习惯 ls /一下
发现没有过滤,直接就回显了
直接cat flag
试一下,直接出了flag
Web_php_include
打开题目给了源代码
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
分析一下源代码,要往page传值 但是值不能含有"php://" 否则会替换为空
URL不区分大小写,直接PHP://input
抓包进行命令执行
upload1
文件上传 打开网页源代码发现上传图片就可以
上传一张写了一句话木马的图片
抓包修改包的后缀改为php
使用蚁剑链接 在目录结构里寻找flag
warmup
打开题目发现就一个滑稽图
查看网页源代码发现一个source.php
发现可能含有文件包含漏洞 那就进行构造payload传file的值
进行代码审计 发现有一个白名单列表里有一个hint.php 传一下试试
再往下看if条件 构造的page需要在白名单里
然后还需要两个问号,那就再hint.php后再加一个问号
构造payload ?file=hint.php?/ffffllllaaaagggg
发现不行,可能没在当前目录
多向上找几层目录 ?file=hint.php?/../../../../ffffllllaaaagggg
flag在根目录下,出现flag
总结
1.仔细进行代码审计,查看最后关健的if需要什么,然后一步一步的满足条件进行
2.在网站目录中 flag一般都会放在根目录下,不会放在html目录下面,一般html目录是这样的/var/www/html/web
var又是在根目录下,所以一般要向上cd四次
NEWS CENTER
查询新闻,一眼sql注入 但是在下面查询,在URL中没有增加payload 判断是POST注入
使用sqlmap注入 sqlmap -u URL --data="search=1 "
查询数据库名 sqlmap -u URL --data="search=1" --dbs
查询表名 sqlmap -u URL --data="search=1" -D news --tables
查询字段名 sqlmap -u URL --data="search=1" -D news -T secret_table --columns
查询字段内容 sqlmap -u URL --data="search=1" -D news -T secret_table -C fl4g --dump