я весна CTF web1

Я белый, поэтому я начать с весной и осенью легчайшей темы делать, где делать ежедневные заметки! !

Взрывные 1

Blow 2

Blow 3

 

Взрывные 1

Во-первых, вы можете увидеть кусочек кода,

1, $ _ REQUEST суперглобальный принадлежат PHP, PHP $ _REQUEST используется для сбора представления данных HTML формы,

Смысл здесь, чтобы принять привет получить или по почте представления и присваивается переменной,

2, если условия в соответствии со значением переменной / ^ \ W * $ / матчи регулярных персонажей, а именно ^ матчи начинаются с начала строки, $ конец, \ ш матч любое слово символ, включая подчеркивание,

* Является ли ранее выражала любое количество раз

3, если матч встретить выходы $$ переменных $ а = привет, $$ а = $ привета

4, извлеченные Суперглобальные $GLOBALS, используемые для обозначения всех переменных , доступных в глобальной роли домена. Это напечатает все переменные , определенные в настоящее время, но и включает в себя переменные в файле,

флаг также существует в этих переменных.

5, а затем передать параметры Здравствуйте, так что привет =GLOBALS,payload为:?hello=GLOBALS

 

 Blow 2

Во-первых, вы можете увидеть некоторые исходный код

 

Предложил флаг не является переменным, это, вероятно, в комментариях или Echo

Функция var_dump затем объединяется с переменной производительностью типа содержимого переменной, Eval функции в качестве внешнего слоя, содержание переменной описывается, если это команда, которая может быть выполнена,

Конструкция полезной нагрузки :? вводное = file_get_contents ( 'flag.php')

 

Мы также можем передать слово, а затем использовать меню, чтобы найти флаг соединения,

Blow 3

 

 Первый кусок кода

Здесь требуется и включают в себя в основном то же самом, чтобы вызвать функцию других файлов PHP Заходите, потребуется фатальная ошибка, а затем завершить сценарий

1, сначала создать содержимое сессии, переменный $ _ Sesion используются для хранения информации о сеансе пользователя (сеанс), начальное значение НУМС 0,

время для текущего времени, Whoami Ео. И сессия заканчивается через 120 секунд.

2, или полученные после запроса, чтобы получить значение параметра, а затем сращены в двухбуквенном случайно сгенерированных строки

3, если значение переменной Whoami значение параметра передается первые два, а длина пятого стартового md5 для значения является строкой из 4 == 0,

这时num++,这时whoami的值是随机的那两个字母组成的字符串

4、循环十次然后输出flag

构造payload:

在这里因为md5不能处理数组,md5()这个函数参数如果为数组就会返回false,也就是满足 == 0,

可以利用数组来绕过md5值等于0的条件:?value[0]=e&value[1]=a

然后就是第一个条件,我们可以手动打,在120秒内来十次也就出来啦,也可以写脚本跑

1 import requests
2 url="http://53d7f749ec88496ba93f03712603cc854df8304118f64172.changame.ichunqiu.com/"
3 s = requests.Session()
4 h = s.get(url + '?value[]=ea').text
5 for i in range(10):
6     h=s.get(url + '?value[]=' + h[0:2]).text
7     if 'flag{.*}' in h:
8         break
9 print(h)

 

рекомендация

отwww.cnblogs.com/qie-date/p/12274938.html