首先打开解题链接查看源码:

查看源码后发现有一段注释:

  1. <!--source: source.txt-->
    这点的意思是:原来的程序员在写网页时给自己的一个提醒是源码在这个地方,我们要查看时将source.txt复制到当前地址栏里替换index.php,然后回车
    就能看到源码了:
  2.  
  1. <?php
  2. error_reporting(0);
  3.  
  4. if (!isset($_POST['uname']) || !isset($_POST['pwd'])) {
  5. echo '<form action="" method="post">'."<br/>";
  6. echo '<input name="uname" type="text"/>'."<br/>";
  7. echo '<input name="pwd" type="text"/>'."<br/>";
  8. echo '<input type="submit" />'."<br/>";
  9. echo '</form>'."<br/>";
  10. echo '<!--source: source.txt-->'."<br/>";
  11. die;
  12. }
  13.  
  14. function AttackFilter($StrKey,$StrValue,$ArrReq){
  15. if (is_array($StrValue)){
  16. $StrValue=implode($StrValue);
  17. }
  18. if (preg_match("/".$ArrReq."/is",$StrValue)==1){
  19. print "姘村彲杞借垷锛屼害鍙禌鑹囷紒";
  20. exit();
  21. }
  22. }
  23.  
  24. $filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
  25. foreach($_POST as $key=>$value){
  26. AttackFilter($key,$value,$filter);
  27. }
  28.  
  29. $con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");
  30. if (!$con){
  31. die('Could not connect: ' . mysql_error());
  32. }
  33. $db="XXXXXX";
  34. mysql_select_db($db, $con);
  35. $sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
  36. $query = mysql_query($sql);
  37. if (mysql_num_rows($query) == 1) {
  38. $key = mysql_fetch_array($query);
  39. if($key['pwd'] == $_POST['pwd']) {
  40. print "CTF{XXXXXX}";
  41. }else{
  42. print "浜﹀彲璧涜墖锛�";
  43. }
  44. }else{
  45. print "涓€棰楄禌鑹囷紒";
  46. }
  47. mysql_close($con);
  48. ?>
  49.  
  50. 在提示中也很清楚的提示了解题思路:
    主要涉及源码审计,MySQL相关的知识。
    在这代码中有意思的地方是:
  1. $filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
  2. foreach($_POST as $key=>$value){
  3. AttackFilter($key,$value,$filter);
  4. }
    他将这些sql注入的语句禁止了
  5.  
  1. $sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
  2. $query = mysql_query($sql);
  3. if (mysql_num_rows($query) == 1) {
  4. $key = mysql_fetch_array($query);
  5. if($key['pwd'] == $_POST['pwd']) {
  6. print "CTF{XXXXXX}";
  7. }else{
  8. print "浜﹀彲璧涜墖锛�";
  9. }
  10. }else{
  11. print "涓€棰楄禌鑹囷紒";
    这一部分的语句是说将输入进来的用户名与库里的进行对比,如果正确就输出flag,否则就会报错
  12.  
  13. 那么接下来我们应该怎么做呢?
    我们进行SQL注入:
    ' or 1=1 group by pwd with rollup limit 1 offset 2 #
    在这句语句中
  1. ' or 1=1 我们都知道这是注入的一个常用语句,异或为真,恒成立
  1. group by pwd with rollup 这句是sql里的添加一行,使得密码为空
    limit 1 是查询的意思,查询第一行
    offset 2 是从第二条数据开始查询
    将这条语句输入到第一个框内,提交查询就可以的出flag,如果输入其他就会报错

  1.  

  1.  

实验吧—Web——WP之 因缺思汀的绕过的更多相关文章

  1. 实验吧CTF练习题---WEB---因缺思汀的绕过解析

    实验吧web之因缺思汀的绕过 地址:http://www.shiyanbar.com/ctf/1940 flag值:   解题步骤: 1.点开题目,观察题意 2.通过观察题目要求,判断此道题还有代码审 ...

  2. CTF---Web入门第六题 因缺思汀的绕过

    因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:6479人 Get Flag:2002人 答题人数:2197人 解题通过率:91% 访问解题链接去访问题目,可以进行答题.根据web题一 ...

  3. 【实验吧】CTF_Web_因缺思汀的绕过

    打开页面,查看源代码,发现存在source.txt(http://ctf5.shiyanbar.com/web/pcat/source.txt),如下: <?php error_reportin ...

  4. 【实验吧】因缺思汀的绕过&&拐弯抹角&&Forms&&天网管理系统

    <?php error_reporting(); if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '<form a ...

  5. 实验吧之【因缺思汀的绕过】(group by with rollup的注入利用)

    打开页面,查看源代码,发现存在source.txt(http://ctf5.shiyanbar.com/web/pcat/source.txt),如下: <?php error_reportin ...

  6. 实验吧——因缺思汀的绕过(sql with rollup)

    题目地址:http://ctf5.shiyanbar.com/web/pcat/index.php 通读源码,得知出flag的条件 1.需要post提交uname以及pwd,否则直接die了 if ( ...

  7. [实验吧](web)因缺思厅的绕过 源码审计绕过

    0x00 直接看源码吧 早上写了个注入fuzz的脚本,无聊回到实验吧的题目进行测试,发现了这道题 地址:http://ctf5.shiyanbar.com/web/pcat/index.php 分析如 ...

  8. 实验吧—Web——WP之 Forms

    我们先打开解题链接: 做Web题的第一步就是查看网页源代码,当然,有些网页他不会让你点击右键,那么可以在地址栏里的地址前面加上:view-source: 当然也可以打开控制台F12 我们可以看到代码里 ...

  9. 实验吧—Web——WP之 FALSE

    打开链接,点击源码按钮,我们开始分析源码: 在这源码中我们能看出 如果名字等于密码就输出:你的名字不能等于密码 如果名字的哈希值等于密码的哈希值,那么就会输出flag 这就意味着我们要上传两个值,值不 ...

随机推荐

  1. 用highchaarts做股票分时图

    1.首先向社区致敬给予灵感参考: https://bbs.hcharts.cn/thread-1985-1-1.html(给予参考的的例子js配置代码未进行压缩,可以清楚看到配置信息)   2.公司是 ...

  2. 【转】Mac OS X Terminal 101:终端使用初级教程

    最近学习苹果认证的<Mac OS X Support Essentials>教程,看到 Command Line 一节有很多实用的知识,下面选取一部分翻译 + 笔记,整理成此文. 你可以整 ...

  3. Java:程序开机自启动

    一.加到开机自动启动程序的注册表: package com.zit; import java.io.IOException; public class Start { public static vo ...

  4. Suffix树,后缀树

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  5. vue-router-9-HTML5 History 模式

    vue-router 默认 hash 模式,页面不会重新加载 用路由的 history 模式,利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. const r ...

  6. UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

    很久没有写视图布局,最近发现写布局很不顺手,总结一下在处理UIScrollview的时候种种注意事项: 1. self.automaticallyAdjustsScrollViewInsets = N ...

  7. Redis部署与基本操作

    1.安装 1)不指定安装位置,则会把redis的可执行文件安装到  redis-2.8.6/src/目录下 [root@CentOS6 ~]# ls anaconda-ks.cfg  httpd-2. ...

  8. mysql 数据库关于增加用户权限的问题

    一新建用户 ----------- 二首先修改权限必须在电脑cmd 中运行 开设的权限  主要就是 1 所有库的  *.*      2  所有的表   db.*      3所有的字段db.t1   ...

  9. vuejs 在移动端调起键盘并触发‘前往’按钮

    <template> <div class="display"> <form @submit.prevent> <input @keyup ...

  10. 2.11 alert\confirm\prompt

    2.11 alert\confirm\prompt 前言   不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用 ...