后台登录

1、看源码
有这样一段php代码
<!-- $password=$_POST['password'];
 $sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
 $result=mysqli_query($link,$sql);
  if(mysqli_num_rows($result)>0){
   echo 'flag is :'.$flag;
  }
  else{
   echo '密码错误!';
  } -->

其中关键是
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";

考察md5的这个函数

md5(string, raw)
raw 可选,默认为false
true:返回16字符2进制格式
false:返回32字符16进制格式
简单来说就是 true将16进制的md5转化为字符了,
那么如果某一字符串的md5恰好能够产生如’or ’之类的注入语句,就可以进行注入了.

难点就在如何寻找这样的字符串,我上网查函数的时候碰巧找到的
字符串:ffifdyop
md5后,276f722736c95d99e921722cf9ed621c
再转成字符串: 'or'6<trash>
就可以了

FALSE

函数isset(): 检测变量是否设置
只能用于变量,传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数
 格式:  isset ( mixed var [, mixed var [, ...]] )
    若变量不存在或存在但其值为NULL则返回 FALSE
    若变量存在且值不为NULL,则返回 TURE

    同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE

== :  比较运算符号  忽略类型,只要值相同就可以,类型不同时也可以
===:  恒等计算符 , 同时检查表达式的值与类型。

die()函数  :  停止程序运行,输出内容
sha1()函数: 计算字符串的 SHA-1 散列。默认的传入参数类型是字符串型
语法:sha1(string,raw)
string  必需。规定要计算的字符串。
raw  可选。规定十六进制或二进制输出格式:

TRUE - 原始 20 字符二进制格式
        FALSE - 默认。40 字符十六进制数

阅读代码可知
登录成功条件: (1)传入name,password的值(2)name和password的值不能相等(3)  name和password的sha1加密散列值相等

然后不会了。。搜的
?name[]=a&password[]=b

Form

PIN码(PIN1),全称Personal Identification Number.就是SIM卡的个人识别密码。
不知道这句话在这里什么意思

查看源码,发现有一行type 是hidden 就很有意思,name="showsource" value="0"
尝试把0改成1,就出现了php
这个比较好理解

Once More

题目提示很有用
hint:ereg()函数有漏洞哩;从小老师就说要用科学的方法来算数。
提示我们要用erge()函数的漏洞,并留意科学计数法
看源码

ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE

语法

int ereg(string pattern, string originalstring, [array regs]);

定义和用途

ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字母的字符是大小写敏感的。

可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。
Return Value

如果匹配成功返回true,否则,则返回false

这里表示输入的password必须是大小写字母和数字

strpos ($_GET['password'], '*-*') !== FALSE

定义和用法

strpos() 函数查找字符串在另一字符串中第一次出现的位置。

注释:strpos() 函数对大小写敏感。

注释:该函数是二进制安全的。
相关函数:

stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
    strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
    strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

ereg函数漏洞
ereg()函数存在NULL截断漏洞,导致正则过滤被绕过,所以可以用%00来截断正则匹配

用科学记数法构造:1e8%00*-*
注意URL编码问题

PHP大法

语法
    int eregi(string pattern, string string, [array regs]);
定义和用法
eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。Eregi()可以特别有用的检查有效性字符串,如密码。 
可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。
返回值
如果匹配成功返回true,否则,则返回false

注意输入url后会自动进行一次编码

实验吧writeup的更多相关文章

  1. ichunqiu在线挑战--网站综合渗透实验 writeup

    挑战链接:http://www.ichunqiu.com/tiaozhan/111 知识点:后台弱口令,md5破解,SQL Injection,写一句话木马,敏感信息泄露, 提权,登陆密码破解 这个挑 ...

  2. 实验吧web题(26/26)全writeup!超详细:)

    #简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...

  3. 实验吧Crypto题目Writeup

    这大概是一篇不怎么更新的没什么用的网上已经有了很多差不多的东西的博客. 变异凯撒 忘记了2333 传统知识+古典密码 先查百度百科,把年份变成数字,然后猜测+甲子的意思,一开始以为是加1,后来意识到是 ...

  4. 实验吧 Web的WriteUp

    每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup. 0x01 天下武功唯快不破 题目提示 : 看看 ...

  5. 实验吧逆向catalyst-system Writeup

    下载之后查看知道为ELF文件,linux中执行之后发现很慢: 拖入ida中查看发现有循环调用 sleep 函数: 这是已经改过了,edit -> patch program -> chan ...

  6. 实验吧 web题writeup

    1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...

  7. CTF实验吧让我进去writeup

    初探题目 两个表单,我们用burp抓包试试 这时候我们发现Cookie值里有个很奇怪的值是source,这个单词有起源的意思,我们就可以猜测这个是判断权限的依据,让我们来修改其值为1,发送得到如下显示 ...

  8. 实验吧--隐写术--九连环--WriteUp

    题目: http://ctf5.shiyanbar.com/stega/huan/123456cry.jpg 是一张图: 放到binwalk查看一下 发现存在压缩文件. 使用-e参数将文件分离 打开文 ...

  9. 【实验吧】该题不简单——writeup

    题目地址:http://ctf5.shiyanbar.com/crack/3/ 一定要注意读题: 要求找出用户名为hello的注册码,这八成就是 要写注册机啊! ——————————————————— ...

随机推荐

  1. ZOJ 3213

    /* ZOJ 3213 好吧,看过那种括号表示法后,就崩溃了,实在受不了.情况复杂,写了两天,人也有点傻X了,只能放弃,转而用最小表示法. 最小表示法不难写: 1)首先,要承认路径上有格子不选的情况, ...

  2. jvm的运行模式 client和 server两种

    jvm的运行模式 client和 server两种 学习了:https://www.cnblogs.com/fsjohnhuang/p/4270505.html 在jdk 9的情况下,好像没有clie ...

  3. linux面试之--堆、栈、自由存储区、全局/静态存储区和常量存储区

    栈,就是那些由编译器在须要的时候分配,在不须要的时候自己主动清除的变量的存储区.里面的变量一般是局部变量.函数參数等.在一个进程中.位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用.和堆 ...

  4. LinkedHashMap源代码阅读

    LinkedHashMap LinkedHashMap内部採用了散列表和链表实现Map接口,并能够保证迭代的顺序,和HashMap不同,其内部维护一个指向全部元素的双向链表,其决定了遍历的顺序,一般是 ...

  5. 使用memcachedclientXmemcached与Spring整合

    1 简单介绍 Xmemcached是一个高性能的基于java nio的memcachedclient.在经过三个RC版本号后.正式公布1.10-final版本号. xmemcached特性一览: 1. ...

  6. 【BZOJ 2288】 生日礼物

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2288 [算法] 先将这个序列的正负数合并起来,变成一个正负交替的序列 如果新序列的正 ...

  7. B1041 [HAOI2008]圆上的整点 数学

    这个题一开始看着没什么思路,但是一看题解就明白了不少,主要是数学证明,代码很好写. 贴个网址: hzwer 题干: 题目描述 求一个给定的圆(x^+y^=r^),在圆周上有多少个点的坐标是整数. 输入 ...

  8. JS判断浏览器类型和详细区分IE各版本浏览器

    今天用到JS判断浏览器类型,于是就系统整理了一下,便于后期使用. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  9. .Net Core中使用Quartz.Net Vue开即用的UI管理

    Quartz.NET Quartz.Net 定制UI维护了常用作业添加.删除.修改.停止.启动功能,直接使用cron表达式设置作业执行间隔,有完整的日志记录. Quartz.NET是一个功能齐全的开源 ...

  10. 修改CAS源码是的基于DB的认证方式配置更灵活

    最近在做CAS配置的时候,遇到了数据源不提供密码等数据的情况下,怎样实现密码输入认证呢? 第一步:新建Java项目,根据假面算法生成CAS加密工具 出于保密需要不提供自定义的加密工具,在您的实际项目中 ...